@kyro-cms/core 0.9.1 → 0.9.2
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 +0 -6
- package/dist/{WebhookService-Yg2UEOB4.d.cts → WebhookService-BKszZlG0.d.cts} +1 -1
- package/dist/{WebhookService-CUTb9XOy.d.ts → WebhookService-Ccf1j-IN.d.ts} +1 -1
- package/dist/api-handler-graphql.cjs +17 -17
- package/dist/api-handler-graphql.js +13 -13
- package/dist/api-handler-trpc.cjs +15 -15
- package/dist/api-handler-trpc.js +13 -13
- package/dist/api-handler.cjs +16 -16
- package/dist/api-handler.js +13 -13
- package/dist/{base-DaqY2GhA.d.ts → base-CIuXkrH4.d.cts} +3 -5
- package/dist/{base-B71y_EAF.d.cts → base-fFo4lqER.d.ts} +3 -5
- package/dist/bootstrap-3PV3GJ3S.js +7 -0
- package/dist/{bootstrap-T5BK77LD.js.map → bootstrap-3PV3GJ3S.js.map} +1 -1
- package/dist/bootstrap-4CELFLJO.cjs +32 -0
- package/dist/{bootstrap-5NLASFOG.cjs.map → bootstrap-4CELFLJO.cjs.map} +1 -1
- package/dist/{chunk-Z6ZWNWWR.js → chunk-4CV4JOE5.js} +3 -9
- package/dist/{chunk-Z6ZWNWWR.js.map → chunk-4CV4JOE5.js.map} +1 -1
- package/dist/{chunk-5EPFQUQD.js → chunk-53NYVYVX.js} +6 -6
- package/dist/chunk-53NYVYVX.js.map +1 -0
- package/dist/{chunk-22M4O4ZJ.js → chunk-5H3MWQJS.js} +129 -143
- package/dist/chunk-5H3MWQJS.js.map +1 -0
- package/dist/{chunk-RAMGUDJN.cjs → chunk-5PMQQFRE.cjs} +5 -5
- package/dist/{chunk-RAMGUDJN.cjs.map → chunk-5PMQQFRE.cjs.map} +1 -1
- package/dist/{chunk-TXSZFA4G.js → chunk-6UNONDW7.js} +93 -9
- package/dist/chunk-6UNONDW7.js.map +1 -0
- package/dist/{chunk-C36TMDTY.cjs → chunk-7OS7TX2Q.cjs} +49 -48
- package/dist/chunk-7OS7TX2Q.cjs.map +1 -0
- package/dist/{chunk-3TPQ2BU6.js → chunk-BYBMTIMT.js} +2 -6
- package/dist/chunk-BYBMTIMT.js.map +1 -0
- package/dist/{chunk-FOPGUM27.js → chunk-CJX74IYK.js} +5 -4
- package/dist/chunk-CJX74IYK.js.map +1 -0
- package/dist/{chunk-RSF3UU7H.cjs → chunk-CNKT4PME.cjs} +196 -200
- package/dist/chunk-CNKT4PME.cjs.map +1 -0
- package/dist/{chunk-G7VZBCD6.cjs → chunk-CZLDE2OZ.cjs} +2 -9
- package/dist/{chunk-G7VZBCD6.cjs.map → chunk-CZLDE2OZ.cjs.map} +1 -1
- package/dist/{chunk-JOPVMWTM.cjs → chunk-DPA3KWPY.cjs} +3 -3
- package/dist/chunk-DPA3KWPY.cjs.map +1 -0
- package/dist/{chunk-ROJHKAQ4.cjs → chunk-E2763JUP.cjs} +143 -157
- package/dist/chunk-E2763JUP.cjs.map +1 -0
- package/dist/{chunk-FAXU7BMP.js → chunk-E5UJBLQ7.js} +2 -2
- package/dist/chunk-E5UJBLQ7.js.map +1 -0
- package/dist/{chunk-DVD5P72E.cjs → chunk-EEJUFDMF.cjs} +2 -6
- package/dist/chunk-EEJUFDMF.cjs.map +1 -0
- package/dist/{chunk-2HZRBATX.cjs → chunk-FSKONGCX.cjs} +2 -2
- package/dist/chunk-FSKONGCX.cjs.map +1 -0
- package/dist/{chunk-P2HKJ7P5.js → chunk-GAAHG2Z4.js} +3 -3
- package/dist/{chunk-P2HKJ7P5.js.map → chunk-GAAHG2Z4.js.map} +1 -1
- package/dist/{chunk-PI73NNOK.cjs → chunk-GUUB5EAG.cjs} +2 -2
- package/dist/chunk-GUUB5EAG.cjs.map +1 -0
- package/dist/{chunk-PU2Z5VWF.js → chunk-IPTZM3VE.js} +183 -187
- package/dist/chunk-IPTZM3VE.js.map +1 -0
- package/dist/{chunk-UERVXYVK.cjs → chunk-NWUEVLQT.cjs} +13 -13
- package/dist/{chunk-UERVXYVK.cjs.map → chunk-NWUEVLQT.cjs.map} +1 -1
- package/dist/{chunk-KPA4AN4R.js → chunk-OHC6UHFY.js} +86 -12
- package/dist/chunk-OHC6UHFY.js.map +1 -0
- package/dist/{chunk-DEVFAKCQ.cjs → chunk-PHJRNPHY.cjs} +6 -6
- package/dist/chunk-PHJRNPHY.cjs.map +1 -0
- package/dist/{chunk-VO35MNPH.js → chunk-PQ72Z6WC.js} +67 -105
- package/dist/chunk-PQ72Z6WC.js.map +1 -0
- package/dist/{chunk-KNRSROWB.cjs → chunk-PV2I2KMI.cjs} +86 -12
- package/dist/chunk-PV2I2KMI.cjs.map +1 -0
- package/dist/{chunk-V2TVSCV5.cjs → chunk-Q23GAMLE.cjs} +71 -109
- package/dist/chunk-Q23GAMLE.cjs.map +1 -0
- package/dist/{chunk-COIASRDK.cjs → chunk-RFFSZSCL.cjs} +107 -171
- package/dist/chunk-RFFSZSCL.cjs.map +1 -0
- package/dist/{chunk-AL5KX63J.js → chunk-UUDTPZX6.js} +3 -3
- package/dist/chunk-UUDTPZX6.js.map +1 -0
- package/dist/{chunk-EJN2PAOE.js → chunk-V7KZQIZ6.js} +102 -166
- package/dist/chunk-V7KZQIZ6.js.map +1 -0
- package/dist/{chunk-DYTZ6FQ7.js → chunk-WXVB364T.js} +2 -2
- package/dist/chunk-WXVB364T.js.map +1 -0
- package/dist/{chunk-WNCYAKF3.cjs → chunk-Y7AQK4R4.cjs} +93 -9
- package/dist/chunk-Y7AQK4R4.cjs.map +1 -0
- package/dist/{chunk-SPBTLUN6.js → chunk-YFAVQQTU.js} +7 -7
- package/dist/{chunk-SPBTLUN6.js.map → chunk-YFAVQQTU.js.map} +1 -1
- package/dist/cli/index.cjs +5 -5
- package/dist/cli/index.js +5 -5
- package/dist/client.cjs +4 -4
- package/dist/client.d.cts +2 -2
- package/dist/client.d.ts +2 -2
- package/dist/client.js +2 -2
- package/dist/drizzle/index.cjs +14 -14
- package/dist/drizzle/index.d.cts +4 -10
- package/dist/drizzle/index.d.ts +4 -10
- package/dist/drizzle/index.js +5 -5
- package/dist/fields/index.cjs +22 -22
- package/dist/fields/index.d.cts +1 -1
- package/dist/fields/index.d.ts +1 -1
- package/dist/fields/index.js +2 -2
- package/dist/graphql/index.cjs +1 -1
- package/dist/graphql/index.d.cts +3 -3
- package/dist/graphql/index.d.ts +3 -3
- package/dist/graphql/index.js +1 -1
- package/dist/{index-CaTNnLGd.d.cts → index-BKta3cBH.d.cts} +3 -2
- package/dist/{index-CJXPB_ot.d.ts → index-ClOqnkTO.d.ts} +3 -2
- package/dist/index.cjs +117 -117
- package/dist/index.d.cts +10 -15
- package/dist/index.d.ts +10 -15
- package/dist/index.js +18 -18
- package/dist/integration.cjs +1 -1
- package/dist/integration.js +1 -1
- package/dist/media-7WDX4BDJ.js +4 -0
- package/dist/{media-GPPTZ43E.js.map → media-7WDX4BDJ.js.map} +1 -1
- package/dist/{media-XNTUFJZR.cjs → media-TUSLVRQ6.cjs} +3 -3
- package/dist/{media-XNTUFJZR.cjs.map → media-TUSLVRQ6.cjs.map} +1 -1
- package/dist/{mongo-auth-adapter-ISOM7FSS.cjs → mongo-auth-adapter-GT4S7SCU.cjs} +3 -3
- package/dist/{mongo-auth-adapter-ISOM7FSS.cjs.map → mongo-auth-adapter-GT4S7SCU.cjs.map} +1 -1
- package/dist/mongo-auth-adapter-M7VV4LNB.js +4 -0
- package/dist/{mongo-auth-adapter-MO6STCV3.js.map → mongo-auth-adapter-M7VV4LNB.js.map} +1 -1
- package/dist/mongodb/index.cjs +5 -5
- package/dist/mongodb/index.d.cts +4 -9
- package/dist/mongodb/index.d.ts +4 -9
- package/dist/mongodb/index.js +3 -3
- package/dist/postgres-auth-adapter-AFAPISH7.js +5 -0
- package/dist/{postgres-auth-adapter-DWDR7P5G.js.map → postgres-auth-adapter-AFAPISH7.js.map} +1 -1
- package/dist/postgres-auth-adapter-SFDTLONT.cjs +14 -0
- package/dist/{postgres-auth-adapter-WRWSJD4E.cjs.map → postgres-auth-adapter-SFDTLONT.cjs.map} +1 -1
- package/dist/{redis-adapter-KJ3YOOT6.cjs → redis-adapter-UQX4EE3B.cjs} +3 -3
- package/dist/{redis-adapter-KJ3YOOT6.cjs.map → redis-adapter-UQX4EE3B.cjs.map} +1 -1
- package/dist/redis-adapter-XALOGWY3.js +4 -0
- package/dist/{redis-adapter-HGTPWIGV.js.map → redis-adapter-XALOGWY3.js.map} +1 -1
- package/dist/rest/index.cjs +10 -10
- package/dist/rest/index.d.cts +4 -4
- package/dist/rest/index.d.ts +4 -4
- package/dist/rest/index.js +8 -8
- package/dist/{schema-TTFE4467.cjs → schema-6QL3USNB.cjs} +15 -15
- package/dist/{schema-TTFE4467.cjs.map → schema-6QL3USNB.cjs.map} +1 -1
- package/dist/{schema-6I5OFR4Z.js → schema-FNNWEAAW.js} +4 -4
- package/dist/{schema-6I5OFR4Z.js.map → schema-FNNWEAAW.js.map} +1 -1
- package/dist/{sqlite-adapter-CSIZE5SX.cjs → sqlite-adapter-AQB5TCGV.cjs} +3 -3
- package/dist/{sqlite-adapter-CSIZE5SX.cjs.map → sqlite-adapter-AQB5TCGV.cjs.map} +1 -1
- package/dist/sqlite-adapter-N5H6IM2X.js +4 -0
- package/dist/{sqlite-adapter-6GEUSVXQ.js.map → sqlite-adapter-N5H6IM2X.js.map} +1 -1
- package/dist/templates/index.cjs +49 -49
- package/dist/templates/index.d.cts +2 -2
- package/dist/templates/index.d.ts +2 -2
- package/dist/templates/index.js +2 -2
- package/dist/trpc/index.cjs +11 -11
- package/dist/trpc/index.d.cts +3 -3
- package/dist/trpc/index.d.ts +3 -3
- package/dist/trpc/index.js +2 -2
- package/dist/{types-Z6FBiqa2.d.cts → types-DeSApf9T.d.cts} +1 -0
- package/dist/{types-Z6FBiqa2.d.ts → types-DeSApf9T.d.ts} +1 -0
- package/dist/{types-CyCQ6SAI.d.ts → types-Dgzlftb7.d.ts} +6 -28
- package/dist/{types-DJxD9394.d.cts → types-Ds0tCA3L.d.cts} +6 -28
- package/dist/ws/index.cjs +6 -6
- package/dist/ws/index.js +2 -2
- package/package.json +1 -1
- package/dist/bootstrap-5NLASFOG.cjs +0 -32
- package/dist/bootstrap-T5BK77LD.js +0 -7
- package/dist/chunk-22M4O4ZJ.js.map +0 -1
- package/dist/chunk-2HZRBATX.cjs.map +0 -1
- package/dist/chunk-3TPQ2BU6.js.map +0 -1
- package/dist/chunk-5EPFQUQD.js.map +0 -1
- package/dist/chunk-AL5KX63J.js.map +0 -1
- package/dist/chunk-C36TMDTY.cjs.map +0 -1
- package/dist/chunk-COIASRDK.cjs.map +0 -1
- package/dist/chunk-DEVFAKCQ.cjs.map +0 -1
- package/dist/chunk-DVD5P72E.cjs.map +0 -1
- package/dist/chunk-DYTZ6FQ7.js.map +0 -1
- package/dist/chunk-EJN2PAOE.js.map +0 -1
- package/dist/chunk-FAXU7BMP.js.map +0 -1
- package/dist/chunk-FOPGUM27.js.map +0 -1
- package/dist/chunk-JOPVMWTM.cjs.map +0 -1
- package/dist/chunk-KNRSROWB.cjs.map +0 -1
- package/dist/chunk-KPA4AN4R.js.map +0 -1
- package/dist/chunk-PI73NNOK.cjs.map +0 -1
- package/dist/chunk-PU2Z5VWF.js.map +0 -1
- package/dist/chunk-ROJHKAQ4.cjs.map +0 -1
- package/dist/chunk-RSF3UU7H.cjs.map +0 -1
- package/dist/chunk-TXSZFA4G.js.map +0 -1
- package/dist/chunk-V2TVSCV5.cjs.map +0 -1
- package/dist/chunk-VO35MNPH.js.map +0 -1
- package/dist/chunk-WNCYAKF3.cjs.map +0 -1
- package/dist/media-GPPTZ43E.js +0 -4
- package/dist/mongo-auth-adapter-MO6STCV3.js +0 -4
- package/dist/postgres-auth-adapter-DWDR7P5G.js +0 -5
- package/dist/postgres-auth-adapter-WRWSJD4E.cjs +0 -14
- package/dist/redis-adapter-HGTPWIGV.js +0 -4
- package/dist/sqlite-adapter-6GEUSVXQ.js +0 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkGUUB5EAG_cjs = require('./chunk-GUUB5EAG.cjs');
|
|
4
4
|
var drizzleOrm = require('drizzle-orm');
|
|
5
5
|
var pgCore = require('drizzle-orm/pg-core');
|
|
6
6
|
var sqliteCore = require('drizzle-orm/sqlite-core');
|
|
@@ -83,17 +83,16 @@ function collectionToDrizzleSchema(collection, dialect = "postgres") {
|
|
|
83
83
|
lines.push(` createdAt: pg.timestamp('created_at').defaultNow(),`);
|
|
84
84
|
lines.push(` updatedAt: pg.timestamp('updated_at').defaultNow(),`);
|
|
85
85
|
}
|
|
86
|
-
lines.push(`
|
|
86
|
+
lines.push(` status: ${dialect === "sqlite" ? "sqlite" : "pg"}.varchar('status').default('draft'),`);
|
|
87
87
|
lines.push(` hasDraft: ${dialect === "sqlite" ? "sqlite" : "pg"}.boolean('hasDraft').default(false),`);
|
|
88
88
|
lines.push("});");
|
|
89
89
|
return lines.join("\n");
|
|
90
90
|
}
|
|
91
|
-
var DrizzleAdapter = class extends
|
|
91
|
+
var DrizzleAdapter = class extends chunkGUUB5EAG_cjs.AbstractBaseAdapter {
|
|
92
92
|
client;
|
|
93
93
|
schema;
|
|
94
94
|
dialect;
|
|
95
95
|
connectionString;
|
|
96
|
-
draftsTableReady = false;
|
|
97
96
|
versionsTableReady = false;
|
|
98
97
|
constructor(options) {
|
|
99
98
|
super();
|
|
@@ -281,7 +280,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
281
280
|
}
|
|
282
281
|
if (!columns.createdAt) columns.createdAt = this.dialect === "sqlite" ? sqliteCore.text("created_at").default((/* @__PURE__ */ new Date()).toISOString()) : pgCore.timestamp("created_at").defaultNow();
|
|
283
282
|
if (!columns.updatedAt) columns.updatedAt = this.dialect === "sqlite" ? sqliteCore.text("updated_at").default((/* @__PURE__ */ new Date()).toISOString()) : pgCore.timestamp("updated_at").defaultNow();
|
|
284
|
-
columns.
|
|
283
|
+
columns.status = this.dialect === "sqlite" ? sqliteCore.text("status").default("draft") : pgCore.varchar("status", { length: 20 }).default("draft");
|
|
285
284
|
columns.hasDraft = this.dialect === "sqlite" ? sqliteCore.integer("hasDraft", { mode: "boolean" }).default(false) : pgCore.boolean("hasDraft").default(false);
|
|
286
285
|
return this.dialect === "sqlite" ? sqliteCore.sqliteTable(tableName, columns) : pgCore.pgTable(tableName, columns);
|
|
287
286
|
}
|
|
@@ -301,7 +300,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
301
300
|
${colDefs}
|
|
302
301
|
${hasCreated ? "" : '"created_at" TIMESTAMP NOT NULL DEFAULT NOW(),'}
|
|
303
302
|
${hasUpdated ? "" : '"updated_at" TIMESTAMP NOT NULL DEFAULT NOW(),'}
|
|
304
|
-
"
|
|
303
|
+
"status" VARCHAR(20) DEFAULT 'draft',
|
|
305
304
|
"hasDraft" BOOLEAN DEFAULT false
|
|
306
305
|
)
|
|
307
306
|
`);
|
|
@@ -313,7 +312,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
313
312
|
${colDefs}
|
|
314
313
|
${hasCreated ? "" : `"created_at" TEXT NOT NULL DEFAULT (datetime('now')),`}
|
|
315
314
|
${hasUpdated ? "" : `"updated_at" TEXT NOT NULL DEFAULT (datetime('now')),`}
|
|
316
|
-
"
|
|
315
|
+
"status" TEXT DEFAULT 'draft',
|
|
317
316
|
"hasDraft" INTEGER DEFAULT 0
|
|
318
317
|
)
|
|
319
318
|
`);
|
|
@@ -391,13 +390,13 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
391
390
|
defs["id"] = isGlobal ? '"id" TEXT PRIMARY KEY' : '"id" UUID PRIMARY KEY DEFAULT gen_random_uuid()';
|
|
392
391
|
if (!hasCreated) defs["created_at"] = '"created_at" TIMESTAMP DEFAULT NULL';
|
|
393
392
|
if (!hasUpdated) defs["updated_at"] = '"updated_at" TIMESTAMP DEFAULT NULL';
|
|
394
|
-
defs["
|
|
393
|
+
defs["status"] = '"status" VARCHAR(20) DEFAULT NULL';
|
|
395
394
|
defs["hasDraft"] = '"hasDraft" BOOLEAN DEFAULT NULL';
|
|
396
395
|
} else {
|
|
397
396
|
defs["id"] = '"id" TEXT PRIMARY KEY';
|
|
398
397
|
if (!hasCreated) defs["created_at"] = '"created_at" TEXT DEFAULT NULL';
|
|
399
398
|
if (!hasUpdated) defs["updated_at"] = '"updated_at" TEXT DEFAULT NULL';
|
|
400
|
-
defs["
|
|
399
|
+
defs["status"] = '"status" TEXT DEFAULT NULL';
|
|
401
400
|
defs["hasDraft"] = '"hasDraft" INTEGER DEFAULT NULL';
|
|
402
401
|
}
|
|
403
402
|
for (const field of config.fields) {
|
|
@@ -520,15 +519,16 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
520
519
|
const table = this.getTable(slug);
|
|
521
520
|
let effectiveWhere = { ...where };
|
|
522
521
|
if (this.tenantContext && config.tenantScoped) {
|
|
523
|
-
const rlsQuery =
|
|
522
|
+
const rlsQuery = chunkGUUB5EAG_cjs.applyRLS({ where: effectiveWhere }, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG);
|
|
524
523
|
effectiveWhere = rlsQuery.where || {};
|
|
525
524
|
}
|
|
526
525
|
const filters = this.buildWhereClause(effectiveWhere, config, table, tenantID);
|
|
527
|
-
if (!draft && table.
|
|
528
|
-
filters.push(drizzleOrm.eq(table.
|
|
526
|
+
if (!draft && table.status) {
|
|
527
|
+
filters.push(drizzleOrm.eq(table.status, "published"));
|
|
529
528
|
}
|
|
530
529
|
const sortOption = this.parseSort(sort);
|
|
531
|
-
const
|
|
530
|
+
const countWhere = !draft && table.status ? { ...effectiveWhere, status: "published" } : effectiveWhere;
|
|
531
|
+
const totalDocs = await this.count({ collection: slug, where: countWhere, tenantID });
|
|
532
532
|
const offset = (page - 1) * limit;
|
|
533
533
|
let results = [];
|
|
534
534
|
try {
|
|
@@ -544,20 +544,21 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
544
544
|
}
|
|
545
545
|
let docs = results.map((doc) => this.processResult(doc, config));
|
|
546
546
|
if (this.tenantContext && !this.tenantContext.isSuperAdmin) {
|
|
547
|
-
docs = docs.filter((doc) =>
|
|
547
|
+
docs = docs.filter((doc) => chunkGUUB5EAG_cjs.canAccessDocument(doc, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG));
|
|
548
548
|
}
|
|
549
549
|
if (draft) {
|
|
550
550
|
docs = await Promise.all(docs.map(async (doc) => {
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
551
|
+
const versions = await this.executeRaw(drizzleOrm.sql`
|
|
552
|
+
SELECT * FROM kyro_versions
|
|
553
|
+
WHERE collection_slug = ${slug}
|
|
554
|
+
AND document_id = ${doc.id}
|
|
555
|
+
ORDER BY created_at DESC
|
|
556
|
+
LIMIT 1
|
|
557
|
+
`);
|
|
558
|
+
if (versions.length > 0) {
|
|
559
|
+
const ver = versions[0];
|
|
560
|
+
const versionData = typeof ver.data === "string" ? JSON.parse(ver.data) : ver.data;
|
|
561
|
+
return { ...doc, ...versionData, status: doc.status };
|
|
561
562
|
}
|
|
562
563
|
return doc;
|
|
563
564
|
}));
|
|
@@ -573,26 +574,29 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
573
574
|
const table = this.getTable(slug);
|
|
574
575
|
if (this.tenantContext && config.tenantScoped) {
|
|
575
576
|
const tempDoc = { id, tenantId: this.tenantContext.tenantId };
|
|
576
|
-
if (!
|
|
577
|
+
if (!chunkGUUB5EAG_cjs.canAccessDocument(tempDoc, slug, this.tenantContext, chunkGUUB5EAG_cjs.DEFAULT_RLS_CONFIG)) {
|
|
577
578
|
return null;
|
|
578
579
|
}
|
|
579
580
|
}
|
|
580
581
|
const conditions = [drizzleOrm.eq(table.id, id)];
|
|
581
582
|
if (tenantID && table.tenantId) conditions.push(drizzleOrm.eq(table.tenantId, tenantID));
|
|
582
|
-
if (!draft && table.
|
|
583
|
+
if (!draft && table.status) conditions.push(drizzleOrm.eq(table.status, "published"));
|
|
583
584
|
const whereClause = conditions.length > 1 ? drizzleOrm.and(...conditions) : conditions[0];
|
|
584
585
|
let allRows = await this.client.select().from(table).where(whereClause);
|
|
585
586
|
if (allRows.length === 0) return null;
|
|
586
587
|
let doc = this.processResult(allRows[0], config);
|
|
587
|
-
if (draft
|
|
588
|
-
const versions = await this.
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
588
|
+
if (draft) {
|
|
589
|
+
const versions = await this.executeRaw(drizzleOrm.sql`
|
|
590
|
+
SELECT * FROM kyro_versions
|
|
591
|
+
WHERE collection_slug = ${slug}
|
|
592
|
+
AND document_id = ${doc.id}
|
|
593
|
+
ORDER BY created_at DESC
|
|
594
|
+
LIMIT 1
|
|
595
|
+
`);
|
|
596
|
+
if (versions.length > 0) {
|
|
597
|
+
const ver = versions[0];
|
|
598
|
+
const versionData = typeof ver.data === "string" ? JSON.parse(ver.data) : ver.data;
|
|
599
|
+
doc = { ...doc, ...versionData, status: doc.status };
|
|
596
600
|
}
|
|
597
601
|
}
|
|
598
602
|
return doc;
|
|
@@ -663,21 +667,24 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
663
667
|
if (!globalConfig) throw new Error(`Global "${globalSlug}" not found`);
|
|
664
668
|
const table = this.getTable(slug);
|
|
665
669
|
let query = this.client.select().from(table);
|
|
666
|
-
if (!draft && table.
|
|
667
|
-
query = query.where(drizzleOrm.eq(table.
|
|
670
|
+
if (!draft && table.status) {
|
|
671
|
+
query = query.where(drizzleOrm.eq(table.status, "published"));
|
|
668
672
|
}
|
|
669
673
|
const results = await query.limit(1);
|
|
670
674
|
if (results.length === 0) return null;
|
|
671
675
|
let doc = this.processResult(results[0], globalConfig);
|
|
672
|
-
if (draft
|
|
673
|
-
const versions = await this.
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
676
|
+
if (draft) {
|
|
677
|
+
const versions = await this.executeRaw(drizzleOrm.sql`
|
|
678
|
+
SELECT * FROM kyro_versions
|
|
679
|
+
WHERE collection_slug = ${slug}
|
|
680
|
+
AND document_id = ${globalSlug}
|
|
681
|
+
ORDER BY created_at DESC
|
|
682
|
+
LIMIT 1
|
|
683
|
+
`);
|
|
684
|
+
if (versions.length > 0) {
|
|
685
|
+
const ver = versions[0];
|
|
686
|
+
const versionData = typeof ver.data === "string" ? JSON.parse(ver.data) : ver.data;
|
|
687
|
+
doc = { ...doc, ...versionData, status: doc.status };
|
|
681
688
|
}
|
|
682
689
|
}
|
|
683
690
|
return doc;
|
|
@@ -694,6 +701,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
694
701
|
FROM kyro_versions
|
|
695
702
|
WHERE collection_slug = ${slug}
|
|
696
703
|
AND document_id = ${documentId}
|
|
704
|
+
AND autosave = 0
|
|
697
705
|
${tenantID ? drizzleOrm.sql`AND tenant_id = ${tenantID}` : drizzleOrm.sql``}
|
|
698
706
|
`);
|
|
699
707
|
const totalDocs = parseInt(countResult[0]?.count || "0");
|
|
@@ -702,6 +710,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
702
710
|
FROM kyro_versions
|
|
703
711
|
WHERE collection_slug = ${slug}
|
|
704
712
|
AND document_id = ${documentId}
|
|
713
|
+
AND autosave = 0
|
|
705
714
|
${tenantID ? drizzleOrm.sql`AND tenant_id = ${tenantID}` : drizzleOrm.sql``}
|
|
706
715
|
ORDER BY created_at DESC
|
|
707
716
|
LIMIT ${limit}
|
|
@@ -733,28 +742,53 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
733
742
|
}
|
|
734
743
|
async createVersion(args) {
|
|
735
744
|
await this.ensureVersionsTable();
|
|
736
|
-
const id = Math.random().toString(36).substring(2, 15);
|
|
737
745
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
746
|
+
if (args.autosave) {
|
|
747
|
+
const existing = await this.executeRaw(drizzleOrm.sql`
|
|
748
|
+
SELECT * FROM kyro_versions
|
|
749
|
+
WHERE collection_slug = ${args.collection}
|
|
750
|
+
AND document_id = ${args.documentId}
|
|
751
|
+
AND autosave = 1
|
|
752
|
+
${args.tenantID ? drizzleOrm.sql`AND tenant_id = ${args.tenantID}` : drizzleOrm.sql``}
|
|
753
|
+
LIMIT 1
|
|
754
|
+
`);
|
|
755
|
+
if (existing.length > 0) {
|
|
756
|
+
await this.executeRaw(drizzleOrm.sql`
|
|
757
|
+
UPDATE kyro_versions
|
|
758
|
+
SET data = ${JSON.stringify(args.data)},
|
|
759
|
+
status = ${args.status},
|
|
760
|
+
updated_at = ${now}
|
|
761
|
+
WHERE id = ${existing[0].id}
|
|
762
|
+
`);
|
|
763
|
+
return this.findVersionByID({ collection: args.collection, versionId: existing[0].id, tenantID: args.tenantID });
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
const id = Math.random().toString(36).substring(2, 15);
|
|
738
767
|
await this.executeRaw(drizzleOrm.sql`
|
|
739
768
|
INSERT INTO kyro_versions (
|
|
740
|
-
id, collection_slug, document_id, tenant_id, data, status, created_by, change_description, created_at, updated_at
|
|
769
|
+
id, collection_slug, document_id, tenant_id, data, status, autosave, created_by, change_description, created_at, updated_at
|
|
741
770
|
) VALUES (
|
|
742
771
|
${id}, ${args.collection}, ${args.documentId}, ${args.tenantID || null},
|
|
743
|
-
${JSON.stringify(args.data)}, ${args.status}, ${args.createdBy || null},
|
|
772
|
+
${JSON.stringify(args.data)}, ${args.status}, ${args.autosave ? 1 : 0}, ${args.createdBy || null},
|
|
744
773
|
${args.changeDescription || null}, ${now}, ${now}
|
|
745
774
|
)
|
|
746
775
|
`);
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
776
|
+
if (!args.autosave) {
|
|
777
|
+
const config = this.getCollection(args.collection);
|
|
778
|
+
if (config.versions?.maxPerDoc) {
|
|
779
|
+
await this.deleteVersions({
|
|
780
|
+
collection: args.collection,
|
|
781
|
+
documentId: args.documentId,
|
|
782
|
+
keepLatest: config.versions.maxPerDoc,
|
|
783
|
+
tenantID: args.tenantID
|
|
784
|
+
});
|
|
785
|
+
}
|
|
755
786
|
}
|
|
756
787
|
return this.findVersionByID({ collection: args.collection, versionId: id, tenantID: args.tenantID });
|
|
757
788
|
}
|
|
789
|
+
async updateLatestVersion(args) {
|
|
790
|
+
return this.createVersion({ ...args, autosave: true });
|
|
791
|
+
}
|
|
758
792
|
async deleteVersions(args) {
|
|
759
793
|
await this.ensureVersionsTable();
|
|
760
794
|
if (args.keepLatest) {
|
|
@@ -762,6 +796,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
762
796
|
SELECT id FROM kyro_versions
|
|
763
797
|
WHERE collection_slug = ${args.collection}
|
|
764
798
|
AND document_id = ${args.documentId}
|
|
799
|
+
AND autosave = 0
|
|
765
800
|
${args.tenantID ? drizzleOrm.sql`AND tenant_id = ${args.tenantID}` : drizzleOrm.sql``}
|
|
766
801
|
ORDER BY created_at DESC
|
|
767
802
|
LIMIT ${args.keepLatest}
|
|
@@ -772,6 +807,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
772
807
|
DELETE FROM kyro_versions
|
|
773
808
|
WHERE collection_slug = ${args.collection}
|
|
774
809
|
AND document_id = ${args.documentId}
|
|
810
|
+
AND autosave = 0
|
|
775
811
|
AND id NOT IN (${drizzleOrm.sql.join(keepIds.map((id) => drizzleOrm.sql`${id}`), drizzleOrm.sql`, `)})
|
|
776
812
|
`);
|
|
777
813
|
}
|
|
@@ -784,65 +820,6 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
784
820
|
`);
|
|
785
821
|
}
|
|
786
822
|
}
|
|
787
|
-
async findDraft(args) {
|
|
788
|
-
await this.ensureDraftsTable();
|
|
789
|
-
const draftId = this.getDraftId(args.collection, args.documentId, args.tenantID);
|
|
790
|
-
const rows = await this.executeRaw(drizzleOrm.sql`
|
|
791
|
-
SELECT *
|
|
792
|
-
FROM kyro_drafts
|
|
793
|
-
WHERE id = ${draftId}
|
|
794
|
-
LIMIT 1
|
|
795
|
-
`);
|
|
796
|
-
const row = rows[0];
|
|
797
|
-
return row ? this.rowToDraft(row) : null;
|
|
798
|
-
}
|
|
799
|
-
async upsertDraft(args) {
|
|
800
|
-
await this.ensureDraftsTable();
|
|
801
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
802
|
-
const draftUpdatedAt = args.draftUpdatedAt || now;
|
|
803
|
-
const draftId = this.getDraftId(args.collection, args.documentId, args.tenantID);
|
|
804
|
-
const existing = await this.findDraft(args);
|
|
805
|
-
if (existing) {
|
|
806
|
-
await this.executeRaw(drizzleOrm.sql`
|
|
807
|
-
UPDATE kyro_drafts
|
|
808
|
-
SET
|
|
809
|
-
data = ${JSON.stringify(args.data)},
|
|
810
|
-
base_updated_at = ${args.baseUpdatedAt ?? null},
|
|
811
|
-
draft_updated_at = ${draftUpdatedAt},
|
|
812
|
-
updated_at = ${now}
|
|
813
|
-
WHERE id = ${draftId}
|
|
814
|
-
`);
|
|
815
|
-
} else {
|
|
816
|
-
await this.executeRaw(drizzleOrm.sql`
|
|
817
|
-
INSERT INTO kyro_drafts (
|
|
818
|
-
id, collection_slug, document_id, tenant_id, data, base_updated_at, draft_updated_at, created_at, updated_at
|
|
819
|
-
) VALUES (
|
|
820
|
-
${draftId},
|
|
821
|
-
${args.collection},
|
|
822
|
-
${args.documentId},
|
|
823
|
-
${args.tenantID ?? null},
|
|
824
|
-
${JSON.stringify(args.data)},
|
|
825
|
-
${args.baseUpdatedAt ?? null},
|
|
826
|
-
${draftUpdatedAt},
|
|
827
|
-
${now},
|
|
828
|
-
${now}
|
|
829
|
-
)
|
|
830
|
-
`);
|
|
831
|
-
}
|
|
832
|
-
const saved = await this.findDraft(args);
|
|
833
|
-
if (!saved) {
|
|
834
|
-
throw new Error("Failed to persist draft snapshot");
|
|
835
|
-
}
|
|
836
|
-
return saved;
|
|
837
|
-
}
|
|
838
|
-
async deleteDraft(args) {
|
|
839
|
-
await this.ensureDraftsTable();
|
|
840
|
-
const draftId = this.getDraftId(args.collection, args.documentId, args.tenantID);
|
|
841
|
-
await this.executeRaw(drizzleOrm.sql`
|
|
842
|
-
DELETE FROM kyro_drafts
|
|
843
|
-
WHERE id = ${draftId}
|
|
844
|
-
`);
|
|
845
|
-
}
|
|
846
823
|
// ========================================================================
|
|
847
824
|
// Helper Methods
|
|
848
825
|
// ========================================================================
|
|
@@ -976,41 +953,6 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
976
953
|
}
|
|
977
954
|
return result;
|
|
978
955
|
}
|
|
979
|
-
async ensureDraftsTable() {
|
|
980
|
-
if (this.draftsTableReady) return;
|
|
981
|
-
let createTableSQL;
|
|
982
|
-
if (this.dialect === "sqlite") {
|
|
983
|
-
createTableSQL = `
|
|
984
|
-
CREATE TABLE IF NOT EXISTS kyro_drafts (
|
|
985
|
-
id text PRIMARY KEY,
|
|
986
|
-
collection_slug text NOT NULL,
|
|
987
|
-
document_id text NOT NULL,
|
|
988
|
-
tenant_id text,
|
|
989
|
-
data text NOT NULL,
|
|
990
|
-
base_updated_at text,
|
|
991
|
-
draft_updated_at text NOT NULL,
|
|
992
|
-
created_at text DEFAULT (datetime('now')),
|
|
993
|
-
updated_at text DEFAULT (datetime('now'))
|
|
994
|
-
)
|
|
995
|
-
`;
|
|
996
|
-
} else {
|
|
997
|
-
createTableSQL = `
|
|
998
|
-
CREATE TABLE IF NOT EXISTS kyro_drafts (
|
|
999
|
-
id text PRIMARY KEY,
|
|
1000
|
-
collection_slug text NOT NULL,
|
|
1001
|
-
document_id text NOT NULL,
|
|
1002
|
-
tenant_id text,
|
|
1003
|
-
data text NOT NULL,
|
|
1004
|
-
base_updated_at text,
|
|
1005
|
-
draft_updated_at text NOT NULL,
|
|
1006
|
-
created_at text NOT NULL,
|
|
1007
|
-
updated_at text NOT NULL
|
|
1008
|
-
)
|
|
1009
|
-
`;
|
|
1010
|
-
}
|
|
1011
|
-
await this.executeRaw(drizzleOrm.sql.raw(createTableSQL));
|
|
1012
|
-
this.draftsTableReady = true;
|
|
1013
|
-
}
|
|
1014
956
|
async ensureVersionsTable() {
|
|
1015
957
|
if (this.versionsTableReady) return;
|
|
1016
958
|
let createTableSQL;
|
|
@@ -1023,6 +965,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
1023
965
|
tenant_id text,
|
|
1024
966
|
data text NOT NULL,
|
|
1025
967
|
status text NOT NULL DEFAULT 'draft',
|
|
968
|
+
autosave integer NOT NULL DEFAULT 0,
|
|
1026
969
|
created_by text,
|
|
1027
970
|
change_description text,
|
|
1028
971
|
created_at text DEFAULT (datetime('now')),
|
|
@@ -1038,6 +981,7 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
1038
981
|
tenant_id text,
|
|
1039
982
|
data text NOT NULL,
|
|
1040
983
|
status text NOT NULL,
|
|
984
|
+
autosave integer NOT NULL DEFAULT 0,
|
|
1041
985
|
created_by text,
|
|
1042
986
|
change_description text,
|
|
1043
987
|
created_at text NOT NULL,
|
|
@@ -1046,11 +990,16 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
1046
990
|
`;
|
|
1047
991
|
}
|
|
1048
992
|
await this.executeRaw(drizzleOrm.sql.raw(createTableSQL));
|
|
993
|
+
try {
|
|
994
|
+
if (this.dialect === "postgres") {
|
|
995
|
+
await this.executeRaw(drizzleOrm.sql.raw(`ALTER TABLE kyro_versions ADD COLUMN IF NOT EXISTS autosave integer NOT NULL DEFAULT 0`));
|
|
996
|
+
} else {
|
|
997
|
+
await this.executeRaw(drizzleOrm.sql.raw(`ALTER TABLE kyro_versions ADD COLUMN autosave integer NOT NULL DEFAULT 0`));
|
|
998
|
+
}
|
|
999
|
+
} catch {
|
|
1000
|
+
}
|
|
1049
1001
|
this.versionsTableReady = true;
|
|
1050
1002
|
}
|
|
1051
|
-
getDraftId(collection, documentId, tenantID) {
|
|
1052
|
-
return `${collection}::${documentId}::${tenantID || "global"}`;
|
|
1053
|
-
}
|
|
1054
1003
|
async executeRaw(query) {
|
|
1055
1004
|
const result = await this.client.execute(query);
|
|
1056
1005
|
if (Array.isArray(result)) {
|
|
@@ -1064,24 +1013,11 @@ var DrizzleAdapter = class extends chunkPI73NNOK_cjs.AbstractBaseAdapter {
|
|
|
1064
1013
|
}
|
|
1065
1014
|
return [];
|
|
1066
1015
|
}
|
|
1067
|
-
rowToDraft(row) {
|
|
1068
|
-
return {
|
|
1069
|
-
id: String(row.id),
|
|
1070
|
-
collection: row.collection_slug,
|
|
1071
|
-
documentId: row.document_id,
|
|
1072
|
-
tenantID: row.tenant_id ?? void 0,
|
|
1073
|
-
data: row.data ? JSON.parse(row.data) : {},
|
|
1074
|
-
baseUpdatedAt: row.base_updated_at ?? null,
|
|
1075
|
-
draftUpdatedAt: row.draft_updated_at,
|
|
1076
|
-
createdAt: row.created_at,
|
|
1077
|
-
updatedAt: row.updated_at
|
|
1078
|
-
};
|
|
1079
|
-
}
|
|
1080
1016
|
};
|
|
1081
1017
|
function createDrizzleAdapter(options) {
|
|
1082
1018
|
return new DrizzleAdapter(options);
|
|
1083
1019
|
}
|
|
1084
|
-
var _require = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
1020
|
+
var _require = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-RFFSZSCL.cjs', document.baseURI).href)));
|
|
1085
1021
|
var modPath = "node:sqlite";
|
|
1086
1022
|
var { DatabaseSync } = _require(modPath);
|
|
1087
1023
|
function getDialect() {
|
|
@@ -1119,7 +1055,7 @@ async function runMigrations(_db, _dialect) {
|
|
|
1119
1055
|
);
|
|
1120
1056
|
}
|
|
1121
1057
|
async function seedDefaultRoles(db) {
|
|
1122
|
-
const { roles } = await import('./schema-
|
|
1058
|
+
const { roles } = await import('./schema-6QL3USNB.cjs');
|
|
1123
1059
|
await db.insert(roles).values({
|
|
1124
1060
|
name: "super_admin",
|
|
1125
1061
|
level: 100,
|
|
@@ -1137,5 +1073,5 @@ exports.fieldToDrizzleType = fieldToDrizzleType;
|
|
|
1137
1073
|
exports.genId = genId;
|
|
1138
1074
|
exports.runMigrations = runMigrations;
|
|
1139
1075
|
exports.seedDefaultRoles = seedDefaultRoles;
|
|
1140
|
-
//# sourceMappingURL=chunk-
|
|
1141
|
-
//# sourceMappingURL=chunk-
|
|
1076
|
+
//# sourceMappingURL=chunk-RFFSZSCL.cjs.map
|
|
1077
|
+
//# sourceMappingURL=chunk-RFFSZSCL.cjs.map
|