@objectstack/objectql 3.3.0 → 3.3.1
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/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +8 -0
- package/dist/index.d.mts +7 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.js +61 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +61 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/plugin.integration.test.ts +212 -0
- package/src/plugin.ts +71 -16
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @objectstack/objectql@3.3.
|
|
2
|
+
> @objectstack/objectql@3.3.1 build /home/runner/work/spec/spec/packages/objectql
|
|
3
3
|
> tsup --config ../../tsup.config.ts
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
13
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m98.69 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m201.00 KB[39m
|
|
15
|
+
[32mESM[39m ⚡️ Build success in 247ms
|
|
16
|
+
[32mCJS[39m [1mdist/index.js [22m[32m100.43 KB[39m
|
|
17
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m202.30 KB[39m
|
|
18
|
+
[32mCJS[39m ⚡️ Build success in 256ms
|
|
19
19
|
[34mDTS[39m Build start
|
|
20
|
-
[32mDTS[39m ⚡️ Build success in
|
|
21
|
-
[32mDTS[39m [1mdist/index.d.mts [22m[32m78.
|
|
22
|
-
[32mDTS[39m [1mdist/index.d.ts [22m[32m78.
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 25891ms
|
|
21
|
+
[32mDTS[39m [1mdist/index.d.mts [22m[32m78.82 KB[39m
|
|
22
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m78.82 KB[39m
|
package/CHANGELOG.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -1897,9 +1897,13 @@ declare class ObjectQLPlugin implements Plugin {
|
|
|
1897
1897
|
/**
|
|
1898
1898
|
* Synchronize all registered object schemas to the database.
|
|
1899
1899
|
*
|
|
1900
|
-
*
|
|
1901
|
-
*
|
|
1902
|
-
*
|
|
1900
|
+
* Groups objects by their responsible driver, then:
|
|
1901
|
+
* - If the driver advertises `supports.batchSchemaSync` and implements
|
|
1902
|
+
* `syncSchemasBatch()`, submits all schemas in a single call (reducing
|
|
1903
|
+
* network round-trips for remote drivers like Turso).
|
|
1904
|
+
* - Otherwise falls back to sequential `syncSchema()` per object.
|
|
1905
|
+
*
|
|
1906
|
+
* This is idempotent — drivers must tolerate repeated calls without
|
|
1903
1907
|
* duplicating tables or erroring out.
|
|
1904
1908
|
*
|
|
1905
1909
|
* Drivers that do not implement `syncSchema` are silently skipped.
|
package/dist/index.d.ts
CHANGED
|
@@ -1897,9 +1897,13 @@ declare class ObjectQLPlugin implements Plugin {
|
|
|
1897
1897
|
/**
|
|
1898
1898
|
* Synchronize all registered object schemas to the database.
|
|
1899
1899
|
*
|
|
1900
|
-
*
|
|
1901
|
-
*
|
|
1902
|
-
*
|
|
1900
|
+
* Groups objects by their responsible driver, then:
|
|
1901
|
+
* - If the driver advertises `supports.batchSchemaSync` and implements
|
|
1902
|
+
* `syncSchemasBatch()`, submits all schemas in a single call (reducing
|
|
1903
|
+
* network round-trips for remote drivers like Turso).
|
|
1904
|
+
* - Otherwise falls back to sequential `syncSchema()` per object.
|
|
1905
|
+
*
|
|
1906
|
+
* This is idempotent — drivers must tolerate repeated calls without
|
|
1903
1907
|
* duplicating tables or erroring out.
|
|
1904
1908
|
*
|
|
1905
1909
|
* Drivers that do not implement `syncSchema` are silently skipped.
|
package/dist/index.js
CHANGED
|
@@ -2770,9 +2770,13 @@ var ObjectQLPlugin = class {
|
|
|
2770
2770
|
/**
|
|
2771
2771
|
* Synchronize all registered object schemas to the database.
|
|
2772
2772
|
*
|
|
2773
|
-
*
|
|
2774
|
-
*
|
|
2775
|
-
*
|
|
2773
|
+
* Groups objects by their responsible driver, then:
|
|
2774
|
+
* - If the driver advertises `supports.batchSchemaSync` and implements
|
|
2775
|
+
* `syncSchemasBatch()`, submits all schemas in a single call (reducing
|
|
2776
|
+
* network round-trips for remote drivers like Turso).
|
|
2777
|
+
* - Otherwise falls back to sequential `syncSchema()` per object.
|
|
2778
|
+
*
|
|
2779
|
+
* This is idempotent — drivers must tolerate repeated calls without
|
|
2776
2780
|
* duplicating tables or erroring out.
|
|
2777
2781
|
*
|
|
2778
2782
|
* Drivers that do not implement `syncSchema` are silently skipped.
|
|
@@ -2783,6 +2787,7 @@ var ObjectQLPlugin = class {
|
|
|
2783
2787
|
if (allObjects.length === 0) return;
|
|
2784
2788
|
let synced = 0;
|
|
2785
2789
|
let skipped = 0;
|
|
2790
|
+
const driverGroups = /* @__PURE__ */ new Map();
|
|
2786
2791
|
for (const obj of allObjects) {
|
|
2787
2792
|
const driver = this.ql.getDriverForObject(obj.name);
|
|
2788
2793
|
if (!driver) {
|
|
@@ -2801,16 +2806,59 @@ var ObjectQLPlugin = class {
|
|
|
2801
2806
|
continue;
|
|
2802
2807
|
}
|
|
2803
2808
|
const tableName = obj.tableName || obj.name;
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2809
|
+
let group = driverGroups.get(driver);
|
|
2810
|
+
if (!group) {
|
|
2811
|
+
group = [];
|
|
2812
|
+
driverGroups.set(driver, group);
|
|
2813
|
+
}
|
|
2814
|
+
group.push({ obj, tableName });
|
|
2815
|
+
}
|
|
2816
|
+
for (const [driver, entries] of driverGroups) {
|
|
2817
|
+
if (driver.supports?.batchSchemaSync && typeof driver.syncSchemasBatch === "function") {
|
|
2818
|
+
const batchPayload = entries.map((e) => ({
|
|
2819
|
+
object: e.tableName,
|
|
2820
|
+
schema: e.obj
|
|
2821
|
+
}));
|
|
2822
|
+
try {
|
|
2823
|
+
await driver.syncSchemasBatch(batchPayload);
|
|
2824
|
+
synced += entries.length;
|
|
2825
|
+
ctx.logger.debug("Batch schema sync succeeded", {
|
|
2826
|
+
driver: driver.name,
|
|
2827
|
+
count: entries.length
|
|
2828
|
+
});
|
|
2829
|
+
} catch (e) {
|
|
2830
|
+
ctx.logger.warn("Batch schema sync failed, falling back to sequential", {
|
|
2831
|
+
driver: driver.name,
|
|
2832
|
+
error: e instanceof Error ? e.message : String(e)
|
|
2833
|
+
});
|
|
2834
|
+
for (const { obj, tableName } of entries) {
|
|
2835
|
+
try {
|
|
2836
|
+
await driver.syncSchema(tableName, obj);
|
|
2837
|
+
synced++;
|
|
2838
|
+
} catch (seqErr) {
|
|
2839
|
+
ctx.logger.warn("Failed to sync schema for object", {
|
|
2840
|
+
object: obj.name,
|
|
2841
|
+
tableName,
|
|
2842
|
+
driver: driver.name,
|
|
2843
|
+
error: seqErr instanceof Error ? seqErr.message : String(seqErr)
|
|
2844
|
+
});
|
|
2845
|
+
}
|
|
2846
|
+
}
|
|
2847
|
+
}
|
|
2848
|
+
} else {
|
|
2849
|
+
for (const { obj, tableName } of entries) {
|
|
2850
|
+
try {
|
|
2851
|
+
await driver.syncSchema(tableName, obj);
|
|
2852
|
+
synced++;
|
|
2853
|
+
} catch (e) {
|
|
2854
|
+
ctx.logger.warn("Failed to sync schema for object", {
|
|
2855
|
+
object: obj.name,
|
|
2856
|
+
tableName,
|
|
2857
|
+
driver: driver.name,
|
|
2858
|
+
error: e instanceof Error ? e.message : String(e)
|
|
2859
|
+
});
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2814
2862
|
}
|
|
2815
2863
|
}
|
|
2816
2864
|
if (synced > 0 || skipped > 0) {
|