54 lines
1.2 KiB
TypeScript
54 lines
1.2 KiB
TypeScript
export interface QueryInterface {
|
|
"metadata.owner": string,
|
|
"metadata.parent"?: string,
|
|
filename?: string | RegExp | {
|
|
$lt?: string,
|
|
$gt?: string,
|
|
},
|
|
uploadDate?: {
|
|
$lt?: Date,
|
|
$gt?: Date,
|
|
},
|
|
}
|
|
|
|
const createQuery = (owner: string, parent: string, sortBy: string, startAt: number, startAtDate: number, searchQuery: string | RegExp, startAtName: string) => {
|
|
|
|
let query: QueryInterface = {"metadata.owner": owner}
|
|
|
|
if (searchQuery !== "") {
|
|
|
|
searchQuery = new RegExp(searchQuery, 'i')
|
|
|
|
query = {...query, filename: searchQuery}
|
|
|
|
} else {
|
|
|
|
query = {...query, "metadata.parent": parent}
|
|
}
|
|
|
|
if (startAt) {
|
|
|
|
if (sortBy === "date_desc" || sortBy === "DEFAULT") {
|
|
|
|
query = {...query, "uploadDate": {$lt: new Date(startAtDate)}}
|
|
|
|
} else if (sortBy === "date_asc") {
|
|
|
|
query = {...query, "uploadDate": {$gt: new Date(startAtDate)}}
|
|
|
|
} else if (sortBy === "alp_desc") {
|
|
|
|
query = {...query, "filename": {$lt: startAtName}}
|
|
|
|
} else {
|
|
|
|
query = {...query, "filename": {$gt: startAtName}}
|
|
}
|
|
}
|
|
|
|
|
|
return query;
|
|
|
|
}
|
|
|
|
export default createQuery; |