@mastra/pg 1.23.0 → 1.23.1-alpha.0

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/index.js CHANGED
@@ -11040,13 +11040,36 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
11040
11040
  * asked for a page after the last row, because there is then no row to carry the
11041
11041
  * count on.
11042
11042
  */
11043
- async #fetchMessagePage({ selectStatement, tableName, whereClause, orderByStatement, queryParams, perPageInput, perPage, offset }) {
11043
+ async #fetchMessagePage({ selectStatement, tableName, whereClause, orderByStatement, queryParams, perPageInput, perPage, offset, includeTotal = true }) {
11044
+ if (includeTotal === false && perPageInput !== false) {
11045
+ const peekLimit = perPage + 1;
11046
+ const rows = await this.#db.readClient.manyOrNone(`${selectStatement} FROM ${tableName} ${whereClause} ${orderByStatement} LIMIT $${queryParams.length + 1} OFFSET $${queryParams.length + 2}`, [
11047
+ ...queryParams,
11048
+ peekLimit,
11049
+ offset
11050
+ ]) || [];
11051
+ const hasMore = rows.length > perPage;
11052
+ const messages = hasMore ? rows.slice(0, perPage) : rows;
11053
+ return {
11054
+ total: offset + messages.length,
11055
+ messages,
11056
+ hasMore
11057
+ };
11058
+ }
11044
11059
  const limitClause = perPageInput === false ? "" : ` LIMIT $${queryParams.length + 1} OFFSET $${queryParams.length + 2}`;
11045
11060
  const dataParams = perPageInput === false ? queryParams : [
11046
11061
  ...queryParams,
11047
11062
  perPage,
11048
11063
  offset
11049
11064
  ];
11065
+ if (includeTotal === false) {
11066
+ const rows = await this.#db.readClient.manyOrNone(`${selectStatement} FROM ${tableName} ${whereClause} ${orderByStatement}`, dataParams) || [];
11067
+ return {
11068
+ total: rows.length,
11069
+ messages: rows,
11070
+ hasMore: false
11071
+ };
11072
+ }
11050
11073
  const rows = await this.#db.readClient.manyOrNone(`${selectStatement}, (SELECT COUNT(*) FROM ${tableName} ${whereClause}) AS "__total" FROM ${tableName} ${whereClause} ${orderByStatement}${limitClause}`, dataParams) || [];
11051
11074
  if (rows.length > 0) return {
11052
11075
  total: Number(rows[0].__total),
@@ -11063,7 +11086,7 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
11063
11086
  };
11064
11087
  }
11065
11088
  async listMessages(args) {
11066
- const { threadId, resourceId, include, filter, perPage: perPageInput, page = 0, orderBy } = args;
11089
+ const { threadId, resourceId, include, filter, perPage: perPageInput, page = 0, orderBy, includeTotal = true } = args;
11067
11090
  const threadIds = (Array.isArray(threadId) ? threadId : [threadId]).filter((id) => typeof id === "string");
11068
11091
  if (threadIds.length === 0 || threadIds.some((id) => !id.trim())) throw new MastraError({
11069
11092
  id: createStorageErrorId("PG", "LIST_MESSAGES", "INVALID_THREAD_ID"),
@@ -11149,20 +11172,27 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
11149
11172
  }) : null;
11150
11173
  let total;
11151
11174
  let messages;
11175
+ let peekedHasMore;
11152
11176
  if (metadataFilter) {
11153
11177
  const filteredRows = (await this.#db.readClient.manyOrNone(`${selectStatement} FROM ${tableName} ${whereClause} ${orderByStatement}`, queryParams) || []).filter((row) => storageMessageMatchesMetadataFilter(row.content, metadataFilter));
11154
11178
  total = filteredRows.length;
11155
11179
  messages = perPageInput === false ? filteredRows : filteredRows.slice(offset, offset + perPage);
11156
- } else ({total, messages} = await this.#fetchMessagePage({
11157
- selectStatement,
11158
- tableName,
11159
- whereClause,
11160
- orderByStatement,
11161
- queryParams,
11162
- perPageInput,
11163
- perPage,
11164
- offset
11165
- }));
11180
+ } else {
11181
+ const pageResult = await this.#fetchMessagePage({
11182
+ selectStatement,
11183
+ tableName,
11184
+ whereClause,
11185
+ orderByStatement,
11186
+ queryParams,
11187
+ perPageInput,
11188
+ perPage,
11189
+ offset,
11190
+ includeTotal
11191
+ });
11192
+ total = pageResult.total;
11193
+ messages = pageResult.messages;
11194
+ peekedHasMore = pageResult.hasMore;
11195
+ }
11166
11196
  const primaryPageCount = messages.length;
