diff --git a/src/app.controller.spec.ts b/src/app.controller.spec.ts index d22f389..601b8d7 100644 --- a/src/app.controller.spec.ts +++ b/src/app.controller.spec.ts @@ -1,22 +1,22 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { AppController } from './app.controller'; -import { AppService } from './app.service'; +import { Test, TestingModule } from '@nestjs/testing' +import { AppController } from './app.controller' +import { AppService } from './app.service' describe('AppController', () => { - let appController: AppController; + let appController: AppController beforeEach(async () => { const app: TestingModule = await Test.createTestingModule({ controllers: [AppController], - providers: [AppService], - }).compile(); + providers: [AppService] + }).compile() - appController = app.get(AppController); - }); + appController = app.get(AppController) + }) describe('root', () => { it('should return "Hello World!"', () => { - expect(appController.getHello()).toBe('Hello World!'); - }); - }); -}); + expect(appController.getHello()).toBe('Hello World!') + }) + }) +}) diff --git a/src/app.controller.ts b/src/app.controller.ts index cce879e..4e88eca 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -1,5 +1,5 @@ -import { Controller, Get } from '@nestjs/common'; -import { AppService } from './app.service'; +import { Controller, Get } from '@nestjs/common' +import { AppService } from './app.service' @Controller() export class AppController { @@ -7,6 +7,6 @@ export class AppController { @Get() getHello(): string { - return this.appService.getHello(); + return this.appService.getHello() } } diff --git a/src/app.service.ts b/src/app.service.ts index 927d7cc..bc13055 100644 --- a/src/app.service.ts +++ b/src/app.service.ts @@ -1,8 +1,8 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable } from '@nestjs/common' @Injectable() export class AppService { getHello(): string { - return 'Hello World!'; + return 'Hello World!' } } diff --git a/src/auth/auth.controller.spec.ts b/src/auth/auth.controller.spec.ts index 27a31e6..15fa97e 100644 --- a/src/auth/auth.controller.spec.ts +++ b/src/auth/auth.controller.spec.ts @@ -1,18 +1,18 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { AuthController } from './auth.controller'; +import { Test, TestingModule } from '@nestjs/testing' +import { AuthController } from './auth.controller' describe('AuthController', () => { - let controller: AuthController; + let controller: AuthController beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - controllers: [AuthController], - }).compile(); + controllers: [AuthController] + }).compile() - controller = module.get(AuthController); - }); + controller = module.get(AuthController) + }) it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); + expect(controller).toBeDefined() + }) +}) diff --git a/src/auth/auth.service.spec.ts b/src/auth/auth.service.spec.ts index 800ab66..182a4a4 100644 --- a/src/auth/auth.service.spec.ts +++ b/src/auth/auth.service.spec.ts @@ -1,18 +1,18 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { AuthService } from './auth.service'; +import { Test, TestingModule } from '@nestjs/testing' +import { AuthService } from './auth.service' describe('AuthService', () => { - let service: AuthService; + let service: AuthService beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - providers: [AuthService], - }).compile(); + providers: [AuthService] + }).compile() - service = module.get(AuthService); - }); + service = module.get(AuthService) + }) it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); + expect(service).toBeDefined() + }) +}) diff --git a/src/auth/guards/jwt.authguard.ts b/src/auth/guards/jwt.authguard.ts index 33f5522..f407cd5 100644 --- a/src/auth/guards/jwt.authguard.ts +++ b/src/auth/guards/jwt.authguard.ts @@ -1,23 +1,23 @@ import { ExecutionContext, Injectable, - UnauthorizedException, -} from '@nestjs/common'; -import { AuthGuard } from '@nestjs/passport'; + UnauthorizedException +} from '@nestjs/common' +import { AuthGuard } from '@nestjs/passport' @Injectable() export class JwtAuthGuard extends AuthGuard('jwt') { canActivate(context: ExecutionContext) { // Add your custom authentication logic here // for example, call super.logIn(request) to establish a session. - return super.canActivate(context); + return super.canActivate(context) } handleRequest(err, user, info) { // You can throw an exception based on either "info" or "err" arguments if (err || !user) { - throw err || new UnauthorizedException(); + throw err || new UnauthorizedException() } - return user; + return user } } diff --git a/src/auth/guards/local-auth.guard.ts b/src/auth/guards/local-auth.guard.ts index 189bc34..78b685a 100644 --- a/src/auth/guards/local-auth.guard.ts +++ b/src/auth/guards/local-auth.guard.ts @@ -1,5 +1,5 @@ -import { Injectable } from '@nestjs/common'; -import { AuthGuard } from '@nestjs/passport'; +import { Injectable } from '@nestjs/common' +import { AuthGuard } from '@nestjs/passport' @Injectable() -export class LocalAuthGuard extends AuthGuard('local') {} \ No newline at end of file +export class LocalAuthGuard extends AuthGuard('local') {} diff --git a/src/auth/guards/roles.guard.spec.ts b/src/auth/guards/roles.guard.spec.ts index 96c1a77..72163aa 100644 --- a/src/auth/guards/roles.guard.spec.ts +++ b/src/auth/guards/roles.guard.spec.ts @@ -1,7 +1,7 @@ -import { RolesGuard } from './roles.guard'; +import { RolesGuard } from './roles.guard' describe('RolesGuard', () => { it('should be defined', () => { - expect(new RolesGuard()).toBeDefined(); - }); -}); + expect(new RolesGuard()).toBeDefined() + }) +}) diff --git a/src/main.ts b/src/main.ts index 6842c23..2af6381 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,17 +1,15 @@ //참고 : https://wikidocs.net/book/7059 import { NestFactory } from '@nestjs/core' -import { env } from 'process' import { AppModule } from './app.module' -var cors = require('cors') async function bootstrap() { const app = await NestFactory.create(AppModule) - //Enable All CORS Requests : https://github.com/expressjs/cors#enable-cors-for-a-single-route - var corsOptions = function (req, callback) { + //Enable All CORS Requests : https://docs.nestjs.com/security/cors + const corsOptions = function (req, callback) { const origin = req.header('Origin') - var corsOptions - if (env.CORS_ALLOW_LIST.indexOf(origin) !== -1) { + let corsOptions + if (process.env.CORS_ALLOW_LIST.indexOf(origin) !== -1) { corsOptions = { origin: true } // reflect (enable) the requested origin in the CORS response console.log('Allowed Origin URL: ' + origin) } else { @@ -20,7 +18,7 @@ async function bootstrap() { } callback(null, corsOptions) // callback expects two parameters: error and options } - app.use(cors(corsOptions)) + app.enableCors(corsOptions) await app.listen(3000, function () { console.log( '[CORS-enabled->npm install -g webpack webpack-cli] web server listening on port 3000' diff --git a/src/prisma.service.ts b/src/prisma.service.ts index f4701c8..4a215a9 100644 --- a/src/prisma.service.ts +++ b/src/prisma.service.ts @@ -1,15 +1,15 @@ -import { INestApplication, Injectable, OnModuleInit } from '@nestjs/common'; -import { PrismaClient } from '@prisma/client'; +import { INestApplication, Injectable, OnModuleInit } from '@nestjs/common' +import { PrismaClient } from '@prisma/client' @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit { async onModuleInit() { - await this.$connect(); + await this.$connect() } async enableShutdownHooks(app: INestApplication) { this.$on('beforeExit', async () => { - await app.close(); - }); + await app.close() + }) } -} \ No newline at end of file +} diff --git a/src/todo/dtos/todo.dto.ts b/src/todo/dtos/todo.dto.ts index d7bc15e..848f687 100644 --- a/src/todo/dtos/todo.dto.ts +++ b/src/todo/dtos/todo.dto.ts @@ -1,5 +1,5 @@ export class TodoDTO { - title: string; - content: string; - is_done: boolean; -} \ No newline at end of file + title: string + content: string + is_done: boolean +} diff --git a/src/todo/todo.controller.spec.ts b/src/todo/todo.controller.spec.ts index 1925914..fa83d82 100644 --- a/src/todo/todo.controller.spec.ts +++ b/src/todo/todo.controller.spec.ts @@ -1,18 +1,18 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { TodoController } from './todo.controller'; +import { Test, TestingModule } from '@nestjs/testing' +import { TodoController } from './todo.controller' describe('TodoController', () => { - let controller: TodoController; + let controller: TodoController beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - controllers: [TodoController], - }).compile(); + controllers: [TodoController] + }).compile() - controller = module.get(TodoController); - }); + controller = module.get(TodoController) + }) it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); + expect(controller).toBeDefined() + }) +}) diff --git a/src/todo/todo.controller.ts b/src/todo/todo.controller.ts index b1825b5..4fb667b 100644 --- a/src/todo/todo.controller.ts +++ b/src/todo/todo.controller.ts @@ -21,15 +21,15 @@ import { TodoService } from './todo.service' export class TodoController { constructor(private readonly todoService: TodoService) {} - @Get() - async fetchAll(@Query() query): Promise<{}> { + @Get('/vue3') + async fetchAllVue3(@Query() query): Promise<{ total: number; rows: Todo[] }> { //Sql용 console.log(query) - const searchSql = query.searchString + const searchSql = query.search ? { OR: [ - { title: { contains: query.searchString as string } }, - { content: { contains: query.searchString as string } } + { title: { contains: query.search as string } }, + { content: { contains: query.search as string } } ] } : {} @@ -68,6 +68,34 @@ export class TodoController { return data } + @Get('/vue2') + async fetchAllVue2(@Query() query): Promise<{ total: number; rows: Todo[] }> { + //Sql용 + console.log(query) + const searchSql = query.search + ? { + OR: [ + { title: { contains: query.search as string } }, + { content: { contains: query.search as string } } + ] + } + : {} + const fetchSQL = { + where: { + //is_done: true, + ...searchSql + }, + orderBy: { id: 'desc' } + } + console.log(fetchSQL) + const rows = await this.todoService.fetchAll(fetchSQL) + const data = { + total: rows.length, + rows: rows + } + return data + } + @HasRoles(Role.USER) @UseGuards(JwtAuthGuard, RolesGuard) @Get(':id') diff --git a/src/todo/todo.module.ts b/src/todo/todo.module.ts index a4cdab1..dcc231b 100644 --- a/src/todo/todo.module.ts +++ b/src/todo/todo.module.ts @@ -1,10 +1,10 @@ -import { Module } from '@nestjs/common'; -import { PrismaService } from 'src/prisma.service'; -import { TodoController } from './todo.controller'; -import { TodoService } from './todo.service'; +import { Module } from '@nestjs/common' +import { PrismaService } from 'src/prisma.service' +import { TodoController } from './todo.controller' +import { TodoService } from './todo.service' @Module({ controllers: [TodoController], - providers: [TodoService, PrismaService], + providers: [TodoService, PrismaService] }) export class TodoModule {} diff --git a/src/todo/todo.service.spec.ts b/src/todo/todo.service.spec.ts index 50097b7..2ef71a3 100644 --- a/src/todo/todo.service.spec.ts +++ b/src/todo/todo.service.spec.ts @@ -1,18 +1,18 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { TodoService } from './todo.service'; +import { Test, TestingModule } from '@nestjs/testing' +import { TodoService } from './todo.service' describe('TodoService', () => { - let service: TodoService; + let service: TodoService beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - providers: [TodoService], - }).compile(); + providers: [TodoService] + }).compile() - service = module.get(TodoService); - }); + service = module.get(TodoService) + }) it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); + expect(service).toBeDefined() + }) +}) diff --git a/src/todo/todo.service.ts b/src/todo/todo.service.ts index 2e65197..a9d363f 100644 --- a/src/todo/todo.service.ts +++ b/src/todo/todo.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common' -import { Todo, Prisma } from '@prisma/client' +import { Todo } from '@prisma/client' import { PrismaService } from 'src/prisma.service' import { TodoDTO } from './dtos/todo.dto' @@ -11,7 +11,7 @@ export class TodoService { //참고: https://intrepidgeeks.com/tutorial/05-instagram-clone-code-5-user-summary //전체조회 async count(sql: any): Promise { - return this.prismaService.todo.count() + return this.prismaService.todo.count(sql) } async fetchAll(sql: any): Promise { diff --git a/src/user/user.controller.spec.ts b/src/user/user.controller.spec.ts index 7057a1a..87a1c8f 100644 --- a/src/user/user.controller.spec.ts +++ b/src/user/user.controller.spec.ts @@ -1,18 +1,18 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { UserController } from './user.controller'; +import { Test, TestingModule } from '@nestjs/testing' +import { UserController } from './user.controller' describe('UserController', () => { - let controller: UserController; + let controller: UserController beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - controllers: [UserController], - }).compile(); + controllers: [UserController] + }).compile() - controller = module.get(UserController); - }); + controller = module.get(UserController) + }) it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); + expect(controller).toBeDefined() + }) +}) diff --git a/src/user/user.module.ts b/src/user/user.module.ts index 447afe1..0f61e09 100644 --- a/src/user/user.module.ts +++ b/src/user/user.module.ts @@ -1,11 +1,11 @@ -import { Module } from '@nestjs/common'; -import { PrismaService } from 'src/prisma.service'; -import { UserService } from './user.service'; -import { UserController } from './user.controller'; +import { Module } from '@nestjs/common' +import { PrismaService } from 'src/prisma.service' +import { UserService } from './user.service' +import { UserController } from './user.controller' @Module({ controllers: [UserController], providers: [UserService, PrismaService], - exports: [UserService], + exports: [UserService] }) export class UsersModule {} diff --git a/src/user/user.service.spec.ts b/src/user/user.service.spec.ts index 873de8a..dc6d696 100644 --- a/src/user/user.service.spec.ts +++ b/src/user/user.service.spec.ts @@ -1,18 +1,18 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { UserService } from './user.service'; +import { Test, TestingModule } from '@nestjs/testing' +import { UserService } from './user.service' describe('UserService', () => { - let service: UserService; + let service: UserService beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - providers: [UserService], - }).compile(); + providers: [UserService] + }).compile() - service = module.get(UserService); - }); + service = module.get(UserService) + }) it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); + expect(service).toBeDefined() + }) +}) diff --git a/test/app.e2e-spec.ts b/test/app.e2e-spec.ts index 50cda62..4e58523 100644 --- a/test/app.e2e-spec.ts +++ b/test/app.e2e-spec.ts @@ -1,24 +1,24 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication } from '@nestjs/common'; -import * as request from 'supertest'; -import { AppModule } from './../src/app.module'; +import { Test, TestingModule } from '@nestjs/testing' +import { INestApplication } from '@nestjs/common' +import * as request from 'supertest' +import { AppModule } from './../src/app.module' describe('AppController (e2e)', () => { - let app: INestApplication; + let app: INestApplication beforeEach(async () => { const moduleFixture: TestingModule = await Test.createTestingModule({ - imports: [AppModule], - }).compile(); + imports: [AppModule] + }).compile() - app = moduleFixture.createNestApplication(); - await app.init(); - }); + app = moduleFixture.createNestApplication() + await app.init() + }) it('/ (GET)', () => { return request(app.getHttpServer()) .get('/') .expect(200) - .expect('Hello World!'); - }); -}); + .expect('Hello World!') + }) +})