Skip to content

Commit 087f176

Browse files
committed
typeorm db
1 parent d348697 commit 087f176

File tree

9 files changed

+86
-13
lines changed

9 files changed

+86
-13
lines changed

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
"test:cov": "jest --coverage",
2121
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
2222
"test:e2e": "jest --config ./test/jest-e2e.json",
23-
"typeorm": "typeorm-ts-node-commonjs -d ./src/setup/db/data-source.ts",
24-
"migration:generate": "npm run typeorm migration:generate"
23+
"typeorm": "typeorm-ts-node-commonjs",
24+
"typeorm:source": "typeorm-ts-node-commonjs -d ./src/setup/db/data-source.ts",
25+
"migration:generate": "yarn typeorm:source migration:generate",
26+
"migration:run": "yarn typeorm:source migration:run"
2527
},
2628
"dependencies": {
2729
"@nestjs/common": "^9.0.0",

src/core/app.module.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import EmailScheduleService from '@kitApp/schedule/email.schedule.service';
77
import databaseConfig from '@kitConfig/database.config';
88
import { database } from '@kitSetup/index';
99
import { DataSource } from 'typeorm';
10-
import { TypeOrmModule } from '@nestjs/typeorm';
1110
import { AppController } from './app.controller';
1211
import { AppService } from './app.service';
1312

src/db/migrations/.gitkeeep

Whitespace-only changes.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { MigrationInterface, QueryRunner, Table } from 'typeorm';
2+
3+
export class createUsersTable1673884759250 implements MigrationInterface {
4+
public async up(queryRunner: QueryRunner): Promise<void> {
5+
await queryRunner.createTable(
6+
new Table({
7+
name: 'users',
8+
columns: [
9+
{
10+
name: 'id',
11+
type: 'int',
12+
isPrimary: true,
13+
isGenerated: true,
14+
},
15+
{
16+
name: 'firstName',
17+
type: 'varchar',
18+
},
19+
{
20+
name: 'lastName',
21+
type: 'varchar',
22+
},
23+
],
24+
}),
25+
);
26+
}
27+
28+
public async down(queryRunner: QueryRunner): Promise<void> {
29+
}
30+
}

src/db/migrations/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# command
2+
3+
```
4+
yarn typeorm migration:create ./src/db/migrations/create_xyz_table
5+
```

src/modules/user/user.entity.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import {
2+
Entity, Column, PrimaryGeneratedColumn, PrimaryColumn,
3+
} from 'typeorm';
4+
5+
@Entity({ name: 'users' })
6+
export class User {
7+
@PrimaryColumn()
8+
id: number;
9+
10+
@Column()
11+
firstName: string;
12+
13+
@Column()
14+
lastName: string;
15+
}

src/modules/user/user.module.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import { Module } from '@nestjs/common';
2+
import { TypeOrmModule } from '@nestjs/typeorm';
23
import { UserController } from './user.controller';
34
import { UserService } from './user.service';
5+
import { User } from './user.entity';
46

57
@Module({
6-
imports: [],
8+
imports: [TypeOrmModule.forFeature([User])],
79
controllers: [UserController],
810
providers: [UserService],
11+
exports: [TypeOrmModule],
912
})
1013
export class UserModule {}

src/modules/user/user.service.ts

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,35 @@
1-
import { Injectable, UnprocessableEntityException } from '@nestjs/common';
1+
import { Injectable, NotFoundException, UnprocessableEntityException } from '@nestjs/common';
2+
import { InjectRepository } from '@nestjs/typeorm';
3+
import { randomInt } from 'crypto';
4+
import { Repository } from 'typeorm';
5+
import { User } from './user.entity';
26

37
@Injectable()
48
export class UserService {
5-
getHello(): any {
9+
constructor(
10+
@InjectRepository(User) private usersRepository: Repository<User>,
11+
) { }
12+
13+
async getHello() {
14+
try {
15+
await this.usersRepository
16+
.createQueryBuilder()
17+
.insert()
18+
.into(User)
19+
.values([
20+
{ firstName: 'kamal', lastName: 'mostafa' },
21+
])
22+
.returning('id')
23+
.execute();
24+
} catch (error) {
25+
return error;
26+
}
27+
628
try {
7-
let output: any = {
8-
project: 'nestjs',
9-
};
10-
return output;
29+
let a = await this.usersRepository.find();
30+
return a;
1131
} catch (error) {
12-
let data: any = [{ error: [{ a: 22 }] }];
13-
throw new UnprocessableEntityException(data);
32+
return error;
1433
}
1534
}
1635
}

src/setup/db/data-source.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ declare let process : {
99
dotenv.config();
1010

1111
export const dataSource = new DataSource({
12-
migrationsTableName: 'migrations',
1312
type: process.env.DB_TYPE || '',
1413
host: process.env.DB_HOST || '',
1514
port: process.env.DB_PORT || 5432,
@@ -18,6 +17,7 @@ export const dataSource = new DataSource({
1817
database: process.env.DB_DATABASE || '',
1918
synchronize: false,
2019
logging: false,
20+
migrationsTableName: 'nestjs_kit_migrations',
2121
entities: ['src/**/*.entity.ts'],
2222
migrations: ['src/db/migrations/*.ts'],
2323
});

0 commit comments

Comments
 (0)