@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/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/reference-rag-vector-databases.md +1 -1
- package/dist/index.cjs +62 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +62 -25
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/package.json +2 -2
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
|
|
11157
|
-
|
|
11158
|
-
|
|
11159
|
-
|
|
11160
|
-
|
|
11161
|
-
|
|
11162
|
-
|
|
11163
|
-
|
|
11164
|
-
|
|
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
|
|
11303
|
-
|
|
11304
|
-
|
|
11305
|
-
|
|
11306
|
-
|
|
11307
|
-
|
|
11308
|
-
|
|
11309
|
-
|
|
11310
|
-
|
|
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,
|