forge-sql-orm 2.1.23 → 2.1.25
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 +46 -23
- package/dist/core/ForgeSQLAnalyseOperations.d.ts +4 -0
- package/dist/core/ForgeSQLAnalyseOperations.d.ts.map +1 -1
- package/dist/core/ForgeSQLAnalyseOperations.js +17 -21
- package/dist/core/ForgeSQLAnalyseOperations.js.map +1 -1
- package/dist/core/ForgeSQLCrudOperations.d.ts +16 -0
- package/dist/core/ForgeSQLCrudOperations.d.ts.map +1 -1
- package/dist/core/ForgeSQLCrudOperations.js +60 -28
- package/dist/core/ForgeSQLCrudOperations.js.map +1 -1
- package/dist/core/ForgeSQLQueryBuilder.d.ts +15 -28
- package/dist/core/ForgeSQLQueryBuilder.d.ts.map +1 -1
- package/dist/core/ForgeSQLQueryBuilder.js +20 -47
- package/dist/core/ForgeSQLQueryBuilder.js.map +1 -1
- package/dist/core/Rovo.d.ts +32 -0
- package/dist/core/Rovo.d.ts.map +1 -1
- package/dist/core/Rovo.js +116 -67
- package/dist/core/Rovo.js.map +1 -1
- package/dist/lib/drizzle/extensions/additionalActions.d.ts.map +1 -1
- package/dist/lib/drizzle/extensions/additionalActions.js +168 -118
- package/dist/lib/drizzle/extensions/additionalActions.js.map +1 -1
- package/dist/utils/cacheTableUtils.d.ts +0 -8
- package/dist/utils/cacheTableUtils.d.ts.map +1 -1
- package/dist/utils/cacheTableUtils.js +183 -126
- package/dist/utils/cacheTableUtils.js.map +1 -1
- package/dist/utils/cacheUtils.d.ts +13 -1
- package/dist/utils/cacheUtils.d.ts.map +1 -1
- package/dist/utils/cacheUtils.js +60 -47
- package/dist/utils/cacheUtils.js.map +1 -1
- package/dist/utils/forgeDriverProxy.d.ts.map +1 -1
- package/dist/utils/forgeDriverProxy.js +31 -20
- package/dist/utils/forgeDriverProxy.js.map +1 -1
- package/dist/utils/sqlHints.d.ts.map +1 -1
- package/dist/utils/sqlHints.js +19 -29
- package/dist/utils/sqlHints.js.map +1 -1
- package/dist/utils/sqlUtils.d.ts +0 -29
- package/dist/utils/sqlUtils.d.ts.map +1 -1
- package/dist/utils/sqlUtils.js +107 -78
- package/dist/utils/sqlUtils.js.map +1 -1
- package/dist/webtriggers/clearCacheSchedulerTrigger.d.ts +24 -4
- package/dist/webtriggers/clearCacheSchedulerTrigger.d.ts.map +1 -1
- package/dist/webtriggers/clearCacheSchedulerTrigger.js +24 -4
- package/dist/webtriggers/clearCacheSchedulerTrigger.js.map +1 -1
- package/package.json +9 -9
- package/src/core/ForgeSQLAnalyseOperations.ts +18 -21
- package/src/core/ForgeSQLCrudOperations.ts +83 -33
- package/src/core/ForgeSQLQueryBuilder.ts +59 -154
- package/src/core/Rovo.ts +158 -98
- package/src/lib/drizzle/extensions/additionalActions.ts +287 -382
- package/src/utils/cacheTableUtils.ts +202 -144
- package/src/utils/cacheUtils.ts +70 -47
- package/src/utils/forgeDriverProxy.ts +39 -21
- package/src/utils/sqlHints.ts +21 -26
- package/src/utils/sqlUtils.ts +151 -101
- package/src/webtriggers/clearCacheSchedulerTrigger.ts +24 -4
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
[](https://sonarcloud.io/summary/new_code?id=forge-sql-orm_forge-sql-orm)
|
|
20
20
|
[](https://sonarcloud.io/summary/new_code?id=forge-sql-orm_forge-sql-orm)
|
|
21
21
|
[](https://sonarcloud.io/summary/new_code?id=forge-sql-orm_forge-sql-orm)
|
|
22
|
+
[](https://qlty.sh/gh/forge-sql-orm/projects/forge-sql-orm)
|
|
22
23
|
|
|
23
24
|
**Forge-SQL-ORM** is an ORM designed for working with [@forge/sql](https://developer.atlassian.com/platform/forge/storage-reference/sql-tutorial/) in **Atlassian Forge**. It is built on top of [Drizzle ORM](https://orm.drizzle.team) and provides advanced capabilities for working with relational databases inside Forge.
|
|
24
25
|
|
|
@@ -707,10 +708,12 @@ The diagram below shows how Evict Cache works in Forge-SQL-ORM:
|
|
|
707
708
|
|
|
708
709
|
The diagram below shows how Scheduled Expiration Cleanup works:
|
|
709
710
|
|
|
711
|
+
**Note:** forge-sql-orm uses Forge KVS TTL feature (`{ ttl: { unit: "SECONDS", value: number } }`) to mark entries as expired. However, **actual deletion is asynchronous and may take up to 48 hours**. During this window, read operations may still return expired results. The scheduler trigger proactively cleans up expired entries to prevent cache growth from impacting INSERT/UPDATE performance.
|
|
712
|
+
|
|
710
713
|
1. A periodic scheduler (Forge trigger) runs cache cleanup independently of data modifications.
|
|
711
714
|
2. forge-sql-orm queries the cache entity by the expiration index to find entries with expiration < now.
|
|
712
715
|
3. Entries are deleted in batches (up to 25 per transaction) until the page is empty; pagination is done with a cursor (e.g., 100 per page).
|
|
713
|
-
4. This keeps the cache footprint small and prevents stale data accumulation.
|
|
716
|
+
4. This keeps the cache footprint small and prevents stale data accumulation, especially important when cache size impacts data modification performance.
|
|
714
717
|
|
|
715
718
|

|
|
716
719
|
|
|
@@ -733,6 +736,12 @@ The diagram below shows how Cache Context works:
|
|
|
733
736
|
**@forge/kvs Limits:**
|
|
734
737
|
Please review the [official @forge/kvs quotas and limits](https://developer.atlassian.com/platform/forge/platform-quotas-and-limits/#kvs-and-custom-entity-store-quotas) before implementing caching.
|
|
735
738
|
|
|
739
|
+
**TTL Limitations:**
|
|
740
|
+
|
|
741
|
+
- **Maximum TTL**: The maximum supported TTL is 1 year from the time the expiry is set.
|
|
742
|
+
- **Asynchronous deletion**: Expired data is not removed immediately upon expiry. Deletion may take up to 48 hours. During this window, read operations may still return expired results.
|
|
743
|
+
- **Performance impact**: If cache grows large, expired entries can impact INSERT/UPDATE performance. Use the Clear Cache Scheduler Trigger to proactively clean up expired entries.
|
|
744
|
+
|
|
736
745
|
**Caching Guidelines:**
|
|
737
746
|
|
|
738
747
|
- Don't cache everything - be selective about what to cache
|
|
@@ -740,6 +749,7 @@ Please review the [official @forge/kvs quotas and limits](https://developer.atla
|
|
|
740
749
|
- Consider data size and frequency of changes
|
|
741
750
|
- Monitor cache usage to stay within quotas
|
|
742
751
|
- Use appropriate TTL values
|
|
752
|
+
- If cache growth impacts performance, configure the Clear Cache Scheduler Trigger
|
|
743
753
|
|
|
744
754
|
**⚠️ Important Cache Limitations:**
|
|
745
755
|
|
|
@@ -753,10 +763,11 @@ npm install @forge/kvs -S
|
|
|
753
763
|
|
|
754
764
|
### Step 2: Configure Manifest
|
|
755
765
|
|
|
756
|
-
Add the storage entity configuration
|
|
766
|
+
Add the storage entity configuration to your `manifest.yml`. The `scheduledTrigger` is **optional** - only configure it if your cache grows large and impacts INSERT/UPDATE performance:
|
|
757
767
|
|
|
758
768
|
```yaml
|
|
759
769
|
modules:
|
|
770
|
+
# Optional: Only needed if cache growth impacts INSERT/UPDATE performance
|
|
760
771
|
scheduledTrigger:
|
|
761
772
|
- key: clear-cache-trigger
|
|
762
773
|
function: clearCache
|
|
@@ -813,7 +824,7 @@ const forgeSQL = new ForgeSQL(options);
|
|
|
813
824
|
- The `cacheEntityName` must exactly match the `name` in your manifest storage entities
|
|
814
825
|
- The entity attributes (`sql`, `expiration`, `data`) are required for proper cache functionality
|
|
815
826
|
- Indexes on `sql` and `expiration` improve cache lookup performance
|
|
816
|
-
- Cache data is
|
|
827
|
+
- Cache data uses Forge KVS TTL for expiration (deletion is asynchronous, may take up to 48 hours)
|
|
817
828
|
- No additional permissions are required beyond standard Forge app permissions
|
|
818
829
|
|
|
819
830
|
### Complete Setup Examples
|
|
@@ -861,6 +872,7 @@ npm install forge-sql-orm @forge/sql @forge/kvs drizzle-orm -S
|
|
|
861
872
|
|
|
862
873
|
```yaml
|
|
863
874
|
modules:
|
|
875
|
+
# Optional: Only needed if cache growth impacts INSERT/UPDATE performance
|
|
864
876
|
scheduledTrigger:
|
|
865
877
|
- key: clear-cache-trigger
|
|
866
878
|
function: clearCache
|
|
@@ -1680,7 +1692,7 @@ This multi-level approach provides optimal performance by checking the fastest c
|
|
|
1680
1692
|
|
|
1681
1693
|
### Cache Configuration
|
|
1682
1694
|
|
|
1683
|
-
The caching system uses Atlassian Forge's Custom entity store to persist cache data. Each cache entry is stored as a custom entity with
|
|
1695
|
+
The caching system uses Atlassian Forge's Custom entity store to persist cache data. Each cache entry is stored as a custom entity with TTL management via Forge KVS. Note that expired data deletion is asynchronous and may take up to 48 hours. If cache growth impacts INSERT/UPDATE performance, use the Clear Cache Scheduler Trigger for proactive cleanup.
|
|
1684
1696
|
|
|
1685
1697
|
```typescript
|
|
1686
1698
|
const options = {
|
|
@@ -1705,7 +1717,7 @@ const forgeSQL = new ForgeSQL(options);
|
|
|
1705
1717
|
The caching system leverages Forge's Custom entity store to provide:
|
|
1706
1718
|
|
|
1707
1719
|
- **Persistent Storage**: Cache data survives app restarts and deployments
|
|
1708
|
-
- **
|
|
1720
|
+
- **TTL Support**: Uses Forge KVS TTL feature for expiration (deletion is asynchronous, may take up to 48 hours)
|
|
1709
1721
|
- **Efficient Retrieval**: Fast key-based lookups using Forge's optimized storage
|
|
1710
1722
|
- **Data Serialization**: Automatic handling of complex objects and query results
|
|
1711
1723
|
- **Batch Operations**: Efficient bulk cache operations for better performance
|
|
@@ -1904,18 +1916,18 @@ const userResolver = async (req) => {
|
|
|
1904
1916
|
|
|
1905
1917
|
#### Local Cache (Level 1) vs Global Cache (Level 2)
|
|
1906
1918
|
|
|
1907
|
-
| Feature | Local Cache (Level 1) | Global Cache (Level 2)
|
|
1908
|
-
| ------------------ | ------------------------------------- |
|
|
1909
|
-
| **Storage** | In-memory (Node.js process) | Persistent (KVS Custom Entities)
|
|
1910
|
-
| **Scope** | Single forge invocation | Cross-invocation (between calls)
|
|
1911
|
-
| **Persistence** | No (cleared on invocation end) | Yes (survives app redeploy)
|
|
1912
|
-
| **Performance** | Very fast (memory access) | Fast (KVS optimized storage)
|
|
1913
|
-
| **Memory Usage** | Low (invocation-scoped) | Higher (persistent storage)
|
|
1914
|
-
| **Use Case** | Invocation optimization | Cross-invocation data sharing
|
|
1915
|
-
| **Configuration** | None required | Requires KVS setup
|
|
1916
|
-
| **TTL Support** | No (invocation-scoped) | Yes (
|
|
1917
|
-
| **Cache Eviction** | Automatic on DML operations | Manual or scheduled cleanup
|
|
1918
|
-
| **Best For** | Repeated queries in single invocation | Frequently accessed data across invocations
|
|
1919
|
+
| Feature | Local Cache (Level 1) | Global Cache (Level 2) |
|
|
1920
|
+
| ------------------ | ------------------------------------- | ------------------------------------------------------------------- |
|
|
1921
|
+
| **Storage** | In-memory (Node.js process) | Persistent (KVS Custom Entities) |
|
|
1922
|
+
| **Scope** | Single forge invocation | Cross-invocation (between calls) |
|
|
1923
|
+
| **Persistence** | No (cleared on invocation end) | Yes (survives app redeploy) |
|
|
1924
|
+
| **Performance** | Very fast (memory access) | Fast (KVS optimized storage) |
|
|
1925
|
+
| **Memory Usage** | Low (invocation-scoped) | Higher (persistent storage) |
|
|
1926
|
+
| **Use Case** | Invocation optimization | Cross-invocation data sharing |
|
|
1927
|
+
| **Configuration** | None required | Requires KVS setup |
|
|
1928
|
+
| **TTL Support** | No (invocation-scoped) | Yes (TTL via Forge KVS, async deletion up to 48h) |
|
|
1929
|
+
| **Cache Eviction** | Automatic on DML operations | Manual or scheduled cleanup (optional if cache impacts performance) |
|
|
1930
|
+
| **Best For** | Repeated queries in single invocation | Frequently accessed data across invocations |
|
|
1919
1931
|
|
|
1920
1932
|
#### Integration with Global Cache (Level 2)
|
|
1921
1933
|
|
|
@@ -2518,12 +2530,22 @@ SET foreign_key_checks = 1;
|
|
|
2518
2530
|
|
|
2519
2531
|
### 4. Clear Cache Scheduler Trigger
|
|
2520
2532
|
|
|
2521
|
-
This trigger automatically cleans up expired cache entries based on their TTL (Time To Live).
|
|
2533
|
+
This trigger automatically cleans up expired cache entries based on their TTL (Time To Live).
|
|
2534
|
+
|
|
2535
|
+
**⚠️ Important:** While Forge KVS uses TTL to mark entries as expired, **actual deletion is asynchronous and may take up to 48 hours**. During this window, read operations may still return expired results. If your cache grows large and impacts INSERT/UPDATE performance, you should use this scheduler trigger to proactively clean up expired entries.
|
|
2522
2536
|
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
-
|
|
2526
|
-
-
|
|
2537
|
+
**When to use:**
|
|
2538
|
+
|
|
2539
|
+
- Your cache grows large over time
|
|
2540
|
+
- INSERT/UPDATE operations are slowing down due to cache size
|
|
2541
|
+
- You need strict expiry semantics (immediate cleanup)
|
|
2542
|
+
- You want to reduce storage costs proactively
|
|
2543
|
+
|
|
2544
|
+
**When optional:**
|
|
2545
|
+
|
|
2546
|
+
- Small cache footprint
|
|
2547
|
+
- No performance impact on data modifications
|
|
2548
|
+
- You can tolerate expired entries being returned for up to 48 hours
|
|
2527
2549
|
|
|
2528
2550
|
```typescript
|
|
2529
2551
|
// Example usage in your Forge app
|
|
@@ -2536,9 +2558,10 @@ export const clearCache = () => {
|
|
|
2536
2558
|
};
|
|
2537
2559
|
```
|
|
2538
2560
|
|
|
2539
|
-
Configure in `manifest.yml
|
|
2561
|
+
Configure in `manifest.yml` (optional - only if cache growth impacts INSERT/UPDATE performance):
|
|
2540
2562
|
|
|
2541
2563
|
```yaml
|
|
2564
|
+
# Optional: Only needed if cache growth impacts INSERT/UPDATE performance
|
|
2542
2565
|
scheduledTrigger:
|
|
2543
2566
|
- key: clear-cache-trigger
|
|
2544
2567
|
function: clearCache
|
|
@@ -168,6 +168,10 @@ export declare class ForgeSQLAnalyseOperation implements SchemaAnalyzeForgeSql {
|
|
|
168
168
|
* @param {ForgeSqlOperation} forgeOperations - The ForgeSQL operations instance
|
|
169
169
|
*/
|
|
170
170
|
constructor(forgeOperations: ForgeSqlOperation);
|
|
171
|
+
/**
|
|
172
|
+
* Maps decoded plan row to ExplainAnalyzeRow format.
|
|
173
|
+
*/
|
|
174
|
+
private mapDecodedPlanRow;
|
|
171
175
|
/**
|
|
172
176
|
* Executes EXPLAIN on a raw SQL query.
|
|
173
177
|
* @param {string} query - The SQL query to analyze
|
|
@@ -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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"}
|
|
@@ -18,16 +18,10 @@ class ForgeSQLAnalyseOperation {
|
|
|
18
18
|
this.mapToCamelCaseClusterStatement = this.mapToCamelCaseClusterStatement.bind(this);
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
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
|
|
21
|
+
* Maps decoded plan row to ExplainAnalyzeRow format.
|
|
25
22
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
.fetch()
|
|
29
|
-
.executeRawSQL(`EXPLAIN ${query}`, bindParams);
|
|
30
|
-
return results.map((row) => ({
|
|
23
|
+
mapDecodedPlanRow(row) {
|
|
24
|
+
return {
|
|
31
25
|
id: row.id,
|
|
32
26
|
estRows: row.estRows,
|
|
33
27
|
actRows: row.actRows,
|
|
@@ -37,7 +31,19 @@ class ForgeSQLAnalyseOperation {
|
|
|
37
31
|
operatorInfo: row["operator info"],
|
|
38
32
|
memory: row.memory,
|
|
39
33
|
disk: row.disk,
|
|
40
|
-
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Executes EXPLAIN on a raw SQL query.
|
|
38
|
+
* @param {string} query - The SQL query to analyze
|
|
39
|
+
* @param {unknown[]} bindParams - The query parameters
|
|
40
|
+
* @returns {Promise<ExplainAnalyzeRow[]>} The execution plan analysis results
|
|
41
|
+
*/
|
|
42
|
+
async explainRaw(query, bindParams) {
|
|
43
|
+
const results = await this.forgeOperations
|
|
44
|
+
.fetch()
|
|
45
|
+
.executeRawSQL(`EXPLAIN ${query}`, bindParams);
|
|
46
|
+
return results.map((row) => this.mapDecodedPlanRow(row));
|
|
41
47
|
}
|
|
42
48
|
/**
|
|
43
49
|
* Executes EXPLAIN on a Drizzle query.
|
|
@@ -58,17 +64,7 @@ class ForgeSQLAnalyseOperation {
|
|
|
58
64
|
const results = await this.forgeOperations
|
|
59
65
|
.fetch()
|
|
60
66
|
.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
|
-
}));
|
|
67
|
+
return results.map((row) => this.mapDecodedPlanRow(row));
|
|
72
68
|
}
|
|
73
69
|
/**
|
|
74
70
|
* Executes EXPLAIN ANALYZE on a Drizzle query.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgeSQLAnalyseOperations.js","sourceRoot":"","sources":["../../src/core/ForgeSQLAnalyseOperations.ts"],"names":[],"mappings":";;;AASA,6CAAiD;AACjD,iCAAiC;AA+KjC;;;GAGG;AACH,MAAa,wBAAwB;IAClB,eAAe,CAAoB;IAEpD;;;OAGG;IACH,YAAY,eAAkC;QAC5C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"ForgeSQLAnalyseOperations.js","sourceRoot":"","sources":["../../src/core/ForgeSQLAnalyseOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,6 +93,18 @@ export declare class ForgeSQLCrudOperations implements VerioningModificationForg
|
|
|
93
93
|
* @throws {Error} If no primary keys are found
|
|
94
94
|
*/
|
|
95
95
|
private getPrimaryKeys;
|
|
96
|
+
/**
|
|
97
|
+
* Finds version field in columns by name.
|
|
98
|
+
*/
|
|
99
|
+
private findVersionField;
|
|
100
|
+
/**
|
|
101
|
+
* Validates that version field is not nullable.
|
|
102
|
+
*/
|
|
103
|
+
private validateVersionFieldNotNull;
|
|
104
|
+
/**
|
|
105
|
+
* Validates that version field type is supported.
|
|
106
|
+
*/
|
|
107
|
+
private validateVersionFieldType;
|
|
96
108
|
/**
|
|
97
109
|
* Validates and retrieves version field metadata.
|
|
98
110
|
* @param {string} tableName - The name of the table
|
|
@@ -120,6 +132,10 @@ export declare class ForgeSQLCrudOperations implements VerioningModificationForg
|
|
|
120
132
|
* @returns {InferInsertModel<T>} The prepared model
|
|
121
133
|
*/
|
|
122
134
|
private prepareModelWithVersion;
|
|
135
|
+
/**
|
|
136
|
+
* Calculates new version value based on field type.
|
|
137
|
+
*/
|
|
138
|
+
private calculateNewVersionValue;
|
|
123
139
|
/**
|
|
124
140
|
* Prepares update data with version field.
|
|
125
141
|
* @template T - The type of the table schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgeSQLCrudOperations.d.ts","sourceRoot":"","sources":["../../src/core/ForgeSQLCrudOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAsB,gBAAgB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAIxE;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,6BAA6B;IAC1E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C;;;;OAIG;gBACS,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB;IAK9E;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CAAC,CAAC,SAAS,aAAa,EAClC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC7B,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC,MAAM,CAAC;IA6BlB;;;;;;;;;;;;;;;;OAgBG;IACG,UAAU,CAAC,CAAC,SAAS,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAqClF;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,UAAU,CAAC,CAAC,SAAS,aAAa,EACtC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,MAAM,CAAC;IAwDlB;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,CAAC,SAAS,aAAa,EACxC,UAAU,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACxC,MAAM,EAAE,CAAC,EACT,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GACnB,OAAO,CAAC,MAAM,CAAC;IAclB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAStB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"ForgeSQLCrudOperations.d.ts","sourceRoot":"","sources":["../../src/core/ForgeSQLCrudOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAsB,gBAAgB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAIxE;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,6BAA6B;IAC1E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C;;;;OAIG;gBACS,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB;IAK9E;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CAAC,CAAC,SAAS,aAAa,EAClC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC7B,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC,MAAM,CAAC;IA6BlB;;;;;;;;;;;;;;;;OAgBG;IACG,UAAU,CAAC,CAAC,SAAS,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAqClF;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,UAAU,CAAC,CAAC,SAAS,aAAa,EACtC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,MAAM,CAAC;IAwDlB;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,CAAC,SAAS,aAAa,EACxC,UAAU,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACxC,MAAM,EAAE,CAAC,EACT,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GACnB,OAAO,CAAC,MAAM,CAAC;IAclB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAenC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;;;;;;;;OASG;YACW,iBAAiB;IAyB/B;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IA2B/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;;;;;OAQG;YACW,WAAW;CA2B1B"}
|
|
@@ -200,18 +200,9 @@ class ForgeSQLCrudOperations {
|
|
|
200
200
|
return primaryKeys;
|
|
201
201
|
}
|
|
202
202
|
/**
|
|
203
|
-
*
|
|
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
|
|
203
|
+
* Finds version field in columns by name.
|
|
207
204
|
*/
|
|
208
|
-
|
|
209
|
-
if (this.options.disableOptimisticLocking) {
|
|
210
|
-
return undefined;
|
|
211
|
-
}
|
|
212
|
-
const versionMetadata = this.options.additionalMetadata?.[tableName]?.versionField;
|
|
213
|
-
if (!versionMetadata)
|
|
214
|
-
return undefined;
|
|
205
|
+
findVersionField(versionMetadata, columns) {
|
|
215
206
|
let fieldName = versionMetadata.fieldName;
|
|
216
207
|
let versionField = columns[versionMetadata.fieldName];
|
|
217
208
|
if (!versionField) {
|
|
@@ -221,29 +212,62 @@ class ForgeSQLCrudOperations {
|
|
|
221
212
|
versionField = find[1];
|
|
222
213
|
}
|
|
223
214
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
215
|
+
return versionField ? { fieldName, field: versionField } : null;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Validates that version field is not nullable.
|
|
219
|
+
*/
|
|
220
|
+
validateVersionFieldNotNull(versionMetadata, versionField, tableName) {
|
|
229
221
|
if (!versionField.notNull) {
|
|
230
222
|
// eslint-disable-next-line no-console
|
|
231
223
|
console.warn(`Version field "${versionMetadata.fieldName}" in table ${tableName} is nullable. Versioning may not work correctly.`);
|
|
232
|
-
return
|
|
224
|
+
return false;
|
|
233
225
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Validates that version field type is supported.
|
|
230
|
+
*/
|
|
231
|
+
validateVersionFieldType(versionMetadata, fieldType, tableName) {
|
|
232
|
+
const supportedTypes = ["datetime", "timestamp", "int", "number", "decimal"];
|
|
233
|
+
const isSupportedType = supportedTypes.includes(fieldType);
|
|
240
234
|
if (!isSupportedType) {
|
|
241
235
|
// eslint-disable-next-line no-console
|
|
242
236
|
console.warn(`Version field "${versionMetadata.fieldName}" in table ${tableName} has unsupported type "${fieldType}". ` +
|
|
243
237
|
`Only datetime, timestamp, int, and decimal types are supported for versioning. Versioning will be skipped.`);
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Validates and retrieves version field metadata.
|
|
244
|
+
* @param {string} tableName - The name of the table
|
|
245
|
+
* @param {Record<string, AnyColumn>} columns - The table columns
|
|
246
|
+
* @returns {Object | undefined} Version field metadata if valid, undefined otherwise
|
|
247
|
+
*/
|
|
248
|
+
validateVersionField(tableName, columns) {
|
|
249
|
+
// Early exit conditions
|
|
250
|
+
if (this.options.disableOptimisticLocking) {
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
const versionMetadata = this.options.additionalMetadata?.[tableName]?.versionField;
|
|
254
|
+
if (!versionMetadata) {
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
257
|
+
// Find and validate version field
|
|
258
|
+
const found = this.findVersionField(versionMetadata, columns);
|
|
259
|
+
if (!found) {
|
|
260
|
+
// eslint-disable-next-line no-console
|
|
261
|
+
console.warn(`Version field "${versionMetadata.fieldName}" not found in table ${tableName}. Versioning will be skipped.`);
|
|
244
262
|
return undefined;
|
|
245
263
|
}
|
|
246
|
-
|
|
264
|
+
// Validate field properties
|
|
265
|
+
const isValid = this.validateVersionFieldNotNull(versionMetadata, found.field, tableName) &&
|
|
266
|
+
this.validateVersionFieldType(versionMetadata, found.field.getSQLType(), tableName);
|
|
267
|
+
if (!isValid) {
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
return { fieldName: found.fieldName, type: found.field.getSQLType() };
|
|
247
271
|
}
|
|
248
272
|
/**
|
|
249
273
|
* Gets the current version of an entity.
|
|
@@ -291,10 +315,20 @@ class ForgeSQLCrudOperations {
|
|
|
291
315
|
return model;
|
|
292
316
|
const modelWithVersion = { ...model };
|
|
293
317
|
const fieldType = versionField.getSQLType();
|
|
294
|
-
const
|
|
318
|
+
const dateTimeTypes = ["datetime", "timestamp"];
|
|
319
|
+
const versionValue = dateTimeTypes.includes(fieldType) ? new Date() : 1;
|
|
295
320
|
modelWithVersion[fieldName] = versionValue;
|
|
296
321
|
return modelWithVersion;
|
|
297
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Calculates new version value based on field type.
|
|
325
|
+
*/
|
|
326
|
+
calculateNewVersionValue(fieldType, currentVersion) {
|
|
327
|
+
const dateTimeTypes = ["datetime", "timestamp"];
|
|
328
|
+
return dateTimeTypes.includes(fieldType)
|
|
329
|
+
? new Date()
|
|
330
|
+
: (currentVersion + 1);
|
|
331
|
+
}
|
|
298
332
|
/**
|
|
299
333
|
* Prepares update data with version field.
|
|
300
334
|
* @template T - The type of the table schema
|
|
@@ -311,9 +345,7 @@ class ForgeSQLCrudOperations {
|
|
|
311
345
|
if (versionField) {
|
|
312
346
|
const fieldType = versionField.getSQLType();
|
|
313
347
|
updateData[versionMetadata.fieldName] =
|
|
314
|
-
fieldType
|
|
315
|
-
? new Date()
|
|
316
|
-
: (currentVersion + 1);
|
|
348
|
+
this.calculateNewVersionValue(fieldType, currentVersion);
|
|
317
349
|
}
|
|
318
350
|
}
|
|
319
351
|
return updateData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgeSQLCrudOperations.js","sourceRoot":"","sources":["../../src/core/ForgeSQLCrudOperations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ForgeSQLCrudOperations.js","sourceRoot":"","sources":["../../src/core/ForgeSQLCrudOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,17 @@ import { DeleteAndEvictCacheType, ExecuteQuery, ExecuteQueryCacheable, InsertAnd
|
|
|
11
11
|
import { MySqlDeleteBase, MySqlInsertBuilder, MySqlSelectBase, MySqlUpdateBuilder } from "drizzle-orm/mysql-core/query-builders";
|
|
12
12
|
import { GetSelectTableName, GetSelectTableSelection, SelectResultField } from "drizzle-orm/query-builders/select.types";
|
|
13
13
|
import { SQLWrapper } from "drizzle-orm/sql/sql";
|
|
14
|
+
/**
|
|
15
|
+
* Type alias for MySqlSelectBase return type used in selectFrom methods.
|
|
16
|
+
* Reduces code duplication in type definitions.
|
|
17
|
+
*/
|
|
18
|
+
export type SelectFromReturnType<T extends MySqlTable> = MySqlSelectBase<GetSelectTableName<T>, GetSelectTableSelection<T>, "single", MySqlRemotePreparedQueryHKT, GetSelectTableName<T> extends string ? Record<string & GetSelectTableName<T>, "not-null"> : {}, false, never, {
|
|
19
|
+
[K in keyof {
|
|
20
|
+
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
21
|
+
}]: {
|
|
22
|
+
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
23
|
+
}[K];
|
|
24
|
+
}[], any>;
|
|
14
25
|
import type { MySqlQueryResultKind } from "drizzle-orm/mysql-core/session";
|
|
15
26
|
import type { WithBuilder } from "drizzle-orm/mysql-core/subquery";
|
|
16
27
|
import { WithSubquery } from "drizzle-orm/subquery";
|
|
@@ -162,13 +173,7 @@ export interface QueryBuilderForgeSql {
|
|
|
162
173
|
* const users = await forgeSQL.selectFrom(userTable).where(eq(userTable.id, 1));
|
|
163
174
|
* ```
|
|
164
175
|
*/
|
|
165
|
-
selectFrom<T extends MySqlTable>(table: T):
|
|
166
|
-
[K in keyof {
|
|
167
|
-
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
168
|
-
}]: {
|
|
169
|
-
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
170
|
-
}[K];
|
|
171
|
-
}[], any>;
|
|
176
|
+
selectFrom<T extends MySqlTable>(table: T): SelectFromReturnType<T>;
|
|
172
177
|
/**
|
|
173
178
|
* Creates a distinct select query with unique field aliases to prevent field name collisions in joins.
|
|
174
179
|
* This is particularly useful when working with Atlassian Forge SQL, which collapses fields with the same name in joined tables.
|
|
@@ -198,13 +203,7 @@ export interface QueryBuilderForgeSql {
|
|
|
198
203
|
* const uniqueUsers = await forgeSQL.selectDistinctFrom(userTable).where(eq(userTable.status, 'active'));
|
|
199
204
|
* ```
|
|
200
205
|
*/
|
|
201
|
-
selectDistinctFrom<T extends MySqlTable>(table: T):
|
|
202
|
-
[K in keyof {
|
|
203
|
-
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
204
|
-
}]: {
|
|
205
|
-
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
206
|
-
}[K];
|
|
207
|
-
}[], any>;
|
|
206
|
+
selectDistinctFrom<T extends MySqlTable>(table: T): SelectFromReturnType<T>;
|
|
208
207
|
/**
|
|
209
208
|
* Creates a cacheable select query with unique field aliases to prevent field name collisions in joins.
|
|
210
209
|
* This is particularly useful when working with Atlassian Forge SQL, which collapses fields with the same name in joined tables.
|
|
@@ -236,13 +235,7 @@ export interface QueryBuilderForgeSql {
|
|
|
236
235
|
* const users = await forgeSQL.selectCacheableFrom(userTable, 300).where(eq(userTable.id, 1));
|
|
237
236
|
* ```
|
|
238
237
|
*/
|
|
239
|
-
selectCacheableFrom<T extends MySqlTable>(table: T, cacheTTL?: number):
|
|
240
|
-
[K in keyof {
|
|
241
|
-
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
242
|
-
}]: {
|
|
243
|
-
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
244
|
-
}[K];
|
|
245
|
-
}[], any>;
|
|
238
|
+
selectCacheableFrom<T extends MySqlTable>(table: T, cacheTTL?: number): SelectFromReturnType<T>;
|
|
246
239
|
/**
|
|
247
240
|
* Creates a cacheable distinct select query with unique field aliases to prevent field name collisions in joins.
|
|
248
241
|
* This is particularly useful when working with Atlassian Forge SQL, which collapses fields with the same name in joined tables.
|
|
@@ -274,13 +267,7 @@ export interface QueryBuilderForgeSql {
|
|
|
274
267
|
* const uniqueUsers = await forgeSQL.selectDistinctCacheableFrom(userTable, 300).where(eq(userTable.status, 'active'));
|
|
275
268
|
* ```
|
|
276
269
|
*/
|
|
277
|
-
selectDistinctCacheableFrom<T extends MySqlTable>(table: T, cacheTTL?: number):
|
|
278
|
-
[K in keyof {
|
|
279
|
-
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
280
|
-
}]: {
|
|
281
|
-
[Key in keyof GetSelectTableSelection<T>]: SelectResultField<GetSelectTableSelection<T>[Key]>;
|
|
282
|
-
}[K];
|
|
283
|
-
}[], any>;
|
|
270
|
+
selectDistinctCacheableFrom<T extends MySqlTable>(table: T, cacheTTL?: number): SelectFromReturnType<T>;
|
|
284
271
|
/**
|
|
285
272
|
* Creates an insert query builder.
|
|
286
273
|
*
|