1
0
mirror of https://github.com/tcgdex/cards-database.git synced 2025-08-16 09:08:52 +00:00

Compare commits

...

3 Commits

Author SHA1 Message Date
12ed23b5a2 fix: invalid OPTIONS request handling (#467) 2024-01-03 20:25:15 +01:00
b4dbdef4fa fix: set order not following the old way (#465) 2024-01-03 12:16:57 +01:00
ef23029d24 fix: log that want to production
Signed-off-by: Avior <github@avior.me>
2024-01-03 03:51:42 +01:00
3 changed files with 19 additions and 7 deletions

View File

@@ -76,7 +76,7 @@ server
items[cat][item] = finalValue
})
console.log(items)
// @ts-expect-error normal behavior
req.advQuery = items

View File

@@ -51,6 +51,13 @@ server.use((req, res, next) => {
next()
})
/**
* Handle options requests
*/
server.options('/*', (_, res) => {
res.status(200).send()
})
server.get('/', (_, res) => {
res.redirect('https://www.tcgdex.dev/?ref=api.tccgdex.net')
})

View File

@@ -63,12 +63,13 @@ export function betterSorter(a: string, b: string) {
*/
export function validateItem(validator: any | Array<any>, value: any): boolean {
if (typeof value === 'object') {
return objectLoop(value, (v) => {
// invert signal so that an early exit mean that a match was found!
return !objectLoop(value, (v) => {
// early exit to not infinitively loop through objects
if (typeof v === 'object') return true
// check for each childs
return validateItem(validator, v)
// check for each childs until one match
return !validateItem(validator, v)
})
}
@@ -104,10 +105,14 @@ export function validateItem(validator: any | Array<any>, value: any): boolean {
* @returns the sorted data
*/
export function handleSort(data: Array<any>, query: Query<any>) {
const sort: Query<any>['sort'] = query.sort ?? {field: 'id', order: 'ASC'}
// handle when data has no entries
if (data.length === 0) {
return data
}
const firstEntry = data[0]
const sort: Query<any>['sort'] = query.sort ?? {field: 'releaseDate' in firstEntry ? 'releaseDate' : 'id', order: 'ASC'}
const field = sort.field
const order = sort.order ?? 'ASC'
const firstEntry = data[0]
// early exit if the order is not correctly set
if (order !== 'ASC' && order !== 'DESC') {
@@ -142,7 +147,7 @@ export function handleSort(data: Array<any>, query: Query<any>) {
* @returns the data that is in the paginated query
*/
export function handlePagination(data: Array<any>, query: Query<any>) {
if (!query.pagination) {
if (!query.pagination || data.length === 0) {
return data
}
const itemsPerPage = query.pagination.itemsPerPage ?? 100