nest-user-api

main
syneff 2 weeks ago
parent 964867a3ab
commit ad24c4ac05
  1. 0
      catDataMocking/package.json
  2. 5
      nest-user-api/package.json
  3. 15
      nest-user-api/src/app.module.ts
  4. 1
      nest-user-api/src/main.ts
  5. 13
      nest-user-api/src/users/user.entity.ts
  6. 0
      nest-user-api/src/users/users.controller.spec.ts
  7. 33
      nest-user-api/src/users/users.controller.ts
  8. 3
      nest-user-api/src/users/users.module.ts
  9. 0
      nest-user-api/src/users/users.service.spec.ts
  10. 36
      nest-user-api/src/users/users.service.ts
  11. 0
      package-lock.json
  12. 0
      ts_playground/01-types.ts
  13. 0
      ts_playground/02-functions.ts
  14. 0
      ts_playground/03-interfaces.ts
  15. 0
      ts_playground/04-classes.ts
  16. 0
      ts_playground/05-generics.ts
  17. 0
      ts_playground/06-union-type.ts
  18. 0
      ts_playground/07-utility-types.ts
  19. 0
      ts_playground/08-record.ts
  20. 0
      ts_playground/09-narrowing.ts
  21. 0
      ts_playground/10-keyof-typeof.ts
  22. 0
      ts_playground/11-as-const.ts
  23. 0
      ts_playground/12-unknown-never.ts
  24. 0
      ts_playground/package.json
  25. 0
      ts_playground/tsconfig.json

@ -23,8 +23,11 @@
"@nestjs/common": "^11.0.1", "@nestjs/common": "^11.0.1",
"@nestjs/core": "^11.0.1", "@nestjs/core": "^11.0.1",
"@nestjs/platform-express": "^11.0.1", "@nestjs/platform-express": "^11.0.1",
"@nestjs/typeorm": "^11.0.0",
"mysql2": "^3.14.1",
"reflect-metadata": "^0.2.2", "reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1" "rxjs": "^7.8.1",
"typeorm": "^0.3.25"
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.2.0", "@eslint/eslintrc": "^3.2.0",

@ -2,9 +2,22 @@ import { Module } from '@nestjs/common';
import { AppController } from './app.controller'; import { AppController } from './app.controller';
import { AppService } from './app.service'; import { AppService } from './app.service';
import { UsersModule } from './users/users.module'; import { UsersModule } from './users/users.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './users/user.entity';
@Module({ @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], controllers: [AppController],
providers: [AppService], providers: [AppService],
}) })

@ -3,6 +3,7 @@ import { AppModule } from './app.module';
async function bootstrap() { async function bootstrap() {
const app = await NestFactory.create(AppModule); const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(process.env.PORT ?? 3000); await app.listen(process.env.PORT ?? 3000);
} }
bootstrap(); bootstrap();

@ -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;
}

@ -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') @Controller('users')
export class UsersController {} export class UsersController {
constructor(private userService: UsersService) {}
@Post()
create(@Body() body: Partial<User>) {
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<User>) {
return this.userService.update(Number(id), body);
}
@Delete(":id")
delete(@Param("id") id: string) {
return this.userService.delete(Number(id));
}
}

@ -1,8 +1,11 @@
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { UsersController } from './users.controller'; import { UsersController } from './users.controller';
import { UsersService } from './users.service'; import { UsersService } from './users.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './user.entity';
@Module({ @Module({
imports: [TypeOrmModule.forFeature([User])],
controllers: [UsersController], controllers: [UsersController],
providers: [UsersService] providers: [UsersService]
}) })

@ -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() @Injectable()
export class UsersService {} export class UsersService {
constructor( @InjectRepository(User) private readonly userRepository: Repository<User>) {}
async create(user: Partial<User>): Promise<User> {
const newUser = this.userRepository.create(user);
return this.userRepository.save(newUser);
}
async findAll(): Promise<User[]> {
return this.userRepository.find();
}
async findOne(id: number): Promise<User> {
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<User>): Promise<User> {
const user = await this.findOne(id);
Object.assign(user, update);
return this.userRepository.save(user);
}
async delete(id: number): Promise<void> {
await this.userRepository.delete(id);
}
}

Loading…
Cancel
Save