Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/spinningideas/typeorm-poc
Reference implementation of node api using typescript, TypeORM, and PostgreSQL DB
https://github.com/spinningideas/typeorm-poc
javascript postgres typeorm typescript
Last synced: 1 day ago
JSON representation
Reference implementation of node api using typescript, TypeORM, and PostgreSQL DB
- Host: GitHub
- URL: https://github.com/spinningideas/typeorm-poc
- Owner: spinningideas
- License: mit
- Created: 2019-12-24T21:35:57.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-18T17:58:25.000Z (almost 2 years ago)
- Last Synced: 2023-03-06T15:21:50.341Z (over 1 year ago)
- Topics: javascript, postgres, typeorm, typescript
- Language: TypeScript
- Homepage:
- Size: 13.9 MB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: ReadMe.md
- License: LICENSE.md
Awesome Lists containing this project
README
# TypeORM POC
The code in this repo demonstrates use of [typeorm](https://typeorm.io/) as an ORM using two tables with geography data sets. This example uses typescript and contains use of ts-node to build typescript and run this code in standard ES5 javascript hosted in a traditional node.js express app
This code uses the following libaries:
- [typeorm](https://typeorm.io/)
- [typescript](https://www.typescriptlang.org/)
- [express](https://expressjs.com/)
- [postgresql](https://www.postgresql.org/)This code assumes usage of typeorm and typescript requires postgresql but you could switch database vendors and use MySQL or MS SQL Server or any db supported by typeorm. See https://typeorm.io/data-source-options
This proof of concept uses a repository to get data from database and uses [express](https://expressjs.com/).
See https://typeorm.io/ and notes below for more info
## Get Started
To get started perform the following steps:
### 1) Install PostgreSQL
Go to downloads section and select the latest version (15.x as of 12/2022) for your operating system
https://www.postgresql.org/download/
### 2) Create PostgreSQL database to use in this POC along with user that has permissions to modify and access the database
- After installing locally you should have database server and the code connects to db using information in ormconfig.ts file so you need to ensure this db and user exists before running the code
- Create an empty database named "typeorm_poc_db"
- Create a create an account named "typeorm_poc_user" in your postgres database server with full permissions to the database named "typeorm_poc_db" using the password in Database.ts (after changing the value SET_YOUR_PASSWORD to be your desired password)Here are sql scripts to run:
NOTE: run one at a time in order, first create the db then select the db and run these queries IN the new database so that the user has proper permissions to create tables and insert data.
```
CREATE DATABASE typeorm_poc_db;CREATE ROLE typeorm_poc_user LOGIN PASSWORD 'SET_YOUR_PASSWORD - the_secure_password_from_config_in_ormconfig.ts';
GRANT CONNECT ON DATABASE typeorm_poc_db TO typeorm_poc_user;
GRANT ALL PRIVILEGES ON DATABASE typeorm_poc_db TO typeorm_poc_user;GRANT ALL ON SCHEMA public TO typeorm_poc_user;
```
### 3) Run npm install
Run command to install the npm packages
```npm install```
### 4) Create database schema
Run npm script "dev" which will do this via logic in app.ts or you can run migrations manually
```npm run dev```
OR
```ts-node ./node_modules/typeorm/cli "migration:run" "-f" "./ormconfig.ts"```
### 5) Populate database with data
There is logic in the app.ts file that will seed the two tables with data if the data is not already there.
Data will be populated if it does not exist via:
```npm run dev```
### 6) Run the application in development mode
The application is written in typescript and relies on tables and data that is created during app startup and running the npm command:
```npm run dev```
When you run this command the express node server will start and listen on port 6001
### 6) Build the application for deployment
The application is written in typescript and compiled into javascript in a "dist" folder - the command below will compile the app and run it.
```npm run build```
### 7) exercise the application via postman OR thunder client
#### 7.1 - Get a client
1) https://www.thunderclient.com/
2) https://www.getpostman.com - Download and install https://www.getpostman.com
#### 7.2 - Import "postman" collection and run requests
Use the client of your choice to run the requests to see api data and responses after importing the collection in the "postman" folder
The requests are pointed to http://localhost:6001 as a base url.
## Examples Referenced
### Step By Step Example
- https://codeburst.io/typeorm-by-example-part-2-46946bf08233
### Repositories using TypeORM
- https://stackoverflow.com/questions/40820195/
creating-generic-repository-using-typeorm- https://octolinker-demo.now.sh/typeorm/typeorm/issues/4959
### TypeORM Migrations
- https://github.com/typeorm/typeorm/blob/master/docs/migrations.md
- https://typeorm.io/#/migrations
- https://wanago.io/2019/01/28/typeorm-migrations-postgres/
### TypeORM Data Seeding
- https://github.com/w3tecch/typeorm-seeding
- https://stackoverflow.com/questions/51198817/typeorm-how-to-seed-database