mirror of
https://github.com/ngthanhvu/kr-phim.git
synced 2026-08-10 16:47:46 +00:00
feat: implement sorting functionality for movie management and add sections API for recent comments and trending movies
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { movies } from '../../database/schema'
|
||||
import { desc, eq, like, and, sql } from 'drizzle-orm'
|
||||
import { desc, eq, like, and, sql, asc } from 'drizzle-orm'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const db = useDb()
|
||||
@@ -11,6 +11,8 @@ export default defineEventHandler(async (event) => {
|
||||
const status = typeof query.status === 'string' ? query.status : ''
|
||||
const source = typeof query.source === 'string' ? query.source : ''
|
||||
const type = typeof query.type === 'string' ? query.type : ''
|
||||
const sortBy = typeof query.sortBy === 'string' ? query.sortBy : ''
|
||||
const sortOrder = typeof query.sortOrder === 'string' ? query.sortOrder : 'desc'
|
||||
|
||||
const conditions: any[] = []
|
||||
|
||||
@@ -22,12 +24,27 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
const whereClause = conditions.length > 0 ? and(...conditions) : undefined
|
||||
|
||||
const allowedSortColumns: Record<string, any> = {
|
||||
name: movies.name,
|
||||
views: movies.views,
|
||||
apiUpdatedAt: movies.apiUpdatedAt,
|
||||
active: movies.active,
|
||||
}
|
||||
|
||||
const orderBy: any[] = []
|
||||
if (sortBy && allowedSortColumns[sortBy]) {
|
||||
const column = allowedSortColumns[sortBy]
|
||||
orderBy.push(sortOrder === 'asc' ? asc(column) : desc(column))
|
||||
} else {
|
||||
orderBy.push(desc(movies.apiUpdatedAt), desc(movies.year), desc(movies.syncedAt))
|
||||
}
|
||||
|
||||
const [items, countResult] = await Promise.all([
|
||||
db
|
||||
.select()
|
||||
.from(movies)
|
||||
.where(whereClause)
|
||||
.orderBy(desc(movies.apiUpdatedAt), desc(movies.year), desc(movies.syncedAt))
|
||||
.orderBy(...orderBy)
|
||||
.limit(limit)
|
||||
.offset(offset),
|
||||
db
|
||||
|
||||
Reference in New Issue
Block a user