첫번째 수정..
This commit is contained in:
parent
f6ab0f234c
commit
fb2102168f
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
generator client {
|
generator client {
|
||||||
provider = "prisma-client-js"
|
provider = "prisma-client-js"
|
||||||
previewFeatures = ["interactiveTransactions"]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//데이터베이스 연동
|
//데이터베이스 연동
|
||||||
|
|||||||
@ -23,14 +23,32 @@ export class TodoController {
|
|||||||
constructor(private readonly todoService: TodoService) {}
|
constructor(private readonly todoService: TodoService) {}
|
||||||
|
|
||||||
@Get()
|
@Get()
|
||||||
async fetchAll(@Query() query): Promise<Todo[]> {
|
async fetchAll(@Query() query): Promise<{}> {
|
||||||
const take: number = isNaN(query.per_page)
|
//쿼리값 변경
|
||||||
|
const per_page: number = isNaN(query.per_page)
|
||||||
? Number(env.DEFAULT_TABLE_PER_PAGE)
|
? Number(env.DEFAULT_TABLE_PER_PAGE)
|
||||||
: Number(query.per_page)
|
: Number(query.per_page)
|
||||||
const skip: number = isNaN(query.page)
|
const page: number = isNaN(query.page)
|
||||||
? Number(env.DEFAULT_TABLE_PAGE)
|
? Number(env.DEFAULT_TABLE_PAGE)
|
||||||
: Number(query.page) * take
|
: Number(query.page)
|
||||||
const search = query.searchString
|
const searchString: string = isNaN(query.searchString)
|
||||||
|
? ''
|
||||||
|
: String(query.searchString)
|
||||||
|
|
||||||
|
//리턴 할 데이터
|
||||||
|
const datas = {
|
||||||
|
query: {
|
||||||
|
page: page,
|
||||||
|
per_page: per_page,
|
||||||
|
searchString: searchString
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
rows: []
|
||||||
|
}
|
||||||
|
datas.total = await this.todoService.count()
|
||||||
|
|
||||||
|
//Sql용
|
||||||
|
const searchSql = query.searchString
|
||||||
? {
|
? {
|
||||||
OR: [
|
OR: [
|
||||||
{ title: { contains: query.searchString as string } },
|
{ title: { contains: query.searchString as string } },
|
||||||
@ -38,18 +56,19 @@ export class TodoController {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
: {}
|
: {}
|
||||||
|
|
||||||
const sql = {
|
const sql = {
|
||||||
take: take,
|
take: per_page,
|
||||||
skip: skip,
|
skip: page,
|
||||||
where: {
|
where: {
|
||||||
//is_done: true,
|
//is_done: true,
|
||||||
...search
|
...searchSql
|
||||||
},
|
},
|
||||||
orderBy: { id: 'desc' }
|
orderBy: { id: 'desc' }
|
||||||
}
|
}
|
||||||
//console.log(query)
|
datas.rows = await this.todoService.fetchAll(sql)
|
||||||
//console.log(sql)
|
//console.log(datas)
|
||||||
return this.todoService.fetchAll(sql)
|
return datas
|
||||||
}
|
}
|
||||||
|
|
||||||
@HasRoles(Role.USER)
|
@HasRoles(Role.USER)
|
||||||
|
|||||||
@ -5,10 +5,14 @@ import { TodoDTO } from './dtos/todo.dto'
|
|||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TodoService {
|
export class TodoService {
|
||||||
|
todo: any
|
||||||
constructor(private prismaService: PrismaService) {}
|
constructor(private prismaService: PrismaService) {}
|
||||||
|
|
||||||
//참고: https://intrepidgeeks.com/tutorial/05-instagram-clone-code-5-user-summary
|
//참고: https://intrepidgeeks.com/tutorial/05-instagram-clone-code-5-user-summary
|
||||||
//전체조회
|
//전체조회
|
||||||
|
async count(): Promise<number> {
|
||||||
|
return this.prismaService.todo.count()
|
||||||
|
}
|
||||||
async fetchAll(sql: any): Promise<Todo[]> {
|
async fetchAll(sql: any): Promise<Todo[]> {
|
||||||
return this.prismaService.todo.findMany(sql)
|
return this.prismaService.todo.findMany(sql)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user