@mastra/mysql 0.3.3-alpha.0 → 0.3.3-alpha.2
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/CHANGELOG.md +147 -0
- package/dist/index.cjs +208 -24
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +209 -25
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/datasets/index.d.ts +7 -7
- package/dist/storage/domains/datasets/index.d.ts.map +1 -1
- package/dist/storage/domains/experiments/index.d.ts +5 -1
- package/dist/storage/domains/experiments/index.d.ts.map +1 -1
- package/dist/storage/domains/scores/index.d.ts +13 -5
- package/dist/storage/domains/scores/index.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MastraError, ErrorCategory, ErrorDomain } from '@mastra/core/error';
|
|
2
|
-
import { StoreOperations, TABLE_CONFIGS, TABLE_WORKFLOW_SNAPSHOT, TABLE_SPANS, AgentsStorage, TABLE_AGENTS, TABLE_AGENT_VERSIONS, AGENTS_SCHEMA, AGENT_VERSIONS_SCHEMA, createStorageErrorId, normalizePerPage, calculatePagination, BlobStore, SKILL_BLOBS_SCHEMA, TABLE_SKILL_BLOBS, DatasetsStorage, TABLE_DATASETS, TABLE_DATASET_ITEMS, TABLE_DATASET_VERSIONS, DATASETS_SCHEMA, DATASET_ITEMS_SCHEMA, DATASET_VERSIONS_SCHEMA,
|
|
2
|
+
import { StoreOperations, TABLE_CONFIGS, TABLE_WORKFLOW_SNAPSHOT, TABLE_SPANS, AgentsStorage, TABLE_AGENTS, TABLE_AGENT_VERSIONS, AGENTS_SCHEMA, AGENT_VERSIONS_SCHEMA, createStorageErrorId, normalizePerPage, calculatePagination, BlobStore, SKILL_BLOBS_SCHEMA, TABLE_SKILL_BLOBS, DatasetsStorage, TABLE_DATASETS, TABLE_DATASET_ITEMS, TABLE_DATASET_VERSIONS, DATASETS_SCHEMA, DATASET_ITEMS_SCHEMA, DATASET_VERSIONS_SCHEMA, TABLE_EXPERIMENTS, TABLE_EXPERIMENT_RESULTS, ExperimentsStorage, EXPERIMENTS_SCHEMA, EXPERIMENT_RESULTS_SCHEMA, MCPClientsStorage, TABLE_MCP_CLIENTS, TABLE_MCP_CLIENT_VERSIONS, MCP_CLIENTS_SCHEMA, MCP_CLIENT_VERSIONS_SCHEMA, MCPServersStorage, TABLE_MCP_SERVERS, TABLE_MCP_SERVER_VERSIONS, MCP_SERVERS_SCHEMA, MCP_SERVER_VERSIONS_SCHEMA, MemoryStorage, TABLE_THREADS, TABLE_MESSAGES, TABLE_RESOURCES, TABLE_SCHEMAS, OBSERVATIONAL_MEMORY_TABLE_SCHEMA, ObservabilityStorage, SPAN_SCHEMA, listTracesArgsSchema, TraceStatus, toTraceSpans, PromptBlocksStorage, TABLE_PROMPT_BLOCKS, TABLE_PROMPT_BLOCK_VERSIONS, PROMPT_BLOCKS_SCHEMA, PROMPT_BLOCK_VERSIONS_SCHEMA, ScorerDefinitionsStorage, TABLE_SCORER_DEFINITIONS, TABLE_SCORER_DEFINITION_VERSIONS, SCORER_DEFINITIONS_SCHEMA, SCORER_DEFINITION_VERSIONS_SCHEMA, ScoresStorage, TABLE_SCORERS, SCORERS_SCHEMA, SkillsStorage, TABLE_SKILLS, TABLE_SKILL_VERSIONS, SKILLS_SCHEMA, SKILL_VERSIONS_SCHEMA, WorkflowsStorage, WorkspacesStorage, TABLE_WORKSPACES, TABLE_WORKSPACE_VERSIONS, WORKSPACES_SCHEMA, WORKSPACE_VERSIONS_SCHEMA, MastraCompositeStore, TABLE_FAVORITES, BackgroundTasksStorage, TABLE_BACKGROUND_TASKS, ChannelsStorage, TABLE_CHANNEL_INSTALLATIONS, TABLE_CHANNEL_CONFIG, FavoritesStorage, FAVORITES_SCHEMA, SchedulesStorage, TABLE_SCHEDULES, TABLE_SCHEDULE_TRIGGERS, ToolProviderConnectionsStorage, TABLE_TOOL_PROVIDER_CONNECTIONS, TOOL_PROVIDER_CONNECTIONS_SCHEMA } from '@mastra/core/storage';
|
|
3
3
|
import { createPool } from 'mysql2/promise';
|
|
4
4
|
import { parseSqlIdentifier } from '@mastra/core/utils';
|
|
5
5
|
import { randomUUID } from 'crypto';
|
|
@@ -2050,11 +2050,11 @@ function parseJSON(value) {
|
|
|
2050
2050
|
try {
|
|
2051
2051
|
return JSON.parse(value);
|
|
2052
2052
|
} catch {
|
|
2053
|
-
return
|
|
2053
|
+
return value;
|
|
2054
2054
|
}
|
|
2055
2055
|
}
|
|
2056
2056
|
if (typeof value === "object") return value;
|
|
2057
|
-
return
|
|
2057
|
+
return value;
|
|
2058
2058
|
}
|
|
2059
2059
|
function jsonArg(value) {
|
|
2060
2060
|
return value === void 0 || value === null ? null : JSON.stringify(value);
|
|
@@ -2143,7 +2143,17 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2143
2143
|
await this.operations.alterTable({
|
|
2144
2144
|
tableName: TABLE_DATASETS,
|
|
2145
2145
|
schema: DATASETS_SCHEMA,
|
|
2146
|
-
ifNotExists: [
|
|
2146
|
+
ifNotExists: [
|
|
2147
|
+
"organizationId",
|
|
2148
|
+
"projectId",
|
|
2149
|
+
"candidateKey",
|
|
2150
|
+
"candidateId",
|
|
2151
|
+
"requestContextSchema",
|
|
2152
|
+
"tags",
|
|
2153
|
+
"targetType",
|
|
2154
|
+
"targetIds",
|
|
2155
|
+
"scorerIds"
|
|
2156
|
+
]
|
|
2147
2157
|
});
|
|
2148
2158
|
await this.operations.alterTable({
|
|
2149
2159
|
tableName: TABLE_DATASET_ITEMS,
|
|
@@ -2158,6 +2168,19 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2158
2168
|
await this.pool.execute(`DELETE FROM ${formatTableName(TABLE_DATASET_ITEMS)}`);
|
|
2159
2169
|
await this.pool.execute(`DELETE FROM ${formatTableName(TABLE_DATASETS)}`);
|
|
2160
2170
|
}
|
|
2171
|
+
async experimentTablesExist() {
|
|
2172
|
+
try {
|
|
2173
|
+
const [rows] = await this.pool.execute(
|
|
2174
|
+
`SELECT COUNT(*) AS c FROM information_schema.tables
|
|
2175
|
+
WHERE table_schema = DATABASE() AND table_name IN (?, ?)`,
|
|
2176
|
+
[TABLE_EXPERIMENTS, TABLE_EXPERIMENT_RESULTS]
|
|
2177
|
+
);
|
|
2178
|
+
const row = Array.isArray(rows) ? rows[0] : void 0;
|
|
2179
|
+
return Number(row?.c ?? 0) === 2;
|
|
2180
|
+
} catch {
|
|
2181
|
+
return false;
|
|
2182
|
+
}
|
|
2183
|
+
}
|
|
2161
2184
|
// --- Row transformers ---
|
|
2162
2185
|
mapDataset(row) {
|
|
2163
2186
|
return {
|
|
@@ -2167,6 +2190,11 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2167
2190
|
metadata: parseJSON(row.metadata),
|
|
2168
2191
|
inputSchema: parseJSON(row.inputSchema),
|
|
2169
2192
|
groundTruthSchema: parseJSON(row.groundTruthSchema),
|
|
2193
|
+
requestContextSchema: parseJSON(row.requestContextSchema),
|
|
2194
|
+
tags: parseJSON(row.tags) ?? null,
|
|
2195
|
+
targetType: row.targetType ?? null,
|
|
2196
|
+
targetIds: parseJSON(row.targetIds) ?? null,
|
|
2197
|
+
scorerIds: parseJSON(row.scorerIds) ?? null,
|
|
2170
2198
|
version: row.version,
|
|
2171
2199
|
organizationId: row.organizationId ?? null,
|
|
2172
2200
|
projectId: row.projectId ?? null,
|
|
@@ -2228,6 +2256,10 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2228
2256
|
metadata: jsonArg(input.metadata),
|
|
2229
2257
|
inputSchema: jsonArg(input.inputSchema),
|
|
2230
2258
|
groundTruthSchema: jsonArg(input.groundTruthSchema),
|
|
2259
|
+
requestContextSchema: jsonArg(input.requestContextSchema),
|
|
2260
|
+
targetType: input.targetType ?? null,
|
|
2261
|
+
targetIds: jsonArg(input.targetIds),
|
|
2262
|
+
scorerIds: jsonArg(input.scorerIds),
|
|
2231
2263
|
version: 0,
|
|
2232
2264
|
organizationId: input.organizationId ?? null,
|
|
2233
2265
|
projectId: input.projectId ?? null,
|
|
@@ -2244,6 +2276,10 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2244
2276
|
metadata: input.metadata,
|
|
2245
2277
|
inputSchema: input.inputSchema ?? void 0,
|
|
2246
2278
|
groundTruthSchema: input.groundTruthSchema ?? void 0,
|
|
2279
|
+
requestContextSchema: input.requestContextSchema ?? void 0,
|
|
2280
|
+
targetType: input.targetType ?? null,
|
|
2281
|
+
targetIds: input.targetIds ?? null,
|
|
2282
|
+
scorerIds: input.scorerIds ?? null,
|
|
2247
2283
|
version: 0,
|
|
2248
2284
|
organizationId: input.organizationId ?? null,
|
|
2249
2285
|
projectId: input.projectId ?? null,
|
|
@@ -2263,11 +2299,18 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2263
2299
|
);
|
|
2264
2300
|
}
|
|
2265
2301
|
}
|
|
2266
|
-
async getDatasetById({
|
|
2302
|
+
async getDatasetById({
|
|
2303
|
+
id,
|
|
2304
|
+
filters
|
|
2305
|
+
}) {
|
|
2267
2306
|
try {
|
|
2268
2307
|
const row = await this.operations.load({
|
|
2269
2308
|
tableName: TABLE_DATASETS,
|
|
2270
|
-
keys: {
|
|
2309
|
+
keys: {
|
|
2310
|
+
id,
|
|
2311
|
+
organizationId: filters?.organizationId,
|
|
2312
|
+
projectId: filters?.projectId
|
|
2313
|
+
}
|
|
2271
2314
|
});
|
|
2272
2315
|
return row ? this.mapDataset(row) : null;
|
|
2273
2316
|
} catch (error) {
|
|
@@ -2283,7 +2326,7 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2283
2326
|
}
|
|
2284
2327
|
async _doUpdateDataset(args) {
|
|
2285
2328
|
try {
|
|
2286
|
-
const existing = await this.getDatasetById({ id: args.id });
|
|
2329
|
+
const existing = await this.getDatasetById({ id: args.id, filters: args.filters });
|
|
2287
2330
|
if (!existing) {
|
|
2288
2331
|
throw new MastraError({
|
|
2289
2332
|
id: "MYSQL_UPDATE_DATASET_NOT_FOUND",
|
|
@@ -2300,6 +2343,14 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2300
2343
|
data.inputSchema = args.inputSchema === null ? null : JSON.stringify(args.inputSchema);
|
|
2301
2344
|
if (args.groundTruthSchema !== void 0)
|
|
2302
2345
|
data.groundTruthSchema = args.groundTruthSchema === null ? null : JSON.stringify(args.groundTruthSchema);
|
|
2346
|
+
if (args.requestContextSchema !== void 0)
|
|
2347
|
+
data.requestContextSchema = args.requestContextSchema === null ? null : JSON.stringify(args.requestContextSchema);
|
|
2348
|
+
if (args.tags !== void 0) data.tags = args.tags === null ? null : JSON.stringify(args.tags);
|
|
2349
|
+
if (args.targetType !== void 0) data.targetType = args.targetType;
|
|
2350
|
+
if (args.targetIds !== void 0)
|
|
2351
|
+
data.targetIds = args.targetIds === null ? null : JSON.stringify(args.targetIds);
|
|
2352
|
+
if (args.scorerIds !== void 0)
|
|
2353
|
+
data.scorerIds = args.scorerIds === null ? null : JSON.stringify(args.scorerIds);
|
|
2303
2354
|
await this.operations.update({
|
|
2304
2355
|
tableName: TABLE_DATASETS,
|
|
2305
2356
|
keys: { id: args.id },
|
|
@@ -2312,6 +2363,11 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2312
2363
|
metadata: args.metadata ?? existing.metadata,
|
|
2313
2364
|
inputSchema: (args.inputSchema !== void 0 ? args.inputSchema : existing.inputSchema) ?? void 0,
|
|
2314
2365
|
groundTruthSchema: (args.groundTruthSchema !== void 0 ? args.groundTruthSchema : existing.groundTruthSchema) ?? void 0,
|
|
2366
|
+
requestContextSchema: (args.requestContextSchema !== void 0 ? args.requestContextSchema : existing.requestContextSchema) ?? void 0,
|
|
2367
|
+
tags: (args.tags !== void 0 ? args.tags : existing.tags) ?? null,
|
|
2368
|
+
targetType: (args.targetType !== void 0 ? args.targetType : existing.targetType) ?? null,
|
|
2369
|
+
targetIds: (args.targetIds !== void 0 ? args.targetIds : existing.targetIds) ?? null,
|
|
2370
|
+
scorerIds: (args.scorerIds !== void 0 ? args.scorerIds : existing.scorerIds) ?? null,
|
|
2315
2371
|
updatedAt: data.updatedAt
|
|
2316
2372
|
};
|
|
2317
2373
|
} catch (error) {
|
|
@@ -2326,23 +2382,39 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2326
2382
|
);
|
|
2327
2383
|
}
|
|
2328
2384
|
}
|
|
2329
|
-
async deleteDataset({ id }) {
|
|
2385
|
+
async deleteDataset({ id, filters }) {
|
|
2386
|
+
const filterCols = [];
|
|
2387
|
+
const filterVals = [];
|
|
2388
|
+
if (filters?.organizationId !== void 0) {
|
|
2389
|
+
filterCols.push(`${quoteIdentifier("organizationId", "column name")} = ?`);
|
|
2390
|
+
filterVals.push(filters.organizationId);
|
|
2391
|
+
}
|
|
2392
|
+
if (filters?.projectId !== void 0) {
|
|
2393
|
+
filterCols.push(`${quoteIdentifier("projectId", "column name")} = ?`);
|
|
2394
|
+
filterVals.push(filters.projectId);
|
|
2395
|
+
}
|
|
2396
|
+
const scopedWhere = ["id = ?", ...filterCols].join(" AND ");
|
|
2397
|
+
const experimentTablesExist = await this.experimentTablesExist();
|
|
2330
2398
|
const connection = await this.pool.getConnection();
|
|
2331
2399
|
try {
|
|
2332
2400
|
await connection.beginTransaction();
|
|
2333
|
-
|
|
2401
|
+
const [rows] = await connection.execute(
|
|
2402
|
+
`SELECT id FROM ${formatTableName(TABLE_DATASETS)} WHERE ${scopedWhere} FOR UPDATE`,
|
|
2403
|
+
[id, ...filterVals]
|
|
2404
|
+
);
|
|
2405
|
+
if (!Array.isArray(rows) || rows.length === 0) {
|
|
2406
|
+
await connection.commit();
|
|
2407
|
+
return;
|
|
2408
|
+
}
|
|
2409
|
+
if (experimentTablesExist) {
|
|
2334
2410
|
await connection.execute(
|
|
2335
2411
|
`DELETE FROM ${formatTableName(TABLE_EXPERIMENT_RESULTS)} WHERE ${quoteIdentifier("experimentId", "column name")} IN (SELECT id FROM ${formatTableName(TABLE_EXPERIMENTS)} WHERE ${quoteIdentifier("datasetId", "column name")} = ?)`,
|
|
2336
2412
|
[id]
|
|
2337
2413
|
);
|
|
2338
|
-
} catch {
|
|
2339
|
-
}
|
|
2340
|
-
try {
|
|
2341
2414
|
await connection.execute(
|
|
2342
2415
|
`UPDATE ${formatTableName(TABLE_EXPERIMENTS)} SET ${quoteIdentifier("datasetId", "column name")} = NULL, ${quoteIdentifier("datasetVersion", "column name")} = NULL WHERE ${quoteIdentifier("datasetId", "column name")} = ?`,
|
|
2343
2416
|
[id]
|
|
2344
2417
|
);
|
|
2345
|
-
} catch {
|
|
2346
2418
|
}
|
|
2347
2419
|
await connection.execute(
|
|
2348
2420
|
`DELETE FROM ${formatTableName(TABLE_DATASET_VERSIONS)} WHERE ${quoteIdentifier("datasetId", "column name")} = ?`,
|
|
@@ -2352,7 +2424,10 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2352
2424
|
`DELETE FROM ${formatTableName(TABLE_DATASET_ITEMS)} WHERE ${quoteIdentifier("datasetId", "column name")} = ?`,
|
|
2353
2425
|
[id]
|
|
2354
2426
|
);
|
|
2355
|
-
await connection.execute(`DELETE FROM ${formatTableName(TABLE_DATASETS)} WHERE
|
|
2427
|
+
await connection.execute(`DELETE FROM ${formatTableName(TABLE_DATASETS)} WHERE ${scopedWhere}`, [
|
|
2428
|
+
id,
|
|
2429
|
+
...filterVals
|
|
2430
|
+
]);
|
|
2356
2431
|
await connection.commit();
|
|
2357
2432
|
} catch (error) {
|
|
2358
2433
|
await connection.rollback();
|
|
@@ -2389,6 +2464,19 @@ var DatasetsMySQL = class _DatasetsMySQL extends DatasetsStorage {
|
|
|
2389
2464
|
filterParts.push(`${quoteIdentifier("candidateId", "column name")} = ?`);
|
|
2390
2465
|
filterArgs.push(args.filters.candidateId);
|
|
2391
2466
|
}
|
|
2467
|
+
if (args.filters?.targetType !== void 0) {
|
|
2468
|
+
filterParts.push(`${quoteIdentifier("targetType", "column name")} = ?`);
|
|
2469
|
+
filterArgs.push(args.filters.targetType);
|
|
2470
|
+
}
|
|
2471
|
+
if (args.filters?.targetIds !== void 0 && args.filters.targetIds.length > 0) {
|
|
2472
|
+
const placeholders = args.filters.targetIds.map(() => "?").join(",");
|
|
2473
|
+
filterParts.push(`JSON_OVERLAPS(${quoteIdentifier("targetIds", "column name")}, JSON_ARRAY(${placeholders}))`);
|
|
2474
|
+
filterArgs.push(...args.filters.targetIds);
|
|
2475
|
+
}
|
|
2476
|
+
if (args.filters?.name !== void 0 && args.filters.name.length > 0) {
|
|
2477
|
+
filterParts.push(`LOWER(${quoteIdentifier("name", "column name")}) LIKE LOWER(?)`);
|
|
2478
|
+
filterArgs.push(`%${args.filters.name}%`);
|
|
2479
|
+
}
|
|
2392
2480
|
const whereClause = {
|
|
2393
2481
|
sql: filterParts.length > 0 ? `WHERE ${filterParts.join(" AND ")}` : "",
|
|
2394
2482
|
args: filterArgs
|
|
@@ -3280,7 +3368,11 @@ var ExperimentsMySQL = class _ExperimentsMySQL extends ExperimentsStorage {
|
|
|
3280
3368
|
try {
|
|
3281
3369
|
const row = await this.operations.load({
|
|
3282
3370
|
tableName: TABLE_EXPERIMENTS,
|
|
3283
|
-
keys: {
|
|
3371
|
+
keys: {
|
|
3372
|
+
id: args.id,
|
|
3373
|
+
organizationId: args.filters?.organizationId,
|
|
3374
|
+
projectId: args.filters?.projectId
|
|
3375
|
+
}
|
|
3284
3376
|
});
|
|
3285
3377
|
return row ? this.mapExperiment(row) : null;
|
|
3286
3378
|
} catch (error) {
|
|
@@ -3373,9 +3465,28 @@ var ExperimentsMySQL = class _ExperimentsMySQL extends ExperimentsStorage {
|
|
|
3373
3465
|
}
|
|
3374
3466
|
async deleteExperiment(args) {
|
|
3375
3467
|
try {
|
|
3468
|
+
const tenancyConditions = [];
|
|
3469
|
+
const tenancyParams = [];
|
|
3470
|
+
if (args.filters?.organizationId !== void 0) {
|
|
3471
|
+
tenancyConditions.push(`${quoteIdentifier("organizationId", "column name")} = ?`);
|
|
3472
|
+
tenancyParams.push(args.filters.organizationId);
|
|
3473
|
+
}
|
|
3474
|
+
if (args.filters?.projectId !== void 0) {
|
|
3475
|
+
tenancyConditions.push(`${quoteIdentifier("projectId", "column name")} = ?`);
|
|
3476
|
+
tenancyParams.push(args.filters.projectId);
|
|
3477
|
+
}
|
|
3478
|
+
const gateWhere = ["id = ?", ...tenancyConditions].join(" AND ");
|
|
3376
3479
|
const connection = await this.pool.getConnection();
|
|
3377
3480
|
try {
|
|
3378
3481
|
await connection.beginTransaction();
|
|
3482
|
+
const [gateRows] = await connection.execute(
|
|
3483
|
+
`SELECT id FROM ${formatTableName(TABLE_EXPERIMENTS)} WHERE ${gateWhere} FOR UPDATE`,
|
|
3484
|
+
[args.id, ...tenancyParams]
|
|
3485
|
+
);
|
|
3486
|
+
if (!Array.isArray(gateRows) || gateRows.length === 0) {
|
|
3487
|
+
await connection.commit();
|
|
3488
|
+
return;
|
|
3489
|
+
}
|
|
3379
3490
|
await connection.execute(
|
|
3380
3491
|
`DELETE FROM ${formatTableName(TABLE_EXPERIMENT_RESULTS)} WHERE ${quoteIdentifier("experimentId", "column name")} = ?`,
|
|
3381
3492
|
[args.id]
|
|
@@ -3482,7 +3593,11 @@ var ExperimentsMySQL = class _ExperimentsMySQL extends ExperimentsStorage {
|
|
|
3482
3593
|
try {
|
|
3483
3594
|
const row = await this.operations.load({
|
|
3484
3595
|
tableName: TABLE_EXPERIMENT_RESULTS,
|
|
3485
|
-
keys: {
|
|
3596
|
+
keys: {
|
|
3597
|
+
id: args.id,
|
|
3598
|
+
organizationId: args.filters?.organizationId,
|
|
3599
|
+
projectId: args.filters?.projectId
|
|
3600
|
+
}
|
|
3486
3601
|
});
|
|
3487
3602
|
return row ? this.mapExperimentResult(row) : null;
|
|
3488
3603
|
} catch (error) {
|
|
@@ -3636,6 +3751,24 @@ var ExperimentsMySQL = class _ExperimentsMySQL extends ExperimentsStorage {
|
|
|
3636
3751
|
}
|
|
3637
3752
|
async deleteExperimentResults(args) {
|
|
3638
3753
|
try {
|
|
3754
|
+
if (args.filters?.organizationId !== void 0 || args.filters?.projectId !== void 0) {
|
|
3755
|
+
const tenancyConditions = [];
|
|
3756
|
+
const tenancyParams = [];
|
|
3757
|
+
if (args.filters?.organizationId !== void 0) {
|
|
3758
|
+
tenancyConditions.push(`${quoteIdentifier("organizationId", "column name")} = ?`);
|
|
3759
|
+
tenancyParams.push(args.filters.organizationId);
|
|
3760
|
+
}
|
|
3761
|
+
if (args.filters?.projectId !== void 0) {
|
|
3762
|
+
tenancyConditions.push(`${quoteIdentifier("projectId", "column name")} = ?`);
|
|
3763
|
+
tenancyParams.push(args.filters.projectId);
|
|
3764
|
+
}
|
|
3765
|
+
const parentWhere = ["id = ?", ...tenancyConditions].join(" AND ");
|
|
3766
|
+
await this.pool.execute(
|
|
3767
|
+
`DELETE FROM ${formatTableName(TABLE_EXPERIMENT_RESULTS)} WHERE ${quoteIdentifier("experimentId", "column name")} IN (SELECT id FROM ${formatTableName(TABLE_EXPERIMENTS)} WHERE ${parentWhere})`,
|
|
3768
|
+
[args.experimentId, ...tenancyParams]
|
|
3769
|
+
);
|
|
3770
|
+
return;
|
|
3771
|
+
}
|
|
3639
3772
|
await this.pool.execute(
|
|
3640
3773
|
`DELETE FROM ${formatTableName(TABLE_EXPERIMENT_RESULTS)} WHERE ${quoteIdentifier("experimentId", "column name")} = ?`,
|
|
3641
3774
|
[args.experimentId]
|
|
@@ -8785,7 +8918,7 @@ var ScoresMySQL = class _ScoresMySQL extends ScoresStorage {
|
|
|
8785
8918
|
await this.operations.alterTable({
|
|
8786
8919
|
tableName: TABLE_SCORERS,
|
|
8787
8920
|
schema: SCORERS_SCHEMA,
|
|
8788
|
-
ifNotExists: ["spanId", "requestContext"]
|
|
8921
|
+
ifNotExists: ["spanId", "requestContext", "organizationId", "projectId", "batchId", "datasetId", "datasetItemId"]
|
|
8789
8922
|
});
|
|
8790
8923
|
await this.createDefaultIndexes();
|
|
8791
8924
|
await this.createCustomIndexes();
|
|
@@ -8860,6 +8993,11 @@ var ScoresMySQL = class _ScoresMySQL extends ScoresStorage {
|
|
|
8860
8993
|
entityId: row.entityId ?? void 0,
|
|
8861
8994
|
source: row.source ?? void 0,
|
|
8862
8995
|
resourceId: row.resourceId ?? void 0,
|
|
8996
|
+
organizationId: row.organizationId ?? void 0,
|
|
8997
|
+
projectId: row.projectId ?? void 0,
|
|
8998
|
+
batchId: row.batchId ?? void 0,
|
|
8999
|
+
datasetId: row.datasetId ?? void 0,
|
|
9000
|
+
datasetItemId: row.datasetItemId ?? void 0,
|
|
8863
9001
|
threadId: row.threadId ?? void 0,
|
|
8864
9002
|
createdAt: parseDateTime(row.createdAt) ?? /* @__PURE__ */ new Date(),
|
|
8865
9003
|
updatedAt: parseDateTime(row.updatedAt) ?? /* @__PURE__ */ new Date()
|
|
@@ -8895,6 +9033,11 @@ var ScoresMySQL = class _ScoresMySQL extends ScoresStorage {
|
|
|
8895
9033
|
entity: toJson(score.entity),
|
|
8896
9034
|
entityId: score.entityId ?? null,
|
|
8897
9035
|
resourceId: score.resourceId ?? null,
|
|
9036
|
+
organizationId: score.organizationId ?? null,
|
|
9037
|
+
projectId: score.projectId ?? null,
|
|
9038
|
+
batchId: score.batchId ?? null,
|
|
9039
|
+
datasetId: score.datasetId ?? null,
|
|
9040
|
+
datasetItemId: score.datasetItemId ?? null,
|
|
8898
9041
|
threadId: score.threadId ?? null,
|
|
8899
9042
|
source: score.source ?? null,
|
|
8900
9043
|
createdAt,
|
|
@@ -8998,33 +9141,74 @@ var ScoresMySQL = class _ScoresMySQL extends ScoresStorage {
|
|
|
8998
9141
|
pagination,
|
|
8999
9142
|
entityId,
|
|
9000
9143
|
entityType,
|
|
9001
|
-
source
|
|
9144
|
+
source,
|
|
9145
|
+
filters
|
|
9002
9146
|
}) {
|
|
9003
|
-
return this.fetchScores(
|
|
9147
|
+
return this.fetchScores(
|
|
9148
|
+
this.buildWhereClause({
|
|
9149
|
+
scorerId,
|
|
9150
|
+
entityId,
|
|
9151
|
+
entityType,
|
|
9152
|
+
source,
|
|
9153
|
+
organizationId: filters?.organizationId,
|
|
9154
|
+
projectId: filters?.projectId
|
|
9155
|
+
}),
|
|
9156
|
+
pagination
|
|
9157
|
+
);
|
|
9004
9158
|
}
|
|
9005
9159
|
async listScoresByRunId({
|
|
9006
9160
|
runId,
|
|
9007
9161
|
pagination,
|
|
9008
9162
|
entityId,
|
|
9009
9163
|
entityType,
|
|
9010
|
-
source
|
|
9164
|
+
source,
|
|
9165
|
+
filters
|
|
9011
9166
|
}) {
|
|
9012
|
-
return this.fetchScores(
|
|
9167
|
+
return this.fetchScores(
|
|
9168
|
+
this.buildWhereClause({
|
|
9169
|
+
runId,
|
|
9170
|
+
entityId,
|
|
9171
|
+
entityType,
|
|
9172
|
+
source,
|
|
9173
|
+
organizationId: filters?.organizationId,
|
|
9174
|
+
projectId: filters?.projectId
|
|
9175
|
+
}),
|
|
9176
|
+
pagination
|
|
9177
|
+
);
|
|
9013
9178
|
}
|
|
9014
9179
|
async listScoresBySpan({
|
|
9015
9180
|
traceId,
|
|
9016
9181
|
spanId,
|
|
9017
|
-
pagination
|
|
9182
|
+
pagination,
|
|
9183
|
+
filters
|
|
9018
9184
|
}) {
|
|
9019
|
-
return this.fetchScores(
|
|
9185
|
+
return this.fetchScores(
|
|
9186
|
+
this.buildWhereClause({
|
|
9187
|
+
traceId,
|
|
9188
|
+
spanId,
|
|
9189
|
+
organizationId: filters?.organizationId,
|
|
9190
|
+
projectId: filters?.projectId
|
|
9191
|
+
}),
|
|
9192
|
+
pagination
|
|
9193
|
+
);
|
|
9020
9194
|
}
|
|
9021
9195
|
async listScoresByEntityId({
|
|
9022
9196
|
entityId,
|
|
9023
9197
|
pagination,
|
|
9024
9198
|
entityType,
|
|
9025
|
-
source
|
|
9199
|
+
source,
|
|
9200
|
+
filters
|
|
9026
9201
|
}) {
|
|
9027
|
-
return this.fetchScores(
|
|
9202
|
+
return this.fetchScores(
|
|
9203
|
+
this.buildWhereClause({
|
|
9204
|
+
entityId,
|
|
9205
|
+
entityType,
|
|
9206
|
+
source,
|
|
9207
|
+
organizationId: filters?.organizationId,
|
|
9208
|
+
projectId: filters?.projectId
|
|
9209
|
+
}),
|
|
9210
|
+
pagination
|
|
9211
|
+
);
|
|
9028
9212
|
}
|
|
9029
9213
|
};
|
|
9030
9214
|
var SNAPSHOT_FIELDS = [
|