@budibase/server 2.6.19-alpha.50 → 2.6.19-alpha.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/query.js CHANGED
@@ -16912,6 +16912,7 @@ __export(filters_exports, {
16912
16912
  NoEmptyFilterStrings: () => NoEmptyFilterStrings,
16913
16913
  buildLuceneQuery: () => buildLuceneQuery,
16914
16914
  getValidOperatorsForType: () => getValidOperatorsForType,
16915
+ hasFilters: () => hasFilters,
16915
16916
  luceneLimit: () => luceneLimit,
16916
16917
  luceneSort: () => luceneSort,
16917
16918
  runLuceneQuery: () => runLuceneQuery
@@ -17197,6 +17198,21 @@ var luceneLimit = (docs, limit) => {
17197
17198
  }
17198
17199
  return docs.slice(0, numLimit);
17199
17200
  };
17201
+ var hasFilters = (query) => {
17202
+ if (!query) {
17203
+ return false;
17204
+ }
17205
+ const skipped = ["allOr"];
17206
+ for (let [key, value] of Object.entries(query)) {
17207
+ if (skipped.includes(key) || typeof value !== "object") {
17208
+ continue;
17209
+ }
17210
+ if (Object.keys(value).length !== 0) {
17211
+ return true;
17212
+ }
17213
+ }
17214
+ return false;
17215
+ };
17200
17216
 
17201
17217
  // ../shared-core/src/utils.ts
17202
17218
  var utils_exports3 = {};
@@ -17566,21 +17582,37 @@ var GoogleSheetsIntegration = class {
17566
17582
  }
17567
17583
  }
17568
17584
  async read(query) {
17585
+ var _a, _b, _c, _d;
17569
17586
  try {
17570
17587
  await this.connect();
17588
+ const hasFilters2 = filters_exports.hasFilters(query.filters);
17589
+ const limit = ((_a = query.paginate) == null ? void 0 : _a.limit) || 100;
17590
+ const page = typeof ((_b = query.paginate) == null ? void 0 : _b.page) === "number" ? query.paginate.page : parseInt(((_c = query.paginate) == null ? void 0 : _c.page) || "1");
17591
+ const offset = (page - 1) * limit;
17571
17592
  const sheet = this.client.sheetsByTitle[query.sheet];
17572
17593
  let rows2 = [];
17573
- if (query.paginate) {
17574
- const limit = query.paginate.limit || 100;
17575
- let page = typeof query.paginate.page === "number" ? query.paginate.page : parseInt(query.paginate.page || "1");
17594
+ if (query.paginate && !hasFilters2) {
17576
17595
  rows2 = await sheet.getRows({
17577
17596
  limit,
17578
- offset: (page - 1) * limit
17597
+ offset
17579
17598
  });
17580
17599
  } else {
17581
17600
  rows2 = await sheet.getRows();
17582
17601
  }
17583
- const filtered2 = filters_exports.runLuceneQuery(rows2, query.filters);
17602
+ if ((_d = query.filters) == null ? void 0 : _d.equal) {
17603
+ const idFilterKeys = Object.keys(query.filters.equal).filter(
17604
+ (filter2) => filter2.includes(GOOGLE_SHEETS_PRIMARY_KEY)
17605
+ );
17606
+ for (let idFilterKey of idFilterKeys) {
17607
+ const id = query.filters.equal[idFilterKey];
17608
+ delete query.filters.equal[idFilterKey];
17609
+ query.filters.equal[`_${GOOGLE_SHEETS_PRIMARY_KEY}`] = id;
17610
+ }
17611
+ }
17612
+ let filtered2 = filters_exports.runLuceneQuery(rows2, query.filters);
17613
+ if (hasFilters2 && query.paginate) {
17614
+ filtered2 = filtered2.slice(offset, offset + limit);
17615
+ }
17584
17616
  const headerValues = sheet.headerValues;
17585
17617
  let response = [];
17586
17618
  for (let row of filtered2) {
@@ -17638,7 +17670,12 @@ var GoogleSheetsIntegration = class {
17638
17670
  const row = rows2[query.rowIndex];
17639
17671
  if (row) {
17640
17672
  await row.delete();
17641
- return [{ deleted: query.rowIndex }];
17673
+ return [
17674
+ {
17675
+ deleted: query.rowIndex,
17676
+ [GOOGLE_SHEETS_PRIMARY_KEY]: query.rowIndex
17677
+ }
17678
+ ];
17642
17679
  } else {
17643
17680
  throw new Error("Row does not exist.");
17644
17681
  }