From 5f0afdd23c6c3b618e74cca04c0b1e3114631524 Mon Sep 17 00:00:00 2001 From: syneff Date: Fri, 20 Jun 2025 17:09:35 +0900 Subject: [PATCH] typeorm cli --- nest-user-api/data-source.ts | 14 ++++++++++++++ nest-user-api/package.json | 7 ++++++- nest-user-api/src/app.module.ts | 4 ++-- .../migrations/1750406542391-Migration.ts | 11 +++++++++++ .../migrations/1750406588424-Migration.ts | 15 +++++++++++++++ .../migrations/1750406841786-Migration.ts | 14 ++++++++++++++ nest-user-api/src/users/user.entity.ts | 3 +++ 7 files changed, 65 insertions(+), 3 deletions(-) create mode 100755 nest-user-api/data-source.ts create mode 100755 nest-user-api/src/database/migrations/1750406542391-Migration.ts create mode 100755 nest-user-api/src/database/migrations/1750406588424-Migration.ts create mode 100755 nest-user-api/src/database/migrations/1750406841786-Migration.ts diff --git a/nest-user-api/data-source.ts b/nest-user-api/data-source.ts new file mode 100755 index 0000000..60ceefc --- /dev/null +++ b/nest-user-api/data-source.ts @@ -0,0 +1,14 @@ +import { DataSource } from "typeorm"; + +export default new DataSource({ + type: 'mysql', + host: 'localhost', + port: 3306, + username: 'root', + password: 'init00!!', + database: 'test_db', + entities: ['src/**/*.entity.ts'], + migrations: ['src/database/migrations/*.ts'], + migrationsTableName: 'migrations', + synchronize: false +}); \ No newline at end of file diff --git a/nest-user-api/package.json b/nest-user-api/package.json index d1fe94a..a4ef7aa 100755 --- a/nest-user-api/package.json +++ b/nest-user-api/package.json @@ -17,7 +17,12 @@ "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" + "test:e2e": "jest --config ./test/jest-e2e.json", + "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js --dataSource ./data-source.ts", + "migration:create": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js migration:create ./src/database/migrations/Migration", + "migration:generate": "npm run typeorm migration:generate ./src/database/migrations/Migration", + "migration:run": "npm run typeorm migration:run", + "migration:revert": "npm run typeorm migration:revert" }, "dependencies": { "@nestjs/common": "^11.0.1", diff --git a/nest-user-api/src/app.module.ts b/nest-user-api/src/app.module.ts index fa234ba..bf5fbc4 100644 --- a/nest-user-api/src/app.module.ts +++ b/nest-user-api/src/app.module.ts @@ -14,8 +14,8 @@ import { User } from './users/user.entity'; username: 'root', password: 'init00!!', database: 'test_db', - entities: [User], - synchronize: true //개발용 + entities: ['src/**/*.entity.ts'], + // synchronize: true //개발용 }), UsersModule], controllers: [AppController], diff --git a/nest-user-api/src/database/migrations/1750406542391-Migration.ts b/nest-user-api/src/database/migrations/1750406542391-Migration.ts new file mode 100755 index 0000000..75dd586 --- /dev/null +++ b/nest-user-api/src/database/migrations/1750406542391-Migration.ts @@ -0,0 +1,11 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class Migration1750406542391 implements MigrationInterface { + + public async up(queryRunner: QueryRunner): Promise { + } + + public async down(queryRunner: QueryRunner): Promise { + } + +} diff --git a/nest-user-api/src/database/migrations/1750406588424-Migration.ts b/nest-user-api/src/database/migrations/1750406588424-Migration.ts new file mode 100755 index 0000000..e5d445b --- /dev/null +++ b/nest-user-api/src/database/migrations/1750406588424-Migration.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class Migration1750406588424 implements MigrationInterface { + name = 'Migration1750406588424' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TABLE \`user\` (\`id\` int NOT NULL AUTO_INCREMENT, \`name\` varchar(255) NOT NULL, \`email\` varchar(255) NOT NULL, UNIQUE INDEX \`IDX_e12875dfb3b1d92d7d7c5377e2\` (\`email\`), PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX \`IDX_e12875dfb3b1d92d7d7c5377e2\` ON \`user\``); + await queryRunner.query(`DROP TABLE \`user\``); + } + +} diff --git a/nest-user-api/src/database/migrations/1750406841786-Migration.ts b/nest-user-api/src/database/migrations/1750406841786-Migration.ts new file mode 100755 index 0000000..009bf5f --- /dev/null +++ b/nest-user-api/src/database/migrations/1750406841786-Migration.ts @@ -0,0 +1,14 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class Migration1750406841786 implements MigrationInterface { + name = 'Migration1750406841786' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`user\` ADD \`password\` varchar(255) NOT NULL`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`user\` DROP COLUMN \`password\``); + } + +} diff --git a/nest-user-api/src/users/user.entity.ts b/nest-user-api/src/users/user.entity.ts index 51cc769..f31b208 100755 --- a/nest-user-api/src/users/user.entity.ts +++ b/nest-user-api/src/users/user.entity.ts @@ -8,6 +8,9 @@ export class User { @Column() name: string; + @Column() + password: string; + @Column({ unique: true }) email: string; } \ No newline at end of file