From 6fd5ac2c082a5a5e6f510d781b2a2e12b7b62cb9 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 24 Nov 2021 10:30:47 -0500 Subject: [PATCH] feat: azure cosmos compatibility --- src/collections/operations/find.ts | 20 +++++++++++++------- src/mongoose/buildSchema.ts | 5 +++++ src/mongoose/sanitizeFormattedValue.ts | 2 +- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/collections/operations/find.ts b/src/collections/operations/find.ts index b867ca8de89..983280d49a4 100644 --- a/src/collections/operations/find.ts +++ b/src/collections/operations/find.ts @@ -98,22 +98,28 @@ async function find(incomingArgs: Arguments): Promise { // Find // ///////////////////////////////////// - let { sort } = args; + let sortParam: Record; - if (!sort) { + if (!args.sort) { if (collectionConfig.timestamps) { - sort = '-createdAt'; + sortParam = { createdAt: 'desc' }; } else { - sort = '-_id'; + sortParam = { _id: 'desc' }; } - } else if (sort === 'id' || sort === '-id') { - sort = sort.replace('id', '_id'); + } else if (args.sort.indexOf('-') === 0) { + sortParam = { + [args.sort.substring(1)]: 'desc', + }; + } else { + sortParam = { + [args.sort]: 'asc', + }; } const optionsToExecute = { page: page || 1, limit: limit || 10, - sort, + sort: sortParam, lean: true, leanWithId: true, useEstimatedCount, diff --git a/src/mongoose/buildSchema.ts b/src/mongoose/buildSchema.ts index e1b0af24284..8bc34c99225 100644 --- a/src/mongoose/buildSchema.ts +++ b/src/mongoose/buildSchema.ts @@ -107,6 +107,11 @@ const buildSchema = (config: SanitizedConfig, configFields: Field[], buildSchema } }); + if (buildSchemaOptions?.options?.timestamps) { + indexFields.push({ createdAt: 1 }); + indexFields.push({ updatedAt: 1 }); + } + const schema = new Schema(fields, options); indexFields.forEach((index) => { schema.index(index); diff --git a/src/mongoose/sanitizeFormattedValue.ts b/src/mongoose/sanitizeFormattedValue.ts index a151080be5c..8e2d03695ae 100644 --- a/src/mongoose/sanitizeFormattedValue.ts +++ b/src/mongoose/sanitizeFormattedValue.ts @@ -91,7 +91,7 @@ export const sanitizeQueryValue = (schemaType: SchemaType, path: string, operato } if (operator === 'like' && path !== '_id') { - formattedValue = { $regex: formattedValue, $options: '-i' }; + formattedValue = { $regex: formattedValue, $options: 'i' }; } if (operator === 'exists') {