@agentforge/tools 0.16.38 → 0.16.39
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.cjs +53 -112
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +16 -36
- package/dist/index.d.ts +16 -36
- package/dist/index.js +53 -112
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -5092,11 +5092,9 @@ function rowsHaveHomogeneousColumns(rows) {
|
|
|
5092
5092
|
function buildSingleRowInsert(table, row, vendor) {
|
|
5093
5093
|
const columns = Object.keys(row);
|
|
5094
5094
|
if (columns.length === 0) {
|
|
5095
|
-
|
|
5096
|
-
return drizzleOrm.sql.raw(`INSERT INTO ${quotedTable2} DEFAULT VALUES`);
|
|
5095
|
+
return drizzleOrm.sql.raw(`INSERT INTO ${quoteQualifiedIdentifier(table, vendor)} DEFAULT VALUES`);
|
|
5097
5096
|
}
|
|
5098
5097
|
columns.forEach((column) => validateIdentifier(column, "Insert column"));
|
|
5099
|
-
const quotedTable = quoteQualifiedIdentifier(table, vendor);
|
|
5100
5098
|
const quotedColumns = columns.map((column) => quoteIdentifier(column, vendor)).join(", ");
|
|
5101
5099
|
const valueFragments = columns.map((column) => {
|
|
5102
5100
|
const value = row[column];
|
|
@@ -5107,7 +5105,9 @@ function buildSingleRowInsert(table, row, vendor) {
|
|
|
5107
5105
|
});
|
|
5108
5106
|
return drizzleOrm.sql.join(
|
|
5109
5107
|
[
|
|
5110
|
-
drizzleOrm.sql.raw(
|
|
5108
|
+
drizzleOrm.sql.raw(
|
|
5109
|
+
`INSERT INTO ${quoteQualifiedIdentifier(table, vendor)} (${quotedColumns}) VALUES (`
|
|
5110
|
+
),
|
|
5111
5111
|
drizzleOrm.sql.join(valueFragments, drizzleOrm.sql.raw(", ")),
|
|
5112
5112
|
drizzleOrm.sql.raw(")")
|
|
5113
5113
|
],
|
|
@@ -5118,12 +5118,13 @@ function buildInsertValuesQuery(table, columns, rows, vendor) {
|
|
|
5118
5118
|
if (vendor === "sqlite" && !rowsHaveHomogeneousColumns(rows)) {
|
|
5119
5119
|
return rows.map((row) => buildSingleRowInsert(table, row, vendor));
|
|
5120
5120
|
}
|
|
5121
|
-
const quotedTable = quoteQualifiedIdentifier(table, vendor);
|
|
5122
5121
|
const quotedColumns = columns.map((column) => quoteIdentifier(column, vendor)).join(", ");
|
|
5123
5122
|
const rowTuples = rows.map((row) => buildValuesTuple(columns, row));
|
|
5124
5123
|
return drizzleOrm.sql.join(
|
|
5125
5124
|
[
|
|
5126
|
-
drizzleOrm.sql.raw(
|
|
5125
|
+
drizzleOrm.sql.raw(
|
|
5126
|
+
`INSERT INTO ${quoteQualifiedIdentifier(table, vendor)} (${quotedColumns}) VALUES `
|
|
5127
|
+
),
|
|
5127
5128
|
drizzleOrm.sql.join(rowTuples, drizzleOrm.sql.raw(", "))
|
|
5128
5129
|
],
|
|
5129
5130
|
drizzleOrm.sql.raw("")
|
|
@@ -5133,8 +5134,7 @@ function buildInsertDefaultValuesQuery(table, rowCount, vendor) {
|
|
|
5133
5134
|
if (rowCount > 1) {
|
|
5134
5135
|
throw new Error("Batch INSERT with only DEFAULT VALUES is not supported");
|
|
5135
5136
|
}
|
|
5136
|
-
|
|
5137
|
-
return drizzleOrm.sql.raw(`INSERT INTO ${quotedTable} DEFAULT VALUES`);
|
|
5137
|
+
return drizzleOrm.sql.raw(`INSERT INTO ${quoteQualifiedIdentifier(table, vendor)} DEFAULT VALUES`);
|
|
5138
5138
|
}
|
|
5139
5139
|
function buildInsertQuery(input) {
|
|
5140
5140
|
validateQualifiedIdentifier(input.table, "Table name");
|
|
@@ -5157,9 +5157,7 @@ function buildInsertQuery(input) {
|
|
|
5157
5157
|
let queries = valuesResult;
|
|
5158
5158
|
if (returningMode !== "none" && supportsReturning) {
|
|
5159
5159
|
const returningClause = returningMode === "id" ? drizzleOrm.sql.raw(` RETURNING ${quoteIdentifier(idColumn, input.vendor)}`) : drizzleOrm.sql.raw(" RETURNING *");
|
|
5160
|
-
queries = queries.map(
|
|
5161
|
-
(q) => drizzleOrm.sql.join([q, returningClause], drizzleOrm.sql.raw(""))
|
|
5162
|
-
);
|
|
5160
|
+
queries = queries.map((query2) => drizzleOrm.sql.join([query2, returningClause], drizzleOrm.sql.raw("")));
|
|
5163
5161
|
}
|
|
5164
5162
|
return {
|
|
5165
5163
|
query: queries,
|
|
@@ -5171,14 +5169,10 @@ function buildInsertQuery(input) {
|
|
|
5171
5169
|
}
|
|
5172
5170
|
let query = valuesResult;
|
|
5173
5171
|
if (returningMode !== "none" && supportsReturning) {
|
|
5174
|
-
|
|
5175
|
-
query
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
);
|
|
5179
|
-
} else {
|
|
5180
|
-
query = drizzleOrm.sql.join([query, drizzleOrm.sql.raw(" RETURNING *")], drizzleOrm.sql.raw(""));
|
|
5181
|
-
}
|
|
5172
|
+
query = returningMode === "id" ? drizzleOrm.sql.join(
|
|
5173
|
+
[query, drizzleOrm.sql.raw(` RETURNING ${quoteIdentifier(idColumn, input.vendor)}`)],
|
|
5174
|
+
drizzleOrm.sql.raw("")
|
|
5175
|
+
) : drizzleOrm.sql.join([query, drizzleOrm.sql.raw(" RETURNING *")], drizzleOrm.sql.raw(""));
|
|
5182
5176
|
}
|
|
5183
5177
|
return {
|
|
5184
5178
|
query,
|
|
@@ -5188,23 +5182,7 @@ function buildInsertQuery(input) {
|
|
|
5188
5182
|
supportsReturning
|
|
5189
5183
|
};
|
|
5190
5184
|
}
|
|
5191
|
-
function
|
|
5192
|
-
if (!data || typeof data !== "object" || Array.isArray(data)) {
|
|
5193
|
-
throw new Error("Update data must be an object");
|
|
5194
|
-
}
|
|
5195
|
-
const keys = Object.keys(data);
|
|
5196
|
-
if (keys.length === 0) {
|
|
5197
|
-
throw new Error("Update data must not be empty");
|
|
5198
|
-
}
|
|
5199
|
-
keys.forEach((column) => {
|
|
5200
|
-
validateIdentifier(column, "Update column");
|
|
5201
|
-
if (data[column] === void 0) {
|
|
5202
|
-
throw new Error(`Update value for column "${column}" must not be undefined`);
|
|
5203
|
-
}
|
|
5204
|
-
});
|
|
5205
|
-
return data;
|
|
5206
|
-
}
|
|
5207
|
-
function buildUpdateWhereCondition(condition, vendor) {
|
|
5185
|
+
function buildWhereCondition(condition, vendor) {
|
|
5208
5186
|
validateIdentifier(condition.column, "WHERE column");
|
|
5209
5187
|
const column = drizzleOrm.sql.raw(quoteIdentifier(condition.column, vendor));
|
|
5210
5188
|
switch (condition.operator) {
|
|
@@ -5253,12 +5231,12 @@ function buildUpdateWhereCondition(condition, vendor) {
|
|
|
5253
5231
|
if (!Array.isArray(condition.value) || condition.value.length === 0) {
|
|
5254
5232
|
throw new Error(`IN operator requires a non-empty array value for column ${condition.column}`);
|
|
5255
5233
|
}
|
|
5256
|
-
return drizzleOrm.sql`${column} IN (${drizzleOrm.sql.join(condition.value.map((
|
|
5234
|
+
return drizzleOrm.sql`${column} IN (${drizzleOrm.sql.join(condition.value.map((value) => drizzleOrm.sql`${value}`), drizzleOrm.sql.raw(", "))})`;
|
|
5257
5235
|
case "notIn":
|
|
5258
5236
|
if (!Array.isArray(condition.value) || condition.value.length === 0) {
|
|
5259
5237
|
throw new Error(`NOT IN operator requires a non-empty array value for column ${condition.column}`);
|
|
5260
5238
|
}
|
|
5261
|
-
return drizzleOrm.sql`${column} NOT IN (${drizzleOrm.sql.join(condition.value.map((
|
|
5239
|
+
return drizzleOrm.sql`${column} NOT IN (${drizzleOrm.sql.join(condition.value.map((value) => drizzleOrm.sql`${value}`), drizzleOrm.sql.raw(", "))})`;
|
|
5262
5240
|
case "isNull":
|
|
5263
5241
|
if (condition.value !== void 0) {
|
|
5264
5242
|
throw new Error(`IS NULL operator must not include value for column ${condition.column}`);
|
|
@@ -5271,6 +5249,24 @@ function buildUpdateWhereCondition(condition, vendor) {
|
|
|
5271
5249
|
return drizzleOrm.sql`${column} IS NOT NULL`;
|
|
5272
5250
|
}
|
|
5273
5251
|
}
|
|
5252
|
+
|
|
5253
|
+
// src/data/relational/query/query-builder-mutation.ts
|
|
5254
|
+
function normalizeUpdateData(data) {
|
|
5255
|
+
if (!data || typeof data !== "object" || Array.isArray(data)) {
|
|
5256
|
+
throw new Error("Update data must be an object");
|
|
5257
|
+
}
|
|
5258
|
+
const keys = Object.keys(data);
|
|
5259
|
+
if (keys.length === 0) {
|
|
5260
|
+
throw new Error("Update data must not be empty");
|
|
5261
|
+
}
|
|
5262
|
+
keys.forEach((column) => {
|
|
5263
|
+
validateIdentifier(column, "Update column");
|
|
5264
|
+
if (data[column] === void 0) {
|
|
5265
|
+
throw new Error(`Update value for column "${column}" must not be undefined`);
|
|
5266
|
+
}
|
|
5267
|
+
});
|
|
5268
|
+
return data;
|
|
5269
|
+
}
|
|
5274
5270
|
function buildUpdateQuery(input) {
|
|
5275
5271
|
validateQualifiedIdentifier(input.table, "Table name");
|
|
5276
5272
|
const normalizedData = normalizeUpdateData(input.data);
|
|
@@ -5279,7 +5275,7 @@ function buildUpdateQuery(input) {
|
|
|
5279
5275
|
return drizzleOrm.sql`${quotedColumn} = ${value}`;
|
|
5280
5276
|
});
|
|
5281
5277
|
const whereConditions = (input.where ?? []).map(
|
|
5282
|
-
(condition) =>
|
|
5278
|
+
(condition) => buildWhereCondition(condition, input.vendor)
|
|
5283
5279
|
);
|
|
5284
5280
|
if (input.optimisticLock) {
|
|
5285
5281
|
validateIdentifier(input.optimisticLock.column, "Optimistic lock column");
|
|
@@ -5290,7 +5286,9 @@ function buildUpdateQuery(input) {
|
|
|
5290
5286
|
whereConditions.push(drizzleOrm.sql`${lockColumn} = ${input.optimisticLock.expectedValue}`);
|
|
5291
5287
|
}
|
|
5292
5288
|
if (whereConditions.length === 0 && !input.allowFullTableUpdate) {
|
|
5293
|
-
throw new Error(
|
|
5289
|
+
throw new Error(
|
|
5290
|
+
"WHERE conditions are required for UPDATE queries. Set allowFullTableUpdate=true to override."
|
|
5291
|
+
);
|
|
5294
5292
|
}
|
|
5295
5293
|
let query = drizzleOrm.sql.join(
|
|
5296
5294
|
[
|
|
@@ -5300,7 +5298,10 @@ function buildUpdateQuery(input) {
|
|
|
5300
5298
|
drizzleOrm.sql.raw("")
|
|
5301
5299
|
);
|
|
5302
5300
|
if (whereConditions.length > 0) {
|
|
5303
|
-
query = drizzleOrm.sql.join(
|
|
5301
|
+
query = drizzleOrm.sql.join(
|
|
5302
|
+
[query, drizzleOrm.sql.raw(" WHERE "), drizzleOrm.sql.join(whereConditions, drizzleOrm.sql.raw(" AND "))],
|
|
5303
|
+
drizzleOrm.sql.raw("")
|
|
5304
|
+
);
|
|
5304
5305
|
}
|
|
5305
5306
|
return {
|
|
5306
5307
|
query,
|
|
@@ -5311,10 +5312,12 @@ function buildUpdateQuery(input) {
|
|
|
5311
5312
|
function buildDeleteQuery(input) {
|
|
5312
5313
|
validateQualifiedIdentifier(input.table, "Table name");
|
|
5313
5314
|
const whereConditions = (input.where ?? []).map(
|
|
5314
|
-
(condition) =>
|
|
5315
|
+
(condition) => buildWhereCondition(condition, input.vendor)
|
|
5315
5316
|
);
|
|
5316
5317
|
if (whereConditions.length === 0 && !input.allowFullTableDelete) {
|
|
5317
|
-
throw new Error(
|
|
5318
|
+
throw new Error(
|
|
5319
|
+
"WHERE conditions are required for DELETE queries. Set allowFullTableDelete=true to override."
|
|
5320
|
+
);
|
|
5318
5321
|
}
|
|
5319
5322
|
const softDeleteColumn = input.softDelete?.column ?? "deleted_at";
|
|
5320
5323
|
const softDeleteValue = input.softDelete?.value ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -5333,7 +5336,10 @@ function buildDeleteQuery(input) {
|
|
|
5333
5336
|
query = drizzleOrm.sql.raw(`DELETE FROM ${quoteQualifiedIdentifier(input.table, input.vendor)}`);
|
|
5334
5337
|
}
|
|
5335
5338
|
if (whereConditions.length > 0) {
|
|
5336
|
-
query = drizzleOrm.sql.join(
|
|
5339
|
+
query = drizzleOrm.sql.join(
|
|
5340
|
+
[query, drizzleOrm.sql.raw(" WHERE "), drizzleOrm.sql.join(whereConditions, drizzleOrm.sql.raw(" AND "))],
|
|
5341
|
+
drizzleOrm.sql.raw("")
|
|
5342
|
+
);
|
|
5337
5343
|
}
|
|
5338
5344
|
return {
|
|
5339
5345
|
query,
|
|
@@ -5342,73 +5348,6 @@ function buildDeleteQuery(input) {
|
|
|
5342
5348
|
softDeleteColumn: input.softDelete ? softDeleteColumn : void 0
|
|
5343
5349
|
};
|
|
5344
5350
|
}
|
|
5345
|
-
function buildSelectWhereCondition(condition, vendor) {
|
|
5346
|
-
validateIdentifier(condition.column, "WHERE column");
|
|
5347
|
-
const column = drizzleOrm.sql.raw(quoteIdentifier(condition.column, vendor));
|
|
5348
|
-
switch (condition.operator) {
|
|
5349
|
-
case "eq":
|
|
5350
|
-
if (condition.value === void 0) {
|
|
5351
|
-
throw new Error(`EQ operator requires a value for column ${condition.column}`);
|
|
5352
|
-
}
|
|
5353
|
-
if (condition.value === null) {
|
|
5354
|
-
throw new Error("null is only allowed with isNull/isNotNull operators");
|
|
5355
|
-
}
|
|
5356
|
-
return drizzleOrm.sql`${column} = ${condition.value}`;
|
|
5357
|
-
case "ne":
|
|
5358
|
-
if (condition.value === void 0) {
|
|
5359
|
-
throw new Error(`NE operator requires a value for column ${condition.column}`);
|
|
5360
|
-
}
|
|
5361
|
-
if (condition.value === null) {
|
|
5362
|
-
throw new Error("null is only allowed with isNull/isNotNull operators");
|
|
5363
|
-
}
|
|
5364
|
-
return drizzleOrm.sql`${column} != ${condition.value}`;
|
|
5365
|
-
case "gt":
|
|
5366
|
-
if (typeof condition.value !== "string" && typeof condition.value !== "number") {
|
|
5367
|
-
throw new Error(`GT operator requires a string or number value for column ${condition.column}`);
|
|
5368
|
-
}
|
|
5369
|
-
return drizzleOrm.sql`${column} > ${condition.value}`;
|
|
5370
|
-
case "lt":
|
|
5371
|
-
if (typeof condition.value !== "string" && typeof condition.value !== "number") {
|
|
5372
|
-
throw new Error(`LT operator requires a string or number value for column ${condition.column}`);
|
|
5373
|
-
}
|
|
5374
|
-
return drizzleOrm.sql`${column} < ${condition.value}`;
|
|
5375
|
-
case "gte":
|
|
5376
|
-
if (typeof condition.value !== "string" && typeof condition.value !== "number") {
|
|
5377
|
-
throw new Error(`GTE operator requires a string or number value for column ${condition.column}`);
|
|
5378
|
-
}
|
|
5379
|
-
return drizzleOrm.sql`${column} >= ${condition.value}`;
|
|
5380
|
-
case "lte":
|
|
5381
|
-
if (typeof condition.value !== "string" && typeof condition.value !== "number") {
|
|
5382
|
-
throw new Error(`LTE operator requires a string or number value for column ${condition.column}`);
|
|
5383
|
-
}
|
|
5384
|
-
return drizzleOrm.sql`${column} <= ${condition.value}`;
|
|
5385
|
-
case "like":
|
|
5386
|
-
if (typeof condition.value !== "string") {
|
|
5387
|
-
throw new Error(`LIKE operator requires a string value for column ${condition.column}`);
|
|
5388
|
-
}
|
|
5389
|
-
return drizzleOrm.sql`${column} LIKE ${condition.value}`;
|
|
5390
|
-
case "in":
|
|
5391
|
-
if (!Array.isArray(condition.value) || condition.value.length === 0) {
|
|
5392
|
-
throw new Error(`IN operator requires a non-empty array value for column ${condition.column}`);
|
|
5393
|
-
}
|
|
5394
|
-
return drizzleOrm.sql`${column} IN (${drizzleOrm.sql.join(condition.value.map((v) => drizzleOrm.sql`${v}`), drizzleOrm.sql.raw(", "))})`;
|
|
5395
|
-
case "notIn":
|
|
5396
|
-
if (!Array.isArray(condition.value) || condition.value.length === 0) {
|
|
5397
|
-
throw new Error(`NOT IN operator requires a non-empty array value for column ${condition.column}`);
|
|
5398
|
-
}
|
|
5399
|
-
return drizzleOrm.sql`${column} NOT IN (${drizzleOrm.sql.join(condition.value.map((v) => drizzleOrm.sql`${v}`), drizzleOrm.sql.raw(", "))})`;
|
|
5400
|
-
case "isNull":
|
|
5401
|
-
if (condition.value !== void 0) {
|
|
5402
|
-
throw new Error(`IS NULL operator must not include value for column ${condition.column}`);
|
|
5403
|
-
}
|
|
5404
|
-
return drizzleOrm.sql`${column} IS NULL`;
|
|
5405
|
-
case "isNotNull":
|
|
5406
|
-
if (condition.value !== void 0) {
|
|
5407
|
-
throw new Error(`IS NOT NULL operator must not include value for column ${condition.column}`);
|
|
5408
|
-
}
|
|
5409
|
-
return drizzleOrm.sql`${column} IS NOT NULL`;
|
|
5410
|
-
}
|
|
5411
|
-
}
|
|
5412
5351
|
function buildSelectQuery(input) {
|
|
5413
5352
|
validateQualifiedIdentifier(input.table, "Table name");
|
|
5414
5353
|
let query = drizzleOrm.sql.raw("SELECT ");
|
|
@@ -5426,7 +5365,9 @@ function buildSelectQuery(input) {
|
|
|
5426
5365
|
drizzleOrm.sql.raw("")
|
|
5427
5366
|
);
|
|
5428
5367
|
if (input.where && input.where.length > 0) {
|
|
5429
|
-
const whereConditions = input.where.map(
|
|
5368
|
+
const whereConditions = input.where.map(
|
|
5369
|
+
(condition) => buildWhereCondition(condition, input.vendor)
|
|
5370
|
+
);
|
|
5430
5371
|
query = drizzleOrm.sql.join(
|
|
5431
5372
|
[query, drizzleOrm.sql.raw(" WHERE "), drizzleOrm.sql.join(whereConditions, drizzleOrm.sql.raw(" AND "))],
|
|
5432
5373
|
drizzleOrm.sql.raw("")
|