11167
11197
  if (total === 0 && messages.length === 0 && (!include || include.length === 0)) return {
11168
11198
  messages: [],
@@ -11187,7 +11217,7 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
11187
11217
  const finalMessages = this._sortMessages(list.get.all.db(), field, direction);
11188
11218
  const threadIdSet = new Set(threadIds);
11189
11219
  const allThreadMessagesReturned = new Set(finalMessages.filter((m) => m.threadId && threadIdSet.has(m.threadId)).map((m) => m.id)).size >= total;
11190
- const hasMore = metadataFilter ? perPageInput !== false && offset + primaryPageCount < total : perPageInput !== false && !allThreadMessagesReturned && offset + perPage < total;
11220
+ const hasMore = peekedHasMore !== void 0 ? peekedHasMore : metadataFilter ? perPageInput !== false && offset + primaryPageCount < total : perPageInput !== false && !allThreadMessagesReturned && offset + perPage < total;
11191
11221
  return {
11192
11222
  messages: finalMessages,
11193
11223
  total,
@@ -11212,7 +11242,7 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
11212
11242
  }
11213
11243
  }
11214
11244
  async listMessagesByResourceId(args) {
11215
- const { resourceId, include, filter, perPage: perPageInput, page = 0, orderBy } = args;
11245
+ const { resourceId, include, filter, perPage: perPageInput, page = 0, orderBy, includeTotal = true } = args;
11216
11246
  if (!(resourceId !== void 0 && resourceId !== null && resourceId.trim() !== "")) throw new MastraError({
11217
11247
  id: createStorageErrorId("PG", "LIST_MESSAGES_BY_RESOURCE_ID", "INVALID_QUERY"),
11218
11248
  domain: ErrorDomain.STORAGE,
@@ -11295,20 +11325,27 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
11295
11325
  }) : null;
11296
11326
  let total;
11297
11327
  let messages;
11328
+ let peekedHasMore;
11298
11329
  if (metadataFilter) {
11299
11330
  const filteredRows = (await this.#db.readClient.manyOrNone(`${selectStatement} FROM ${tableName} ${whereClause} ${orderByStatement}`, queryParams) || []).filter((row) => storageMessageMatchesMetadataFilter(row.content, metadataFilter));
11300
11331
  total = filteredRows.length;
11301
11332
  messages = perPageInput === false ? filteredRows : filteredRows.slice(offset, offset + perPage);
11302
- } else ({total, messages} = await this.#fetchMessagePage({
11303
- selectStatement,
11304
- tableName,
11305
- whereClause,
11306
- orderByStatement,
11307
- queryParams,
11308
- perPageInput,
11309
- perPage,
11310
- offset
11311
- }));
11333
+ } else {
11334
+ const pageResult = await this.#fetchMessagePage({
11335
+ selectStatement,
11336
+ tableName,
11337
+ whereClause,
11338
+ orderByStatement,
11339
+ queryParams,
11340
+ perPageInput,
11341
+ perPage,
11342
+ offset,
11343
+ includeTotal
11344
+ });
11345
+ total = pageResult.total;
11346
+ messages = pageResult.messages;
11347
+ peekedHasMore = pageResult.hasMore;
11348
+ }
11312
11349
  if (total === 0 && messages.length === 0 && (!include || include.length === 0)) return {
11313
11350
  messages: [],
11314
11351
  total: 0,
@@ -11330,7 +11367,7 @@ var MemoryPG = class MemoryPG extends MemoryStorage {
11330
11367
  const messagesWithParsedContent = messages.map((row) => this.parseRow(row));
11331
11368
  const list = new MessageList().add(messagesWithParsedContent, "memory");
11332
11369
  const finalMessages = this._sortMessages(list.get.all.db(), field, direction);
11333
- const hasMore = perPageInput !== false && offset + perPage < total;
11370
+ const hasMore = peekedHasMore !== void 0 ? peekedHasMore : perPageInput !== false && offset + perPage < total;
11334
11371
  return {
11335
11372
  messages: finalMessages,
11336
11373
  total,