forge-sql-orm 2.1.12 → 2.1.13

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.
Files changed (66) hide show
  1. package/README.md +662 -548
  2. package/dist/core/ForgeSQLAnalyseOperations.d.ts.map +1 -1
  3. package/dist/core/ForgeSQLAnalyseOperations.js +257 -0
  4. package/dist/core/ForgeSQLAnalyseOperations.js.map +1 -0
  5. package/dist/core/ForgeSQLCacheOperations.js +172 -0
  6. package/dist/core/ForgeSQLCacheOperations.js.map +1 -0
  7. package/dist/core/ForgeSQLCrudOperations.js +349 -0
  8. package/dist/core/ForgeSQLCrudOperations.js.map +1 -0
  9. package/dist/core/ForgeSQLORM.js +1191 -0
  10. package/dist/core/ForgeSQLORM.js.map +1 -0
  11. package/dist/core/ForgeSQLQueryBuilder.js +77 -0
  12. package/dist/core/ForgeSQLQueryBuilder.js.map +1 -0
  13. package/dist/core/ForgeSQLSelectOperations.js +81 -0
  14. package/dist/core/ForgeSQLSelectOperations.js.map +1 -0
  15. package/dist/core/SystemTables.js +258 -0
  16. package/dist/core/SystemTables.js.map +1 -0
  17. package/dist/index.js +30 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/lib/drizzle/extensions/additionalActions.d.ts.map +1 -1
  20. package/dist/lib/drizzle/extensions/additionalActions.js +527 -0
  21. package/dist/lib/drizzle/extensions/additionalActions.js.map +1 -0
  22. package/dist/utils/cacheContextUtils.d.ts.map +1 -1
  23. package/dist/utils/cacheContextUtils.js +198 -0
  24. package/dist/utils/cacheContextUtils.js.map +1 -0
  25. package/dist/utils/cacheUtils.d.ts.map +1 -1
  26. package/dist/utils/cacheUtils.js +383 -0
  27. package/dist/utils/cacheUtils.js.map +1 -0
  28. package/dist/utils/forgeDriver.d.ts.map +1 -1
  29. package/dist/utils/forgeDriver.js +139 -0
  30. package/dist/utils/forgeDriver.js.map +1 -0
  31. package/dist/utils/forgeDriverProxy.js +68 -0
  32. package/dist/utils/forgeDriverProxy.js.map +1 -0
  33. package/dist/utils/metadataContextUtils.js +28 -0
  34. package/dist/utils/metadataContextUtils.js.map +1 -0
  35. package/dist/utils/requestTypeContextUtils.js +10 -0
  36. package/dist/utils/requestTypeContextUtils.js.map +1 -0
  37. package/dist/utils/sqlHints.js +52 -0
  38. package/dist/utils/sqlHints.js.map +1 -0
  39. package/dist/utils/sqlUtils.d.ts.map +1 -1
  40. package/dist/utils/sqlUtils.js +590 -0
  41. package/dist/utils/sqlUtils.js.map +1 -0
  42. package/dist/webtriggers/applyMigrationsWebTrigger.js +77 -0
  43. package/dist/webtriggers/applyMigrationsWebTrigger.js.map +1 -0
  44. package/dist/webtriggers/clearCacheSchedulerTrigger.js +83 -0
  45. package/dist/webtriggers/clearCacheSchedulerTrigger.js.map +1 -0
  46. package/dist/webtriggers/dropMigrationWebTrigger.js +54 -0
  47. package/dist/webtriggers/dropMigrationWebTrigger.js.map +1 -0
  48. package/dist/webtriggers/dropTablesMigrationWebTrigger.js +54 -0
  49. package/dist/webtriggers/dropTablesMigrationWebTrigger.js.map +1 -0
  50. package/dist/webtriggers/fetchSchemaWebTrigger.js +82 -0
  51. package/dist/webtriggers/fetchSchemaWebTrigger.js.map +1 -0
  52. package/dist/webtriggers/index.js +40 -0
  53. package/dist/webtriggers/index.js.map +1 -0
  54. package/dist/webtriggers/slowQuerySchedulerTrigger.js +80 -0
  55. package/dist/webtriggers/slowQuerySchedulerTrigger.js.map +1 -0
  56. package/package.json +28 -23
  57. package/src/core/ForgeSQLAnalyseOperations.ts +3 -2
  58. package/src/lib/drizzle/extensions/additionalActions.ts +11 -0
  59. package/src/utils/cacheContextUtils.ts +9 -6
  60. package/src/utils/cacheUtils.ts +6 -4
  61. package/src/utils/forgeDriver.ts +3 -7
  62. package/src/utils/sqlUtils.ts +33 -34
  63. package/dist/ForgeSQLORM.js +0 -3922
  64. package/dist/ForgeSQLORM.js.map +0 -1
  65. package/dist/ForgeSQLORM.mjs +0 -3905
  66. package/dist/ForgeSQLORM.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ForgeSQLAnalyseOperations.d.ts","sourceRoot":"","sources":["../../src/core/ForgeSQLAnalyseOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ForgeSQLAnalyseOperations.d.ts","sourceRoot":"","sources":["../../src/core/ForgeSQLAnalyseOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForgeSQLAnalyseOperation = void 0;
