diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts index d26e1459dd..4f83f810e8 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts @@ -119,12 +119,14 @@ class BaseModelSqlv2 { args: { where?: string; filterArr?: Filter[]; + sort?: string | string[]; } = {} ): Promise { const qb = this.dbDriver(this.model.table_name); await this.selectObject({ qb }); const aliasColObjMap = await this.model.getAliasColObjMap(); + const sorts = extractSortsObject(args?.sort, aliasColObjMap); const filterObj = extractFilterFromXwhere(args?.where, aliasColObjMap); await conditionV2( @@ -145,6 +147,12 @@ class BaseModelSqlv2 { this.dbDriver ); + if (Array.isArray(sorts) && sorts?.length) { + await sortV2(sorts, qb, this.dbDriver); + } else if (this.model.primaryKey) { + qb.orderBy(this.model.primaryKey.column_name); + } + const data = await qb.first(); if (data) { diff --git a/packages/nocodb/src/lib/meta/api/swagger/helpers/templates/paths.ts b/packages/nocodb/src/lib/meta/api/swagger/helpers/templates/paths.ts index 821de196f6..89d60e2b6e 100644 --- a/packages/nocodb/src/lib/meta/api/swagger/helpers/templates/paths.ts +++ b/packages/nocodb/src/lib/meta/api/swagger/helpers/templates/paths.ts @@ -172,7 +172,7 @@ export const getModelPaths = async (ctx: { operationId: 'db-table-row-find-one', description: `Find first record matching the conditions.`, tags: [ctx.tableName], - parameters: [fieldsParam, whereParam], + parameters: [fieldsParam, whereParam, sortParam], responses: { '200': { description: 'OK',