forge-sql-orm 2.1.12 → 2.1.14
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/README.md +922 -549
- package/dist/core/ForgeSQLAnalyseOperations.d.ts.map +1 -1
- package/dist/core/ForgeSQLAnalyseOperations.js +257 -0
- package/dist/core/ForgeSQLAnalyseOperations.js.map +1 -0
- package/dist/core/ForgeSQLCacheOperations.js +172 -0
- package/dist/core/ForgeSQLCacheOperations.js.map +1 -0
- package/dist/core/ForgeSQLCrudOperations.js +349 -0
- package/dist/core/ForgeSQLCrudOperations.js.map +1 -0
- package/dist/core/ForgeSQLORM.d.ts +29 -1
- package/dist/core/ForgeSQLORM.d.ts.map +1 -1
- package/dist/core/ForgeSQLORM.js +1252 -0
- package/dist/core/ForgeSQLORM.js.map +1 -0
- package/dist/core/ForgeSQLQueryBuilder.d.ts +179 -1
- package/dist/core/ForgeSQLQueryBuilder.d.ts.map +1 -1
- package/dist/core/ForgeSQLQueryBuilder.js +77 -0
- package/dist/core/ForgeSQLQueryBuilder.js.map +1 -0
- package/dist/core/ForgeSQLSelectOperations.js +81 -0
- package/dist/core/ForgeSQLSelectOperations.js.map +1 -0
- package/dist/core/Rovo.d.ts +116 -0
- package/dist/core/Rovo.d.ts.map +1 -0
- package/dist/core/Rovo.js +647 -0
- package/dist/core/Rovo.js.map +1 -0
- package/dist/core/SystemTables.js +258 -0
- package/dist/core/SystemTables.js.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/drizzle/extensions/additionalActions.d.ts.map +1 -1
- package/dist/lib/drizzle/extensions/additionalActions.js +527 -0
- package/dist/lib/drizzle/extensions/additionalActions.js.map +1 -0
- package/dist/utils/cacheContextUtils.d.ts.map +1 -1
- package/dist/utils/cacheContextUtils.js +198 -0
- package/dist/utils/cacheContextUtils.js.map +1 -0
- package/dist/utils/cacheUtils.d.ts.map +1 -1
- package/dist/utils/cacheUtils.js +383 -0
- package/dist/utils/cacheUtils.js.map +1 -0
- package/dist/utils/forgeDriver.d.ts.map +1 -1
- package/dist/utils/forgeDriver.js +139 -0
- package/dist/utils/forgeDriver.js.map +1 -0
- package/dist/utils/forgeDriverProxy.js +68 -0
- package/dist/utils/forgeDriverProxy.js.map +1 -0
- package/dist/utils/metadataContextUtils.d.ts.map +1 -1
- package/dist/utils/metadataContextUtils.js +26 -0
- package/dist/utils/metadataContextUtils.js.map +1 -0
- package/dist/utils/requestTypeContextUtils.js +10 -0
- package/dist/utils/requestTypeContextUtils.js.map +1 -0
- package/dist/utils/sqlHints.js +52 -0
- package/dist/utils/sqlHints.js.map +1 -0
- package/dist/utils/sqlUtils.d.ts.map +1 -1
- package/dist/utils/sqlUtils.js +590 -0
- package/dist/utils/sqlUtils.js.map +1 -0
- package/dist/webtriggers/applyMigrationsWebTrigger.js +77 -0
- package/dist/webtriggers/applyMigrationsWebTrigger.js.map +1 -0
- package/dist/webtriggers/clearCacheSchedulerTrigger.js +83 -0
- package/dist/webtriggers/clearCacheSchedulerTrigger.js.map +1 -0
- package/dist/webtriggers/dropMigrationWebTrigger.js +54 -0
- package/dist/webtriggers/dropMigrationWebTrigger.js.map +1 -0
- package/dist/webtriggers/dropTablesMigrationWebTrigger.js +54 -0
- package/dist/webtriggers/dropTablesMigrationWebTrigger.js.map +1 -0
- package/dist/webtriggers/fetchSchemaWebTrigger.js +82 -0
- package/dist/webtriggers/fetchSchemaWebTrigger.js.map +1 -0
- package/dist/webtriggers/index.js +40 -0
- package/dist/webtriggers/index.js.map +1 -0
- package/dist/webtriggers/slowQuerySchedulerTrigger.js +80 -0
- package/dist/webtriggers/slowQuerySchedulerTrigger.js.map +1 -0
- package/package.json +31 -25
- package/src/core/ForgeSQLAnalyseOperations.ts +3 -2
- package/src/core/ForgeSQLORM.ts +64 -0
- package/src/core/ForgeSQLQueryBuilder.ts +200 -1
- package/src/core/Rovo.ts +765 -0
- package/src/lib/drizzle/extensions/additionalActions.ts +11 -0
- package/src/utils/cacheContextUtils.ts +9 -6
- package/src/utils/cacheUtils.ts +6 -4
- package/src/utils/forgeDriver.ts +3 -7
- package/src/utils/metadataContextUtils.ts +1 -3
- package/src/utils/sqlUtils.ts +33 -34
- package/dist/ForgeSQLORM.js +0 -3922
- package/dist/ForgeSQLORM.js.map +0 -1
- package/dist/ForgeSQLORM.mjs +0 -3905
- package/dist/ForgeSQLORM.mjs.map +0 -1
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForgeSQLCrudOperations = void 0;
|
|
4
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
5
|
+
const sqlUtils_1 = require("../utils/sqlUtils");
|
|
6
|
+
const cacheContextUtils_1 = require("../utils/cacheContextUtils");
|
|
7
|
+
/**
|
|
8
|
+
* Class implementing Modification operations for ForgeSQL ORM.
|
|
9
|
+
* Provides methods for inserting, updating, and deleting records with support for optimistic locking.
|
|
10
|
+
*/
|
|
11
|
+
class ForgeSQLCrudOperations {
|
|
12
|
+
forgeOperations;
|
|
13
|
+
options;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a new instance of ForgeSQLCrudOperations.
|
|
16
|
+
* @param forgeSqlOperations - The ForgeSQL operations instance
|
|
17
|
+
* @param options - Configuration options for the ORM
|
|
18
|
+
*/
|
|
19
|
+
constructor(forgeSqlOperations, options) {
|
|
20
|
+
this.forgeOperations = forgeSqlOperations;
|
|
21
|
+
this.options = options;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Inserts records into the database with optional versioning support.
|
|
25
|
+
* If a version field exists in the schema, versioning is applied.
|
|
26
|
+
*
|
|
27
|
+
* This method automatically handles:
|
|
28
|
+
* - Version field initialization for optimistic locking
|
|
29
|
+
* - Batch insertion for multiple records
|
|
30
|
+
* - Duplicate key handling with optional updates
|
|
31
|
+
*
|
|
32
|
+
* @template T - The type of the table schema
|
|
33
|
+
* @param schema - The entity schema
|
|
34
|
+
* @param models - Array of entities to insert
|
|
35
|
+
* @param updateIfExists - Whether to update existing records (default: false)
|
|
36
|
+
* @returns Promise that resolves to the number of inserted rows
|
|
37
|
+
* @throws Error if the insert operation fails
|
|
38
|
+
*/
|
|
39
|
+
async insert(schema, models, updateIfExists = false) {
|
|
40
|
+
if (!models?.length)
|
|
41
|
+
return 0;
|
|
42
|
+
const { tableName, columns } = (0, sqlUtils_1.getTableMetadata)(schema);
|
|
43
|
+
const versionMetadata = this.validateVersionField(tableName, columns);
|
|
44
|
+
// Prepare models with version field if needed
|
|
45
|
+
const preparedModels = models.map((model) => this.prepareModelWithVersion(model, versionMetadata, columns));
|
|
46
|
+
// Build insert query
|
|
47
|
+
const queryBuilder = this.forgeOperations.insert(schema).values(preparedModels);
|
|
48
|
+
// Add onDuplicateKeyUpdate if needed
|
|
49
|
+
const finalQuery = updateIfExists
|
|
50
|
+
? queryBuilder.onDuplicateKeyUpdate({
|
|
51
|
+
set: Object.fromEntries(Object.keys(preparedModels[0]).map((key) => [key, schema[key]])),
|
|
52
|
+
})
|
|
53
|
+
: queryBuilder;
|
|
54
|
+
// Execute query
|
|
55
|
+
const result = await finalQuery;
|
|
56
|
+
await (0, cacheContextUtils_1.saveTableIfInsideCacheContext)(schema);
|
|
57
|
+
return result[0].insertId;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Deletes a record by its primary key with optional version check.
|
|
61
|
+
* If versioning is enabled, ensures the record hasn't been modified since last read.
|
|
62
|
+
*
|
|
63
|
+
* This method automatically handles:
|
|
64
|
+
* - Single primary key validation
|
|
65
|
+
* - Optimistic locking checks if versioning is enabled
|
|
66
|
+
* - Version field validation before deletion
|
|
67
|
+
*
|
|
68
|
+
* @template T - The type of the table schema
|
|
69
|
+
* @param id - The ID of the record to delete
|
|
70
|
+
* @param schema - The entity schema
|
|
71
|
+
* @returns Promise that resolves to the number of affected rows
|
|
72
|
+
* @throws Error if the delete operation fails
|
|
73
|
+
* @throws Error if multiple primary keys are found
|
|
74
|
+
* @throws Error if optimistic locking check fails
|
|
75
|
+
*/
|
|
76
|
+
async deleteById(id, schema) {
|
|
77
|
+
const { tableName, columns } = (0, sqlUtils_1.getTableMetadata)(schema);
|
|
78
|
+
const primaryKeys = this.getPrimaryKeys(schema);
|
|
79
|
+
if (primaryKeys.length !== 1) {
|
|
80
|
+
throw new Error("Only single primary key is supported");
|
|
81
|
+
}
|
|
82
|
+
const [primaryKeyName, primaryKeyColumn] = primaryKeys[0];
|
|
83
|
+
const versionMetadata = this.validateVersionField(tableName, columns);
|
|
84
|
+
// Build delete conditions
|
|
85
|
+
const conditions = [(0, drizzle_orm_1.eq)(primaryKeyColumn, id)];
|
|
86
|
+
// Add version check if needed
|
|
87
|
+
if (versionMetadata && columns) {
|
|
88
|
+
const versionField = columns[versionMetadata.fieldName];
|
|
89
|
+
if (versionField) {
|
|
90
|
+
const oldModel = await this.getOldModel({ [primaryKeyName]: id }, schema, [
|
|
91
|
+
versionMetadata.fieldName,
|
|
92
|
+
versionField,
|
|
93
|
+
]);
|
|
94
|
+
conditions.push((0, drizzle_orm_1.eq)(versionField, oldModel[versionMetadata.fieldName]));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Execute delete query
|
|
98
|
+
const queryBuilder = this.forgeOperations.delete(schema).where((0, drizzle_orm_1.and)(...conditions));
|
|
99
|
+
const result = await queryBuilder;
|
|
100
|
+
if (versionMetadata && result[0].affectedRows === 0) {
|
|
101
|
+
throw new Error(`Optimistic locking failed: record with primary key ${id} has been modified`);
|
|
102
|
+
}
|
|
103
|
+
await (0, cacheContextUtils_1.saveTableIfInsideCacheContext)(schema);
|
|
104
|
+
return result[0].affectedRows;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Updates a record by its primary key with optimistic locking support.
|
|
108
|
+
* If versioning is enabled:
|
|
109
|
+
* - Retrieves the current version
|
|
110
|
+
* - Checks for concurrent modifications
|
|
111
|
+
* - Increments the version on successful update
|
|
112
|
+
*
|
|
113
|
+
* This method automatically handles:
|
|
114
|
+
* - Primary key validation
|
|
115
|
+
* - Version field retrieval and validation
|
|
116
|
+
* - Optimistic locking conflict detection
|
|
117
|
+
* - Version field incrementation
|
|
118
|
+
*
|
|
119
|
+
* @template T - The type of the table schema
|
|
120
|
+
* @param entity - The entity with updated values (must include primary key)
|
|
121
|
+
* @param schema - The entity schema
|
|
122
|
+
* @returns Promise that resolves to the number of affected rows
|
|
123
|
+
* @throws Error if the primary key is not provided
|
|
124
|
+
* @throws Error if optimistic locking check fails
|
|
125
|
+
* @throws Error if multiple primary keys are found
|
|
126
|
+
*/
|
|
127
|
+
async updateById(entity, schema) {
|
|
128
|
+
const { tableName, columns } = (0, sqlUtils_1.getTableMetadata)(schema);
|
|
129
|
+
const primaryKeys = this.getPrimaryKeys(schema);
|
|
130
|
+
if (primaryKeys.length !== 1) {
|
|
131
|
+
throw new Error("Only single primary key is supported");
|
|
132
|
+
}
|
|
133
|
+
const [primaryKeyName, primaryKeyColumn] = primaryKeys[0];
|
|
134
|
+
const versionMetadata = this.validateVersionField(tableName, columns);
|
|
135
|
+
// Validate primary key
|
|
136
|
+
if (!(primaryKeyName in entity)) {
|
|
137
|
+
throw new Error(`Primary key ${primaryKeyName} must be provided in the entity`);
|
|
138
|
+
}
|
|
139
|
+
// Get current version if needed
|
|
140
|
+
const currentVersion = await this.getCurrentVersion(entity, primaryKeyName, versionMetadata, columns, schema);
|
|
141
|
+
// Prepare update data with version
|
|
142
|
+
const updateData = this.prepareUpdateData(entity, versionMetadata, columns, currentVersion);
|
|
143
|
+
// Build update conditions
|
|
144
|
+
const conditions = [
|
|
145
|
+
(0, drizzle_orm_1.eq)(primaryKeyColumn, entity[primaryKeyName]),
|
|
146
|
+
];
|
|
147
|
+
if (versionMetadata && columns) {
|
|
148
|
+
const versionField = columns[versionMetadata.fieldName];
|
|
149
|
+
if (versionField) {
|
|
150
|
+
conditions.push((0, drizzle_orm_1.eq)(versionField, currentVersion));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Execute update query
|
|
154
|
+
const queryBuilder = this.forgeOperations
|
|
155
|
+
.update(schema)
|
|
156
|
+
.set(updateData)
|
|
157
|
+
.where((0, drizzle_orm_1.and)(...conditions));
|
|
158
|
+
const result = await queryBuilder;
|
|
159
|
+
// Check optimistic locking
|
|
160
|
+
if (versionMetadata && result[0].affectedRows === 0) {
|
|
161
|
+
throw new Error(`Optimistic locking failed: record with primary key ${entity[primaryKeyName]} has been modified`);
|
|
162
|
+
}
|
|
163
|
+
await (0, cacheContextUtils_1.saveTableIfInsideCacheContext)(schema);
|
|
164
|
+
return result[0].affectedRows;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Updates specified fields of records based on provided conditions.
|
|
168
|
+
* This method does not support versioning and should be used with caution.
|
|
169
|
+
*
|
|
170
|
+
* @template T - The type of the table schema
|
|
171
|
+
* @param {Partial<InferInsertModel<T>>} updateData - The data to update
|
|
172
|
+
* @param {T} schema - The entity schema
|
|
173
|
+
* @param {SQL<unknown>} where - The WHERE conditions
|
|
174
|
+
* @returns {Promise<number>} Number of affected rows
|
|
175
|
+
* @throws {Error} If WHERE conditions are not provided
|
|
176
|
+
* @throws {Error} If the update operation fails
|
|
177
|
+
*/
|
|
178
|
+
async updateFields(updateData, schema, where) {
|
|
179
|
+
if (!where) {
|
|
180
|
+
throw new Error("WHERE conditions must be provided");
|
|
181
|
+
}
|
|
182
|
+
const queryBuilder = this.forgeOperations.update(schema).set(updateData).where(where);
|
|
183
|
+
const result = await queryBuilder;
|
|
184
|
+
await (0, cacheContextUtils_1.saveTableIfInsideCacheContext)(schema);
|
|
185
|
+
return result[0].affectedRows;
|
|
186
|
+
}
|
|
187
|
+
// Helper methods
|
|
188
|
+
/**
|
|
189
|
+
* Gets primary keys from the schema.
|
|
190
|
+
* @template T - The type of the table schema
|
|
191
|
+
* @param {T} schema - The table schema
|
|
192
|
+
* @returns {[string, AnyColumn][]} Array of primary key name and column pairs
|
|
193
|
+
* @throws {Error} If no primary keys are found
|
|
194
|
+
*/
|
|
195
|
+
getPrimaryKeys(schema) {
|
|
196
|
+
const primaryKeys = (0, sqlUtils_1.getPrimaryKeys)(schema);
|
|
197
|
+
if (!primaryKeys) {
|
|
198
|
+
throw new Error(`No primary keys found for schema: ${schema}`);
|
|
199
|
+
}
|
|
200
|
+
return primaryKeys;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Validates and retrieves version field metadata.
|
|
204
|
+
* @param {string} tableName - The name of the table
|
|
205
|
+
* @param {Record<string, AnyColumn>} columns - The table columns
|
|
206
|
+
* @returns {Object | undefined} Version field metadata if valid, undefined otherwise
|
|
207
|
+
*/
|
|
208
|
+
validateVersionField(tableName, columns) {
|
|
209
|
+
if (this.options.disableOptimisticLocking) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
const versionMetadata = this.options.additionalMetadata?.[tableName]?.versionField;
|
|
213
|
+
if (!versionMetadata)
|
|
214
|
+
return undefined;
|
|
215
|
+
let fieldName = versionMetadata.fieldName;
|
|
216
|
+
let versionField = columns[versionMetadata.fieldName];
|
|
217
|
+
if (!versionField) {
|
|
218
|
+
const find = Object.entries(columns).find(([, c]) => c.name === versionMetadata.fieldName);
|
|
219
|
+
if (find) {
|
|
220
|
+
fieldName = find[0];
|
|
221
|
+
versionField = find[1];
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (!versionField) {
|
|
225
|
+
// eslint-disable-next-line no-console
|
|
226
|
+
console.warn(`Version field "${versionMetadata.fieldName}" not found in table ${tableName}. Versioning will be skipped.`);
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
if (!versionField.notNull) {
|
|
230
|
+
// eslint-disable-next-line no-console
|
|
231
|
+
console.warn(`Version field "${versionMetadata.fieldName}" in table ${tableName} is nullable. Versioning may not work correctly.`);
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
const fieldType = versionField.getSQLType();
|
|
235
|
+
const isSupportedType = fieldType === "datetime" ||
|
|
236
|
+
fieldType === "timestamp" ||
|
|
237
|
+
fieldType === "int" ||
|
|
238
|
+
fieldType === "number" ||
|
|
239
|
+
fieldType === "decimal";
|
|
240
|
+
if (!isSupportedType) {
|
|
241
|
+
// eslint-disable-next-line no-console
|
|
242
|
+
console.warn(`Version field "${versionMetadata.fieldName}" in table ${tableName} has unsupported type "${fieldType}". ` +
|
|
243
|
+
`Only datetime, timestamp, int, and decimal types are supported for versioning. Versioning will be skipped.`);
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
246
|
+
return { fieldName, type: fieldType };
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Gets the current version of an entity.
|
|
250
|
+
* @template T - The type of the table schema
|
|
251
|
+
* @param {Partial<InferInsertModel<T>>} entity - The entity
|
|
252
|
+
* @param {string} primaryKeyName - The name of the primary key
|
|
253
|
+
* @param {Object | undefined} versionMetadata - Version field metadata
|
|
254
|
+
* @param {Record<string, AnyColumn>} columns - The table columns
|
|
255
|
+
* @param {T} schema - The table schema
|
|
256
|
+
* @returns {Promise<unknown>} The current version value
|
|
257
|
+
*/
|
|
258
|
+
async getCurrentVersion(entity, primaryKeyName, versionMetadata, columns, schema) {
|
|
259
|
+
if (!versionMetadata || !columns)
|
|
260
|
+
return undefined;
|
|
261
|
+
const versionField = columns[versionMetadata.fieldName];
|
|
262
|
+
if (!versionField)
|
|
263
|
+
return undefined;
|
|
264
|
+
if (versionMetadata.fieldName in entity) {
|
|
265
|
+
return entity[versionMetadata.fieldName];
|
|
266
|
+
}
|
|
267
|
+
const oldModel = await this.getOldModel({ [primaryKeyName]: entity[primaryKeyName] }, schema, [versionMetadata.fieldName, versionField]);
|
|
268
|
+
return oldModel[versionMetadata.fieldName];
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Prepares a model for insertion with version field.
|
|
272
|
+
* @template T - The type of the table schema
|
|
273
|
+
* @param {Partial<InferInsertModel<T>>} model - The model to prepare
|
|
274
|
+
* @param {Object | undefined} versionMetadata - Version field metadata
|
|
275
|
+
* @param {Record<string, AnyColumn>} columns - The table columns
|
|
276
|
+
* @returns {InferInsertModel<T>} The prepared model
|
|
277
|
+
*/
|
|
278
|
+
prepareModelWithVersion(model, versionMetadata, columns) {
|
|
279
|
+
if (!versionMetadata || !columns)
|
|
280
|
+
return model;
|
|
281
|
+
let fieldName = versionMetadata.fieldName;
|
|
282
|
+
let versionField = columns[versionMetadata.fieldName];
|
|
283
|
+
if (!versionField) {
|
|
284
|
+
const find = Object.entries(columns).find(([, c]) => c.name === versionMetadata.fieldName);
|
|
285
|
+
if (find) {
|
|
286
|
+
fieldName = find[0];
|
|
287
|
+
versionField = find[1];
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (!versionField)
|
|
291
|
+
return model;
|
|
292
|
+
const modelWithVersion = { ...model };
|
|
293
|
+
const fieldType = versionField.getSQLType();
|
|
294
|
+
const versionValue = fieldType === "datetime" || fieldType === "timestamp" ? new Date() : 1;
|
|
295
|
+
modelWithVersion[fieldName] = versionValue;
|
|
296
|
+
return modelWithVersion;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Prepares update data with version field.
|
|
300
|
+
* @template T - The type of the table schema
|
|
301
|
+
* @param {Partial<InferInsertModel<T>>} entity - The entity to update
|
|
302
|
+
* @param {Object | undefined} versionMetadata - Version field metadata
|
|
303
|
+
* @param {Record<string, AnyColumn>} columns - The table columns
|
|
304
|
+
* @param {unknown} currentVersion - The current version value
|
|
305
|
+
* @returns {Partial<InferInsertModel<T>>} The prepared update data
|
|
306
|
+
*/
|
|
307
|
+
prepareUpdateData(entity, versionMetadata, columns, currentVersion) {
|
|
308
|
+
const updateData = { ...entity };
|
|
309
|
+
if (versionMetadata && columns) {
|
|
310
|
+
const versionField = columns[versionMetadata.fieldName];
|
|
311
|
+
if (versionField) {
|
|
312
|
+
const fieldType = versionField.getSQLType();
|
|
313
|
+
updateData[versionMetadata.fieldName] =
|
|
314
|
+
fieldType === "datetime" || fieldType === "timestamp"
|
|
315
|
+
? new Date()
|
|
316
|
+
: (currentVersion + 1);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return updateData;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Retrieves an existing model by primary key.
|
|
323
|
+
* @template T - The type of the table schema
|
|
324
|
+
* @param {Record<string, unknown>} primaryKeyValues - The primary key values
|
|
325
|
+
* @param {T} schema - The table schema
|
|
326
|
+
* @param {[string, AnyColumn]} versionField - The version field name and column
|
|
327
|
+
* @returns {Promise<Awaited<T> extends Array<any> ? Awaited<T>[number] | undefined : Awaited<T> | undefined>} The existing model
|
|
328
|
+
* @throws {Error} If the record is not found
|
|
329
|
+
*/
|
|
330
|
+
async getOldModel(primaryKeyValues, schema, versionField) {
|
|
331
|
+
const [versionFieldName, versionFieldColumn] = versionField;
|
|
332
|
+
const primaryKeys = this.getPrimaryKeys(schema);
|
|
333
|
+
const [primaryKeyName, primaryKeyColumn] = primaryKeys[0];
|
|
334
|
+
const resultQuery = this.forgeOperations
|
|
335
|
+
.select({
|
|
336
|
+
[primaryKeyName]: primaryKeyColumn,
|
|
337
|
+
[versionFieldName]: versionFieldColumn,
|
|
338
|
+
})
|
|
339
|
+
.from(schema)
|
|
340
|
+
.where((0, drizzle_orm_1.eq)(primaryKeyColumn, primaryKeyValues[primaryKeyName]));
|
|
341
|
+
const model = await this.forgeOperations.fetch().executeQueryOnlyOne(resultQuery);
|
|
342
|
+
if (!model) {
|
|
343
|
+
throw new Error(`Record not found in table ${schema}`);
|
|
344
|
+
}
|
|
345
|
+
return model;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
exports.ForgeSQLCrudOperations = ForgeSQLCrudOperations;
|
|
349
|
+
//# sourceMappingURL=ForgeSQLCrudOperations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ForgeSQLCrudOperations.js","sourceRoot":"","sources":["../../src/core/ForgeSQLCrudOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VerioningModificationForgeSQL, ForgeSqlOperation, ForgeSqlOrmOptions, SchemaAnalyzeForgeSql, SchemaSqlForgeSql } from "./ForgeSQLQueryBuilder";
|
|
1
|
+
import { VerioningModificationForgeSQL, ForgeSqlOperation, ForgeSqlOrmOptions, SchemaAnalyzeForgeSql, SchemaSqlForgeSql, RovoIntegration } from "./ForgeSQLQueryBuilder";
|
|
2
2
|
import { MySqlRemoteDatabase, MySqlRemotePreparedQueryHKT, MySqlRemoteQueryResultHKT } from "drizzle-orm/mysql-proxy";
|
|
3
3
|
import type { SelectedFields } from "drizzle-orm/mysql-core/query-builders/select.types";
|
|
4
4
|
import { MySqlSelectBuilder } from "drizzle-orm/mysql-core";
|
|
@@ -473,6 +473,34 @@ declare class ForgeSQLORM implements ForgeSqlOperation {
|
|
|
473
473
|
update: <TTable extends MySqlTable>(table: TTable) => MySqlUpdateBuilder<TTable, MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT>;
|
|
474
474
|
delete: <TTable extends MySqlTable>(table: TTable) => MySqlDeleteBase<TTable, MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, false, never>;
|
|
475
475
|
};
|
|
476
|
+
/**
|
|
477
|
+
* Provides access to Rovo integration - a secure pattern for natural-language analytics.
|
|
478
|
+
*
|
|
479
|
+
* Rovo enables secure execution of dynamic SQL queries with comprehensive security validations:
|
|
480
|
+
* - Only SELECT queries are allowed
|
|
481
|
+
* - Queries are restricted to a single table
|
|
482
|
+
* - JOINs, subqueries, and window functions are blocked
|
|
483
|
+
* - Row-Level Security (RLS) support for data isolation
|
|
484
|
+
*
|
|
485
|
+
* @returns {RovoIntegration} Rovo integration instance for secure dynamic queries
|
|
486
|
+
*
|
|
487
|
+
* @example
|
|
488
|
+
* ```typescript
|
|
489
|
+
* const rovo = forgeSQL.rovo();
|
|
490
|
+
* const settings = await rovo.rovoSettingBuilder(usersTable, accountId)
|
|
491
|
+
* .useRLS()
|
|
492
|
+
* .addRlsColumn(usersTable.id)
|
|
493
|
+
* .addRlsWherePart((alias) => `${alias}.id = '${accountId}'`)
|
|
494
|
+
* .finish()
|
|
495
|
+
* .build();
|
|
496
|
+
*
|
|
497
|
+
* const result = await rovo.dynamicIsolatedQuery(
|
|
498
|
+
* "SELECT id, name FROM users WHERE status = 'active'",
|
|
499
|
+
* settings
|
|
500
|
+
* );
|
|
501
|
+
* ```
|
|
502
|
+
*/
|
|
503
|
+
rovo(): RovoIntegration;
|
|
476
504
|
}
|
|
477
505
|
export default ForgeSQLORM;
|
|
478
506
|
//# sourceMappingURL=ForgeSQLORM.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgeSQLORM.d.ts","sourceRoot":"","sources":["../../src/core/ForgeSQLORM.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ForgeSQLORM.d.ts","sourceRoot":"","sources":["../../src/core/ForgeSQLORM.ts"],"names":[],"mappings":"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"}
|