4
+ const table_1 = require("drizzle-orm/table");
5
+ const luxon_1 = require("luxon");
6
+ /**
7
+ * Class implementing SQL analysis operations for ForgeSQL ORM.
8
+ * Provides methods for analyzing query performance, execution plans, and slow queries.
9
+ */
10
+ class ForgeSQLAnalyseOperation {
11
+ forgeOperations;
12
+ /**
13
+ * Creates a new instance of ForgeSQLAnalizeOperation.
14
+ * @param {ForgeSqlOperation} forgeOperations - The ForgeSQL operations instance
15
+ */
16
+ constructor(forgeOperations) {
17
+ this.forgeOperations = forgeOperations;
18
+ this.mapToCamelCaseClusterStatement = this.mapToCamelCaseClusterStatement.bind(this);
19
+ }
20
+ /**
21
+ * Executes EXPLAIN on a raw SQL query.
22
+ * @param {string} query - The SQL query to analyze
23
+ * @param {unknown[]} bindParams - The query parameters
24
+ * @returns {Promise<ExplainAnalyzeRow[]>} The execution plan analysis results
25
+ */
26
+ async explainRaw(query, bindParams) {
27
+ const results = await this.forgeOperations
28
+ .fetch()
29
+ .executeRawSQL(`EXPLAIN ${query}`, bindParams);
30
+ return results.map((row) => ({
31
+ id: row.id,
32
+ estRows: row.estRows,
33
+ actRows: row.actRows,
34
+ task: row.task,
35
+ accessObject: row["access object"],
36
+ executionInfo: row["execution info"],
37
+ operatorInfo: row["operator info"],
38
+ memory: row.memory,
39
+ disk: row.disk,
40
+ }));
41
+ }
42
+ /**
43
+ * Executes EXPLAIN on a Drizzle query.
44
+ * @param {{ toSQL: () => Query }} query - The Drizzle query to analyze
45
+ * @returns {Promise<ExplainAnalyzeRow[]>} The execution plan analysis results
46
+ */
47
+ async explain(query) {
48
+ const { sql, params } = query.toSQL();
49
+ return this.explainRaw(sql, params);
50
+ }
51
+ /**
52
+ * Executes EXPLAIN ANALYZE on a raw SQL query.
53
+ * @param {string} query - The SQL query to analyze
54
+ * @param {unknown[]} bindParams - The query parameters
55
+ * @returns {Promise<ExplainAnalyzeRow[]>} The execution plan analysis results
56
+ */
57
+ async explainAnalyzeRaw(query, bindParams) {
58
+ const results = await this.forgeOperations
59
+ .fetch()
60
+ .executeRawSQL(`EXPLAIN ANALYZE ${query}`, bindParams);
61
+ return results.map((row) => ({
62
+ id: row.id,
63
+ estRows: row.estRows,
64
+ actRows: row.actRows,
65
+ task: row.task,
66
+ accessObject: row["access object"],
67
+ executionInfo: row["execution info"],
68
+ operatorInfo: row["operator info"],
69
+ memory: row.memory,
70
+ disk: row.disk,
71
+ }));
72
+ }
73
+ /**
74
+ * Executes EXPLAIN ANALYZE on a Drizzle query.
75
+ * @param {{ toSQL: () => Query }} query - The Drizzle query to analyze
76
+ * @returns {Promise<ExplainAnalyzeRow[]>} The execution plan analysis results
77
+ */
78
+ async explainAnalyze(query) {
79
+ const { sql, params } = query.toSQL();
80
+ return this.explainAnalyzeRaw(sql, params);
81
+ }
82
+ /**
83
+ * Decodes a query execution plan from its string representation.
84
+ * @param {string} input - The raw execution plan string
85
+ * @returns {ExplainAnalyzeRow[]} The decoded execution plan rows
86
+ */
87
+ decodedPlan(input) {
88
+ if (!input) {
89
+ return [];
90
+ }
91
+ const lines = input.trim().split("\n");
92
+ if (lines.length < 2)
93
+ return [];
94
+ const headersRaw = lines[0]
95
+ .split("\t")
96
+ .map((h) => h.trim())
97
+ .filter(Boolean);
98
+ const headers = headersRaw.map((h) => {
99
+ return h
100
+ .replace(/\s+/g, " ")
101
+ .replace(/[-\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ""))
102
+ .replace(/^./, (s) => s.toLowerCase());
103
+ });
104
+ return lines.slice(1).map((line) => {
105
+ const values = line
106
+ .split("\t")
107
+ .map((s) => s.trim())
108
+ .filter(Boolean);
109
+ const row = {};
110
+ for (const key of headers) {
111
+ const i = headers.indexOf(key);
112
+ row[key] = values[i] ?? "";
113
+ }
114
+ return row;
115
+ });
116
+ }
117
+ /**
118
+ * Normalizes a raw slow query row into a more structured format.
119
+ * @param {SlowQueryRaw} row - The raw slow query data
120
+ * @returns {SlowQueryNormalized} The normalized slow query data
121
+ */
122
+ normalizeSlowQuery(row) {
123
+ return {
124
+ time: row.Time,
125
+ txnStartTs: row.Txn_start_ts,
126
+ user: row.User,
127
+ host: row.Host,
128
+ connId: row.Conn_ID,
129
+ db: row.DB,
130
+ query: row.Query,
131
+ digest: row.Digest,
132
+ queryTime: row.Query_time,
133
+ compileTime: row.Compile_time,
134
+ optimizeTime: row.Optimize_time,
135
+ processTime: row.Process_time,
136
+ waitTime: row.Wait_time,
137
+ parseTime: row.Parse_time,
138
+ rewriteTime: row.Rewrite_time,
139
+ copTime: row.Cop_time,
140
+ copProcAvg: row.Cop_proc_avg,
141
+ copProcMax: row.Cop_proc_max,
142
+ copProcP90: row.Cop_proc_p90,
143
+ copProcAddr: row.Cop_proc_addr,
144
+ copWaitAvg: row.Cop_wait_avg,
145
+ copWaitMax: row.Cop_wait_max,
146
+ copWaitP90: row.Cop_wait_p90,
147
+ copWaitAddr: row.Cop_wait_addr,
148
+ memMax: row.Mem_max,
149
+ diskMax: row.Disk_max,
150
+ totalKeys: row.Total_keys,
151
+ processKeys: row.Process_keys,
152
+ requestCount: row.Request_count,
153
+ kvTotal: row.KV_total,
154
+ pdTotal: row.PD_total,
155
+ resultRows: row.Result_rows,
156
+ rocksdbBlockCacheHitCount: row.Rocksdb_block_cache_hit_count,
157
+ rocksdbBlockReadCount: row.Rocksdb_block_read_count,
158
+ rocksdbBlockReadByte: row.Rocksdb_block_read_byte,
159
+ plan: row.Plan,
160
+ binaryPlan: row.Binary_plan,
161
+ planDigest: row.Plan_digest,
162
+ parsedPlan: this.decodedPlan(row.Plan),
163
+ };
164
+ }
165
+ /**
166
+ * Builds a SQL query for retrieving cluster statement history.
167
+ * @param {string[]} tables - The tables to analyze
168
+ * @param {Date} [from] - The start date for the analysis
169
+ * @param {Date} [to] - The end date for the analysis
170
+ * @returns {string} The SQL query for cluster statement history
171
+ */
172
+ buildClusterStatementQuery(tables, from, to) {
173
+ const formatDateTime = (date) => luxon_1.DateTime.fromJSDate(date).toFormat("yyyy-LL-dd'T'HH:mm:ss.SSS");
174
+ const tableConditions = tables
175
+ .map((table) => `TABLE_NAMES LIKE CONCAT(SCHEMA_NAME, '.', '%', '${table}', '%')`)
176
+ .join(" OR ");
177
+ const timeConditions = [];
178
+ if (from) {
179
+ timeConditions.push(`SUMMARY_BEGIN_TIME >= '${formatDateTime(from)}'`);
180
+ }
181
+ if (to) {
182
+ timeConditions.push(`SUMMARY_END_TIME <= '${formatDateTime(to)}'`);
183
+ }
184
+ let whereClauses;
185
+ if (tableConditions?.length) {
186
+ whereClauses = [tableConditions ? `(${tableConditions})` : "", ...timeConditions];
187
+ }
188
+ else {
189
+ whereClauses = timeConditions;
190
+ }
191
+ return `
192
+ SELECT *
193
+ FROM (
194
+ SELECT * FROM INFORMATION_SCHEMA.CLUSTER_STATEMENTS_SUMMARY
195
+ UNION ALL
196
+ SELECT * FROM INFORMATION_SCHEMA.CLUSTER_STATEMENTS_SUMMARY_HISTORY
197
+ ) AS combined
198
+ ${whereClauses?.length > 0 ? `WHERE ${whereClauses.join(" AND ")}` : ""}
199
+ `;
200
+ }
201
+ /**
202
+ * Retrieves and analyzes slow queries from the database.
203
+ * @returns {Promise<SlowQueryNormalized[]>} The normalized slow query data
204
+ */
205
+ // CLUSTER_SLOW_QUERY STATISTICS
206
+ async analyzeSlowQueries() {
207
+ const results = await this.forgeOperations.fetch().executeRawSQL(`
208
+ SELECT *
209
+ FROM information_schema.slow_query
210
+ ORDER BY time DESC
211
+ `);
212
+ return results.map((row) => this.normalizeSlowQuery(row));
213
+ }
214
+ /**
215
+ * Converts a cluster statement row to camelCase format.
216
+ * @param {Record<string, any>} input - The input row data
217
+ * @returns {ClusterStatementRowCamelCase} The converted row data
218
+ */
219
+ mapToCamelCaseClusterStatement(input) {
220
+ if (!input) {
221
+ return {};
222
+ }
223
+ const result = {};
224
+ result.parsedPlan = this.decodedPlan(input["PLAN"] ?? "");
225
+ for (const key in input) {
226
+ const camelKey = key.toLowerCase().replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
227
+ result[camelKey] = input[key];
228
+ }
229
+ return result;
230
+ }
231
+ /**
232
+ * Analyzes query history for specific tables using raw table names.
233
+ * @param {string[]} tables - The table names to analyze
234
+ * @param {Date} [fromDate] - The start date for the analysis
235
+ * @param {Date} [toDate] - The end date for the analysis
236
+ * @returns {Promise<ClusterStatementRowCamelCase[]>} The analyzed query history
237
+ */
238
+ async analyzeQueriesHistoryRaw(tables, fromDate, toDate) {
239
+ const results = await this.forgeOperations
240
+ .fetch()
241
+ .executeRawSQL(this.buildClusterStatementQuery(tables ?? [], fromDate, toDate));
242
+ return results.map((r) => this.mapToCamelCaseClusterStatement(r));
243
+ }
244
+ /**
245
+ * Analyzes query history for specific tables using Drizzle table objects.
246
+ * @param {AnyMySqlTable[]} tables - The Drizzle table objects to analyze
247
+ * @param {Date} [fromDate] - The start date for the analysis
248
+ * @param {Date} [toDate] - The end date for the analysis
249
+ * @returns {Promise<ClusterStatementRowCamelCase[]>} The analyzed query history
250
+ */
251
+ async analyzeQueriesHistory(tables, fromDate, toDate) {
252
+ const tableNames = tables?.map((table) => (0, table_1.getTableName)(table)) ?? [];
253
+ return this.analyzeQueriesHistoryRaw(tableNames, fromDate, toDate);
254
+ }
255
+ }
256
+ exports.ForgeSQLAnalyseOperation = ForgeSQLAnalyseOperation;
257
+ //# sourceMappingURL=ForgeSQLAnalyseOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForgeSQLAnalyseOperations.js","sourceRoot":"","sources":["../../src/core/ForgeSQLAnalyseOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForgeSQLCacheOperations = void 0;
4
+ const cacheUtils_1 = require("../utils/cacheUtils");
5
+ const table_1 = require("drizzle-orm/table");
6
+ /**
7
+ * Implementation of cache operations for ForgeSQL ORM.
8
+ * Provides methods for cacheable database operations with automatic cache management.
9
+ *
10
+ * ⚠️ **IMPORTANT**: All modification methods in this class use optimistic locking/versioning
11
+ * through `modifyWithVersioning()` internally. This ensures data consistency and prevents
12
+ * concurrent modification conflicts.
13
+ */
14
+ class ForgeSQLCacheOperations {
15
+ options;
16
+ forgeOperations;
17
+ /**
18
+ * Creates a new instance of ForgeSQLCacheOperations.
19
+ *
20
+ * @param options - Configuration options for the ORM
21
+ * @param forgeOperations - The ForgeSQL operations instance
22
+ */
23
+ constructor(options, forgeOperations) {
24
+ this.options = options;
25
+ this.forgeOperations = forgeOperations;
26
+ }
27
+ /**
28
+ * Evicts cache for multiple tables using Drizzle table objects.
29
+ *
30
+ * @param tables - Array of Drizzle table objects to clear cache for
31
+ * @returns Promise that resolves when cache eviction is complete
32
+ * @throws Error if cacheEntityName is not configured
33
+ */
34
+ async evictCacheEntities(tables) {
35
+ if (!this.options.cacheEntityName) {
36
+ throw new Error("cacheEntityName is not configured");
37
+ }
38
+ await this.evictCache(tables.map((t) => (0, table_1.getTableName)(t)));
39
+ }
40
+ /**
41
+ * Evicts cache for multiple tables by their names.
42
+ *
43
+ * @param tables - Array of table names to clear cache for
44
+ * @returns Promise that resolves when cache eviction is complete
45
+ * @throws Error if cacheEntityName is not configured
46
+ */
47
+ async evictCache(tables) {
48
+ if (!this.options.cacheEntityName) {
49
+ throw new Error("cacheEntityName is not configured");
50
+ }
51
+ await (0, cacheUtils_1.clearTablesCache)(tables, this.options);
52
+ }
53
+ /**
54
+ * Inserts records with optimistic locking/versioning and automatically evicts cache.
55
+ *
56
+ * This method uses `modifyWithVersioning().insert()` internally, providing:
57
+ * - Automatic version field initialization
58
+ * - Optimistic locking support
59
+ * - Cache eviction after successful operation
60
+ *
61
+ * @param schema - The table schema
62
+ * @param models - Array of entities to insert
63
+ * @param updateIfExists - Whether to update existing records
64
+ * @returns Promise that resolves to the number of inserted rows
65
+ * @throws Error if cacheEntityName is not configured
66
+ * @throws Error if optimistic locking check fails
67
+ */
68
+ async insert(schema, models, updateIfExists) {
69
+ this.validateCacheConfiguration();
70
+ const number = await this.forgeOperations
71
+ .modifyWithVersioning()
72
+ .insert(schema, models, updateIfExists);
73
+ await (0, cacheUtils_1.clearCache)(schema, this.options);
74
+ return number;
75
+ }
76
+ /**
77
+ * Deletes a record by ID with optimistic locking/versioning and automatically evicts cache.
78
+ *
79
+ * This method uses `modifyWithVersioning().deleteById()` internally, providing:
80
+ * - Optimistic locking checks before deletion
81
+ * - Version field validation
82
+ * - Cache eviction after successful operation
83
+ *
84
+ * @param id - The ID of the record to delete
85
+ * @param schema - The table schema
86
+ * @returns Promise that resolves to the number of affected rows
87
+ * @throws Error if cacheEntityName is not configured
88
+ * @throws Error if optimistic locking check fails
89
+ */
90
+ async deleteById(id, schema) {
91
+ this.validateCacheConfiguration();
92
+ const number = await this.forgeOperations.modifyWithVersioning().deleteById(id, schema);
93
+ await (0, cacheUtils_1.clearCache)(schema, this.options);
94
+ return number;
95
+ }
96
+ /**
97
+ * Updates a record by ID with optimistic locking/versioning and automatically evicts cache.
98
+ *
99
+ * This method uses `modifyWithVersioning().updateById()` internally, providing:
100
+ * - Optimistic locking checks before update
101
+ * - Version field incrementation
102
+ * - Cache eviction after successful operation
103
+ *
104
+ * @param entity - The entity with updated values (must include primary key)
105
+ * @param schema - The table schema
106
+ * @returns Promise that resolves to the number of affected rows
107
+ * @throws Error if cacheEntityName is not configured
108
+ * @throws Error if optimistic locking check fails
109
+ */
110
+ async updateById(entity, schema) {
111
+ this.validateCacheConfiguration();
112
+ const number = await this.forgeOperations.modifyWithVersioning().updateById(entity, schema);
113
+ await (0, cacheUtils_1.clearCache)(schema, this.options);
114
+ return number;
115
+ }
116
+ /**
117
+ * Updates fields based on conditions with optimistic locking/versioning and automatically evicts cache.
118
+ *
119
+ * This method uses `modifyWithVersioning().updateFields()` internally, providing:
120
+ * - Optimistic locking support (if version field is configured)
121
+ * - Version field validation and incrementation
122
+ * - Cache eviction after successful operation
123
+ *
124
+ * @param updateData - The data to update
125
+ * @param schema - The table schema
126
+ * @param where - Optional WHERE conditions
127
+ * @returns Promise that resolves to the number of affected rows
128
+ * @throws Error if cacheEntityName is not configured
129
+ * @throws Error if optimistic locking check fails
130
+ */
131
+ async updateFields(updateData, schema, where) {
132
+ this.validateCacheConfiguration();
133
+ const number = await this.forgeOperations
134
+ .modifyWithVersioning()
135
+ .updateFields(updateData, schema, where);
136
+ await (0, cacheUtils_1.clearCache)(schema, this.options);
137
+ return number;
138
+ }
139
+ /**
140
+ * Executes a query with caching support.
141
+ * First checks cache, if not found executes query and stores result in cache.
142
+ *
143
+ * @param query - The Drizzle query to execute
144
+ * @param cacheTtl - Optional cache TTL override
145
+ * @returns Promise that resolves to the query results
146
+ * @throws Error if cacheEntityName is not configured
147
+ */
148
+ async executeQuery(query, cacheTtl) {
149
+ this.validateCacheConfiguration();
150
+ const sqlQuery = query;
151
+ const cacheResult = await (0, cacheUtils_1.getFromCache)(sqlQuery, this.options);
152
+ if (cacheResult) {
153
+ return cacheResult;
154
+ }
155
+ const results = await query;
156
+ await (0, cacheUtils_1.setCacheResult)(sqlQuery, this.options, results, cacheTtl ?? this.options.cacheTTL ?? 60);
157
+ return results;
158
+ }
159
+ /**
160
+ * Validates that cache configuration is properly set up.
161
+ *
162
+ * @throws Error if cacheEntityName is not configured
163
+ * @private
164
+ */
165
+ validateCacheConfiguration() {
166
+ if (!this.options.cacheEntityName) {
167
+ throw new Error("cacheEntityName is not configured");
168
+ }
169
+ }
170
+ }
171
+ exports.ForgeSQLCacheOperations = ForgeSQLCacheOperations;
172
+ //# sourceMappingURL=ForgeSQLCacheOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForgeSQLCacheOperations.js","sourceRoot":"","sources":["../../src/core/ForgeSQLCacheOperations.ts"],"names":[],"mappings":"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"}