Skip to content

Commit fc50cbc

Browse files
committed
update filter sorting by sort order
1 parent 0294556 commit fc50cbc

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

src/helpers/requestParams.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export interface RequestParams {
22
page: number
33
offset: number
44
limit: number
5-
order_by: string
5+
sort_by: string
66
sort_order: string
77
keyword: string
88
[key: string]: any
@@ -12,10 +12,10 @@ export const GetRequestParams = (query: Record<string, any>): RequestParams => {
1212
const limit = Number(query.limit) || 100
1313
const page = Number(query.page) || 1
1414
const offset = limit * (page - 1)
15-
let { q, sort_order, order_by } = query
15+
let { q, sort_order, sort_by } = query
1616

17-
if (!['ASC', 'DESC'].includes(order_by)) {
18-
order_by = 'ASC'
17+
if (!['ASC', 'DESC'].includes(sort_order)) {
18+
sort_order = 'ASC'
1919
}
2020

2121
return {
@@ -24,7 +24,7 @@ export const GetRequestParams = (query: Record<string, any>): RequestParams => {
2424
offset,
2525
limit,
2626
sort_order,
27-
order_by,
27+
sort_by,
2828
keyword: q,
2929
}
3030
}

src/modules/images/entity/schema.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ const file = Joi.object({
1414

1515
export const Store = Joi.object({
1616
caption: Joi.string().regex(RegexSanitize).optional(),
17-
category: Joi.string()
18-
.alphanum()
19-
.required(),
17+
category: Joi.string().alphanum().required(),
2018
tags: Joi.array()
2119
.items(Joi.string().alphanum())
2220
.optional()

src/modules/images/repository/mongo/repository.ts

+20-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,16 @@ import { Store } from '../../entity/interface'
66
class Repository {
77
constructor(private logger: Logger) {}
88

9-
public async Fetch({ offset, limit, keyword, category }: RequestParams) {
9+
public async Fetch({
10+
offset,
11+
limit,
12+
keyword,
13+
category,
14+
sort_order,
15+
sort_by,
16+
}: RequestParams) {
1017
const filter = {}
18+
const sort = {}
1119

1220
if (keyword)
1321
Object.assign(filter, {
@@ -21,7 +29,17 @@ class Repository {
2129
category: category,
2230
})
2331

24-
const data = await imageSchema.find(filter).skip(offset).limit(limit)
32+
if (['created_at'].includes(sort_order)) {
33+
Object.assign(sort, {
34+
sort_order: sort_by,
35+
})
36+
}
37+
38+
const data = await imageSchema
39+
.find(filter)
40+
.sort(sort)
41+
.skip(offset)
42+
.limit(limit)
2543
const count = await imageSchema.find(filter).count()
2644

2745
return {

0 commit comments

Comments
 (0)