diff --git a/catDataMocking/package.json b/catDataMocking/package.json old mode 100644 new mode 100755 diff --git a/nest-user-api/package.json b/nest-user-api/package.json old mode 100644 new mode 100755 index 6316bb4..d1fe94a --- a/nest-user-api/package.json +++ b/nest-user-api/package.json @@ -23,8 +23,11 @@ "@nestjs/common": "^11.0.1", "@nestjs/core": "^11.0.1", "@nestjs/platform-express": "^11.0.1", + "@nestjs/typeorm": "^11.0.0", + "mysql2": "^3.14.1", "reflect-metadata": "^0.2.2", - "rxjs": "^7.8.1" + "rxjs": "^7.8.1", + "typeorm": "^0.3.25" }, "devDependencies": { "@eslint/eslintrc": "^3.2.0", diff --git a/nest-user-api/src/app.module.ts b/nest-user-api/src/app.module.ts index 73e916a..fa234ba 100644 --- a/nest-user-api/src/app.module.ts +++ b/nest-user-api/src/app.module.ts @@ -2,9 +2,22 @@ import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { UsersModule } from './users/users.module'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { User } from './users/user.entity'; @Module({ - imports: [UsersModule], + imports: [ + TypeOrmModule.forRoot({ + type: 'mysql', + host: 'localhost', + port: 3306, + username: 'root', + password: 'init00!!', + database: 'test_db', + entities: [User], + synchronize: true //개발용 + }), + UsersModule], controllers: [AppController], providers: [AppService], }) diff --git a/nest-user-api/src/main.ts b/nest-user-api/src/main.ts index f76bc8d..4d34b3b 100644 --- a/nest-user-api/src/main.ts +++ b/nest-user-api/src/main.ts @@ -3,6 +3,7 @@ import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); + app.enableCors(); await app.listen(process.env.PORT ?? 3000); } bootstrap(); diff --git a/nest-user-api/src/users/user.entity.ts b/nest-user-api/src/users/user.entity.ts new file mode 100755 index 0000000..51cc769 --- /dev/null +++ b/nest-user-api/src/users/user.entity.ts @@ -0,0 +1,13 @@ +import { Column, Entity, PrimaryGeneratedColumn } from "typeorm"; + +@Entity() +export class User { + @PrimaryGeneratedColumn() + id: number; + + @Column() + name: string; + + @Column({ unique: true }) + email: string; +} \ No newline at end of file diff --git a/nest-user-api/src/users/users.controller.spec.ts b/nest-user-api/src/users/users.controller.spec.ts old mode 100644 new mode 100755 diff --git a/nest-user-api/src/users/users.controller.ts b/nest-user-api/src/users/users.controller.ts old mode 100644 new mode 100755 index ca52703..8cb8c4b --- a/nest-user-api/src/users/users.controller.ts +++ b/nest-user-api/src/users/users.controller.ts @@ -1,4 +1,33 @@ -import { Controller } from '@nestjs/common'; +import { Body, Controller, Delete, Get, Param, Post, Put } from '@nestjs/common'; +import { UsersService } from './users.service'; +import { User } from './user.entity'; @Controller('users') -export class UsersController {} +export class UsersController { + constructor(private userService: UsersService) {} + + @Post() + create(@Body() body: Partial) { + return this.userService.create(body); + } + + @Get() + findAll() { + return this.userService.findAll(); + } + + @Get(":id") + findOne(@Param("id") id: string) { + return this.userService.findOne(Number(id)); + } + + @Put(":id") + update(@Param("id") id: string, @Body() body: Partial) { + return this.userService.update(Number(id), body); + } + + @Delete(":id") + delete(@Param("id") id: string) { + return this.userService.delete(Number(id)); + } +} diff --git a/nest-user-api/src/users/users.module.ts b/nest-user-api/src/users/users.module.ts old mode 100644 new mode 100755 index 8d4de4b..1a71c3a --- a/nest-user-api/src/users/users.module.ts +++ b/nest-user-api/src/users/users.module.ts @@ -1,8 +1,11 @@ import { Module } from '@nestjs/common'; import { UsersController } from './users.controller'; import { UsersService } from './users.service'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { User } from './user.entity'; @Module({ + imports: [TypeOrmModule.forFeature([User])], controllers: [UsersController], providers: [UsersService] }) diff --git a/nest-user-api/src/users/users.service.spec.ts b/nest-user-api/src/users/users.service.spec.ts old mode 100644 new mode 100755 diff --git a/nest-user-api/src/users/users.service.ts b/nest-user-api/src/users/users.service.ts old mode 100644 new mode 100755 index 1120356..6155629 --- a/nest-user-api/src/users/users.service.ts +++ b/nest-user-api/src/users/users.service.ts @@ -1,4 +1,36 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable, NotFoundException } from '@nestjs/common'; +import { User } from './user.entity'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; @Injectable() -export class UsersService {} +export class UsersService { + constructor( @InjectRepository(User) private readonly userRepository: Repository) {} + + async create(user: Partial): Promise { + const newUser = this.userRepository.create(user); + return this.userRepository.save(newUser); + } + + async findAll(): Promise { + return this.userRepository.find(); + } + + async findOne(id: number): Promise { + const user = await this.userRepository.findOneBy({ id }); + if (!user) + throw new NotFoundException(`User with id ${id} not found`); + + return user; + } + + async update(id: number, update: Partial): Promise { + const user = await this.findOne(id); + Object.assign(user, update); + return this.userRepository.save(user); + } + + async delete(id: number): Promise { + await this.userRepository.delete(id); + } +} diff --git a/package-lock.json b/package-lock.json old mode 100644 new mode 100755 diff --git a/ts_playground/01-types.ts b/ts_playground/01-types.ts old mode 100644 new mode 100755 diff --git a/ts_playground/02-functions.ts b/ts_playground/02-functions.ts old mode 100644 new mode 100755 diff --git a/ts_playground/03-interfaces.ts b/ts_playground/03-interfaces.ts old mode 100644 new mode 100755 diff --git a/ts_playground/04-classes.ts b/ts_playground/04-classes.ts old mode 100644 new mode 100755 diff --git a/ts_playground/05-generics.ts b/ts_playground/05-generics.ts old mode 100644 new mode 100755 diff --git a/ts_playground/06-union-type.ts b/ts_playground/06-union-type.ts old mode 100644 new mode 100755 diff --git a/ts_playground/07-utility-types.ts b/ts_playground/07-utility-types.ts old mode 100644 new mode 100755 diff --git a/ts_playground/08-record.ts b/ts_playground/08-record.ts old mode 100644 new mode 100755 diff --git a/ts_playground/09-narrowing.ts b/ts_playground/09-narrowing.ts old mode 100644 new mode 100755 diff --git a/ts_playground/10-keyof-typeof.ts b/ts_playground/10-keyof-typeof.ts old mode 100644 new mode 100755 diff --git a/ts_playground/11-as-const.ts b/ts_playground/11-as-const.ts old mode 100644 new mode 100755 diff --git a/ts_playground/12-unknown-never.ts b/ts_playground/12-unknown-never.ts old mode 100644 new mode 100755 diff --git a/ts_playground/package.json b/ts_playground/package.json old mode 100644 new mode 100755 diff --git a/ts_playground/tsconfig.json b/ts_playground/tsconfig.json old mode 100644 new mode 100755