diff --git a/lerna.json b/lerna.json index bfcac5633c..25ec556c56 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.13.2", + "version": "2.13.3", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/pro b/packages/pro index 3820c0c93a..ad9a0085be 160000 --- a/packages/pro +++ b/packages/pro @@ -1 +1 @@ -Subproject commit 3820c0c93a3e448e10a60a9feb5396844b537ca8 +Subproject commit ad9a0085bee0c4f3184acd86cadd872ea9917e88 diff --git a/packages/server/src/api/controllers/row/index.ts b/packages/server/src/api/controllers/row/index.ts index 1a6747a085..018283c8c5 100644 --- a/packages/server/src/api/controllers/row/index.ts +++ b/packages/server/src/api/controllers/row/index.ts @@ -254,7 +254,7 @@ export const exportRows = async ( const format = ctx.query.format - const { rows, columns, query } = ctx.request.body + const { rows, columns, query, sort, sortOrder } = ctx.request.body if (typeof format !== "string" || !exporters.isFormat(format)) { ctx.throw( 400, @@ -272,6 +272,8 @@ export const exportRows = async ( rowIds: rows, columns, query, + sort, + sortOrder, }) ctx.attachment(fileName) return apiFileReturn(content) diff --git a/packages/server/src/sdk/app/rows/search.ts b/packages/server/src/sdk/app/rows/search.ts index 31f7c74601..36ef538d8b 100644 --- a/packages/server/src/sdk/app/rows/search.ts +++ b/packages/server/src/sdk/app/rows/search.ts @@ -1,4 +1,10 @@ -import { Row, SearchFilters, SearchParams } from "@budibase/types" +import { + Row, + SearchFilters, + SearchParams, + SortOrder, + SortType, +} from "@budibase/types" import { isExternalTableID } from "../../../integrations/utils" import * as internal from "./search/internal" import * as external from "./search/external" @@ -32,6 +38,8 @@ export interface ExportRowsParams { rowIds?: string[] columns?: string[] query?: SearchFilters + sort?: string + sortOrder?: SortOrder } export interface ExportRowsResult { diff --git a/packages/server/src/sdk/app/rows/search/external.ts b/packages/server/src/sdk/app/rows/search/external.ts index 1edd6b30f2..2fc6caeb39 100644 --- a/packages/server/src/sdk/app/rows/search/external.ts +++ b/packages/server/src/sdk/app/rows/search/external.ts @@ -101,12 +101,12 @@ export async function search(options: SearchParams) { export async function exportRows( options: ExportRowsParams ): Promise { - const { tableId, format, columns, rowIds } = options + const { tableId, format, columns, rowIds, query, sort, sortOrder } = options const { datasourceId, tableName } = breakExternalTableId(tableId) - let query: SearchFilters = {} + let requestQuery: SearchFilters = {} if (rowIds?.length) { - query = { + requestQuery = { oneOf: { _id: rowIds.map((row: string) => { const ids = JSON.parse( @@ -122,6 +122,8 @@ export async function exportRows( }), }, } + } else { + requestQuery = query || {} } const datasource = await sdk.datasources.get(datasourceId!) @@ -129,7 +131,7 @@ export async function exportRows( throw new HTTPError("Datasource has not been configured for plus API.", 400) } - let result = await search({ tableId, query }) + let result = await search({ tableId, query: requestQuery, sort, sortOrder }) let rows: Row[] = [] // Filter data to only specified columns if required diff --git a/packages/server/src/sdk/app/rows/search/internal.ts b/packages/server/src/sdk/app/rows/search/internal.ts index 1aec8a321e..e31bda1a15 100644 --- a/packages/server/src/sdk/app/rows/search/internal.ts +++ b/packages/server/src/sdk/app/rows/search/internal.ts @@ -84,7 +84,7 @@ export async function search(options: SearchParams) { export async function exportRows( options: ExportRowsParams ): Promise { - const { tableId, format, rowIds, columns, query } = options + const { tableId, format, rowIds, columns, query, sort, sortOrder } = options const db = context.getAppDB() const table = await sdk.tables.getTable(tableId) @@ -99,7 +99,12 @@ export async function exportRows( result = await outputProcessing(table, response) } else if (query) { - let searchResponse = await search({ tableId, query }) + let searchResponse = await search({ + tableId, + query, + sort, + sortOrder, + }) result = searchResponse.rows } diff --git a/packages/types/src/api/web/app/rows.ts b/packages/types/src/api/web/app/rows.ts index 62ea90a6a4..dad3286754 100644 --- a/packages/types/src/api/web/app/rows.ts +++ b/packages/types/src/api/web/app/rows.ts @@ -1,5 +1,6 @@ import { SearchFilters, SearchParams } from "../../../sdk" import { Row } from "../../../documents" +import { SortOrder } from "../../../api" import { ReadStream } from "fs" export interface SaveRowRequest extends Row {} @@ -34,6 +35,8 @@ export interface ExportRowsRequest { rows: string[] columns?: string[] query?: SearchFilters + sort?: string + sortOrder?: SortOrder } export type ExportRowsResponse = ReadStream diff --git a/pull_request_template.md b/pull_request_template.md index 1dd1a1d45d..405059b2ab 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -1,7 +1,7 @@ ## Description _Describe the problem or feature in addition to a link to the relevant github issues._ -### Addresses: +## Addresses - `` - ...more if required