xansql 1.1.0 → 1.1.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/core/Migration.cjs +5 -4
- package/core/Migration.cjs.map +1 -1
- package/core/Migration.js +5 -4
- package/core/Migration.js.map +1 -1
- package/core/Xansql.cjs +5 -4
- package/core/Xansql.cjs.map +1 -1
- package/core/Xansql.d.ts +1 -1
- package/core/Xansql.js +5 -4
- package/core/Xansql.js.map +1 -1
- package/core/classes/XansqlConfig.cjs +1 -1
- package/core/classes/XansqlConfig.cjs.map +1 -1
- package/core/classes/XansqlConfig.js +1 -1
- package/core/classes/XansqlConfig.js.map +1 -1
- package/model/Build/AggregateArgs/index.cjs +1 -1
- package/model/Build/AggregateArgs/index.cjs.map +1 -1
- package/model/Build/AggregateArgs/index.js +1 -1
- package/model/Build/AggregateArgs/index.js.map +1 -1
- package/model/Build/CreateArgs/index.cjs +4 -3
- package/model/Build/CreateArgs/index.cjs.map +1 -1
- package/model/Build/CreateArgs/index.js +4 -3
- package/model/Build/CreateArgs/index.js.map +1 -1
- package/model/Build/DeleteArgs/index.cjs +13 -7
- package/model/Build/DeleteArgs/index.cjs.map +1 -1
- package/model/Build/DeleteArgs/index.js +13 -7
- package/model/Build/DeleteArgs/index.js.map +1 -1
- package/model/Build/FindArgs/index.cjs +5 -3
- package/model/Build/FindArgs/index.cjs.map +1 -1
- package/model/Build/FindArgs/index.js +5 -3
- package/model/Build/FindArgs/index.js.map +1 -1
- package/model/Build/UpdateArgs/index.cjs +6 -4
- package/model/Build/UpdateArgs/index.cjs.map +1 -1
- package/model/Build/UpdateArgs/index.js +6 -4
- package/model/Build/UpdateArgs/index.js.map +1 -1
- package/model/Build/UpsertArgs/index.cjs +3 -1
- package/model/Build/UpsertArgs/index.cjs.map +1 -1
- package/model/Build/UpsertArgs/index.js +3 -1
- package/model/Build/UpsertArgs/index.js.map +1 -1
- package/model/index.cjs +38 -11
- package/model/index.cjs.map +1 -1
- package/model/index.d.ts +1 -1
- package/model/index.js +38 -11
- package/model/index.js.map +1 -1
- package/model/types.d.ts +10 -0
- package/package.json +1 -1
- package/xt/fields/Enum.cjs +1 -1
- package/xt/fields/Enum.cjs.map +1 -1
- package/xt/fields/Enum.d.ts +1 -1
- package/xt/fields/Enum.js +1 -1
- package/xt/fields/Enum.js.map +1 -1
package/core/Migration.cjs
CHANGED
|
@@ -52,10 +52,10 @@ class Migration {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
const sql = `CREATE TABLE IF NOT EXISTS ${model.table}(${column_sqls.join(",")})`;
|
|
55
|
-
await model.execute(sql);
|
|
55
|
+
await model.execute(sql, false);
|
|
56
56
|
for (let idxql of index_sqls) {
|
|
57
57
|
try {
|
|
58
|
-
await model.execute(idxql);
|
|
58
|
+
await model.execute(idxql, false);
|
|
59
59
|
}
|
|
60
60
|
catch (error) { }
|
|
61
61
|
}
|
|
@@ -71,7 +71,7 @@ class Migration {
|
|
|
71
71
|
if (column in prev_migration) ;
|
|
72
72
|
else {
|
|
73
73
|
// Add column
|
|
74
|
-
await model.execute(info.sql.alter_column);
|
|
74
|
+
await model.execute(info.sql.alter_column, false);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -87,7 +87,8 @@ class Migration {
|
|
|
87
87
|
where: {
|
|
88
88
|
model: model.table
|
|
89
89
|
},
|
|
90
|
-
useTransection: false
|
|
90
|
+
useTransection: false,
|
|
91
|
+
debug: false
|
|
91
92
|
});
|
|
92
93
|
}
|
|
93
94
|
async get(model) {
|
package/core/Migration.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migration.cjs","sources":["../../src/core/Migration.ts"],"sourcesContent":["import { xv } from \"xanv\";\nimport Model from \"../model\";\nimport xt from \"../xt\";\nimport Xansql from \"./Xansql\";\nimport { XqlFieldInfoSchema } from \"../xt/XqlFieldInfo\";\nimport XqlRelationMany from \"../xt/fields/RelationMany\";\nimport { iof } from \"../utils\";\nimport XansqlError from \"./XansqlError\";\n\nclass MigrationModel extends Model {\n get table() {\n return \"_xansql_migration\"\n }\n\n schema() {\n return {\n id: xt.id(),\n model: xt.string(),\n schema: xt.record(xt.string(), xt.object({\n type: xt.string(),\n length: xt.number().nullable(),\n default: xv.any(),\n unique: xt.boolean(),\n nullable: xt.boolean(),\n index: xt.string()\n })),\n created_at: xt.date().createdAt(),\n updated_at: xt.date().updatedAt(),\n }\n }\n}\n\n\nclass Migration {\n model\n constructor(private xansql: Xansql) {\n this.model = xansql.model(MigrationModel)\n this.migrate(this.model)\n }\n\n async migrate<M extends Model<any>>(model: M) {\n if (typeof window !== \"undefined\") return\n\n const schema = model.schema()\n let column_sqls = []\n let index_sqls = []\n let migrate_schema: { [column: string]: XqlFieldInfoSchema } = {}\n\n for (let column in schema) {\n const field = schema[column]\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n column_sqls.push(info.sql.column)\n if (info.sql.create_index) {\n index_sqls.push(info.sql.create_index)\n }\n migrate_schema[column] = field.info.schema\n }\n }\n\n const sql = `CREATE TABLE IF NOT EXISTS ${model.table}(${column_sqls.join(\",\")})`\n await model.execute(sql)\n for (let idxql of index_sqls) {\n try {\n await model.execute(idxql)\n } catch (error) { }\n }\n\n if (model.table === this.model.table) {\n return\n }\n\n const prev_migration = await this.migrateSchema(model)\n if (prev_migration) {\n for (let column in schema) {\n const field = schema[column]\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n if (column in prev_migration) {\n\n } else {\n // Add column\n await model.execute(info.sql.alter_column)\n }\n }\n }\n }\n\n return await this.model.upsert({\n create: {\n model: model.table,\n schema: migrate_schema\n },\n update: {\n schema: migrate_schema\n },\n where: {\n model: model.table\n },\n useTransection: false\n })\n }\n\n async get(model: Model) {\n return await this.model.findOne({\n where: {\n model: model.table\n }\n })\n }\n\n async migrateSchema(model: Model) {\n const get = await this.get(model)\n if (get) {\n return get.schema\n }\n }\n\n async has(model: Model) {\n return await this.model.count({\n model: model.table\n })\n }\n}\n\nexport default Migration"],"names":["Model","xt","xv","iof","XqlRelationMany"],"mappings":";;;;;;;;AASA,MAAM,cAAe,SAAQA,OAAK,CAAA;AAC/B,IAAA,IAAI,KAAK,GAAA;AACN,QAAA,OAAO,mBAAmB;IAC7B;IAEA,MAAM,GAAA;QACH,OAAO;AACJ,YAAA,EAAE,EAAEC,OAAE,CAAC,EAAE,EAAE;AACX,YAAA,KAAK,EAAEA,OAAE,CAAC,MAAM,EAAE;AAClB,YAAA,MAAM,EAAEA,OAAE,CAAC,MAAM,CAACA,OAAE,CAAC,MAAM,EAAE,EAAEA,OAAE,CAAC,MAAM,CAAC;AACtC,gBAAA,IAAI,EAAEA,OAAE,CAAC,MAAM,EAAE;AACjB,gBAAA,MAAM,EAAEA,OAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAC9B,gBAAA,OAAO,EAAEC,OAAE,CAAC,GAAG,EAAE;AACjB,gBAAA,MAAM,EAAED,OAAE,CAAC,OAAO,EAAE;AACpB,gBAAA,QAAQ,EAAEA,OAAE,CAAC,OAAO,EAAE;AACtB,gBAAA,KAAK,EAAEA,OAAE,CAAC,MAAM;AAClB,aAAA,CAAC,CAAC;AACH,YAAA,UAAU,EAAEA,OAAE,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE;AACjC,YAAA,UAAU,EAAEA,OAAE,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE;SACnC;IACJ;AACF;AAGD,MAAM,SAAS,CAAA;AAEZ,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;QACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;IAEA,MAAM,OAAO,CAAuB,KAAQ,EAAA;QACzC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AAEnC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;QAC7B,IAAI,WAAW,GAAG,EAAE;QACpB,IAAI,UAAU,GAAG,EAAE;QACnB,IAAI,cAAc,GAA6C,EAAE;AAEjE,QAAA,KAAK,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,IAAI,CAACE,SAAG,CAAC,KAAK,EAAEC,YAAe,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;gBACvB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACxB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;gBACzC;gBACA,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;YAC7C;QACH;AAEA,QAAA,MAAM,GAAG,GAAG,CAAA,2BAAA,EAA8B,KAAK,CAAC,KAAK,CAAA,CAAA,EAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"Migration.cjs","sources":["../../src/core/Migration.ts"],"sourcesContent":["import { xv } from \"xanv\";\nimport Model from \"../model\";\nimport xt from \"../xt\";\nimport Xansql from \"./Xansql\";\nimport { XqlFieldInfoSchema } from \"../xt/XqlFieldInfo\";\nimport XqlRelationMany from \"../xt/fields/RelationMany\";\nimport { iof } from \"../utils\";\nimport XansqlError from \"./XansqlError\";\n\nclass MigrationModel extends Model {\n get table() {\n return \"_xansql_migration\"\n }\n\n schema() {\n return {\n id: xt.id(),\n model: xt.string(),\n schema: xt.record(xt.string(), xt.object({\n type: xt.string(),\n length: xt.number().nullable(),\n default: xv.any(),\n unique: xt.boolean(),\n nullable: xt.boolean(),\n index: xt.string()\n })),\n created_at: xt.date().createdAt(),\n updated_at: xt.date().updatedAt(),\n }\n }\n}\n\n\nclass Migration {\n model\n constructor(private xansql: Xansql) {\n this.model = xansql.model(MigrationModel)\n this.migrate(this.model)\n }\n\n async migrate<M extends Model<any>>(model: M) {\n if (typeof window !== \"undefined\") return\n\n const schema = model.schema()\n let column_sqls = []\n let index_sqls = []\n let migrate_schema: { [column: string]: XqlFieldInfoSchema } = {}\n\n for (let column in schema) {\n const field = schema[column]\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n column_sqls.push(info.sql.column)\n if (info.sql.create_index) {\n index_sqls.push(info.sql.create_index)\n }\n migrate_schema[column] = field.info.schema\n }\n }\n\n const sql = `CREATE TABLE IF NOT EXISTS ${model.table}(${column_sqls.join(\",\")})`\n await model.execute(sql, false)\n for (let idxql of index_sqls) {\n try {\n await model.execute(idxql, false)\n } catch (error) { }\n }\n\n if (model.table === this.model.table) {\n return\n }\n\n const prev_migration = await this.migrateSchema(model)\n if (prev_migration) {\n for (let column in schema) {\n const field = schema[column]\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n if (column in prev_migration) {\n\n } else {\n // Add column\n await model.execute(info.sql.alter_column, false)\n }\n }\n }\n }\n\n return await this.model.upsert({\n create: {\n model: model.table,\n schema: migrate_schema\n },\n update: {\n schema: migrate_schema\n },\n where: {\n model: model.table\n },\n useTransection: false,\n debug: false\n })\n }\n\n async get(model: Model) {\n return await this.model.findOne({\n where: {\n model: model.table\n }\n })\n }\n\n async migrateSchema(model: Model) {\n const get = await this.get(model)\n if (get) {\n return get.schema\n }\n }\n\n async has(model: Model) {\n return await this.model.count({\n model: model.table\n })\n }\n}\n\nexport default Migration"],"names":["Model","xt","xv","iof","XqlRelationMany"],"mappings":"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"}
|
package/core/Migration.js
CHANGED
|
@@ -50,10 +50,10 @@ class Migration {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
const sql = `CREATE TABLE IF NOT EXISTS ${model.table}(${column_sqls.join(",")})`;
|
|
53
|
-
await model.execute(sql);
|
|
53
|
+
await model.execute(sql, false);
|
|
54
54
|
for (let idxql of index_sqls) {
|
|
55
55
|
try {
|
|
56
|
-
await model.execute(idxql);
|
|
56
|
+
await model.execute(idxql, false);
|
|
57
57
|
}
|
|
58
58
|
catch (error) { }
|
|
59
59
|
}
|
|
@@ -69,7 +69,7 @@ class Migration {
|
|
|
69
69
|
if (column in prev_migration) ;
|
|
70
70
|
else {
|
|
71
71
|
// Add column
|
|
72
|
-
await model.execute(info.sql.alter_column);
|
|
72
|
+
await model.execute(info.sql.alter_column, false);
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
}
|
|
@@ -85,7 +85,8 @@ class Migration {
|
|
|
85
85
|
where: {
|
|
86
86
|
model: model.table
|
|
87
87
|
},
|
|
88
|
-
useTransection: false
|
|
88
|
+
useTransection: false,
|
|
89
|
+
debug: false
|
|
89
90
|
});
|
|
90
91
|
}
|
|
91
92
|
async get(model) {
|
package/core/Migration.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migration.js","sources":["../../src/core/Migration.ts"],"sourcesContent":["import { xv } from \"xanv\";\nimport Model from \"../model\";\nimport xt from \"../xt\";\nimport Xansql from \"./Xansql\";\nimport { XqlFieldInfoSchema } from \"../xt/XqlFieldInfo\";\nimport XqlRelationMany from \"../xt/fields/RelationMany\";\nimport { iof } from \"../utils\";\nimport XansqlError from \"./XansqlError\";\n\nclass MigrationModel extends Model {\n get table() {\n return \"_xansql_migration\"\n }\n\n schema() {\n return {\n id: xt.id(),\n model: xt.string(),\n schema: xt.record(xt.string(), xt.object({\n type: xt.string(),\n length: xt.number().nullable(),\n default: xv.any(),\n unique: xt.boolean(),\n nullable: xt.boolean(),\n index: xt.string()\n })),\n created_at: xt.date().createdAt(),\n updated_at: xt.date().updatedAt(),\n }\n }\n}\n\n\nclass Migration {\n model\n constructor(private xansql: Xansql) {\n this.model = xansql.model(MigrationModel)\n this.migrate(this.model)\n }\n\n async migrate<M extends Model<any>>(model: M) {\n if (typeof window !== \"undefined\") return\n\n const schema = model.schema()\n let column_sqls = []\n let index_sqls = []\n let migrate_schema: { [column: string]: XqlFieldInfoSchema } = {}\n\n for (let column in schema) {\n const field = schema[column]\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n column_sqls.push(info.sql.column)\n if (info.sql.create_index) {\n index_sqls.push(info.sql.create_index)\n }\n migrate_schema[column] = field.info.schema\n }\n }\n\n const sql = `CREATE TABLE IF NOT EXISTS ${model.table}(${column_sqls.join(\",\")})`\n await model.execute(sql)\n for (let idxql of index_sqls) {\n try {\n await model.execute(idxql)\n } catch (error) { }\n }\n\n if (model.table === this.model.table) {\n return\n }\n\n const prev_migration = await this.migrateSchema(model)\n if (prev_migration) {\n for (let column in schema) {\n const field = schema[column]\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n if (column in prev_migration) {\n\n } else {\n // Add column\n await model.execute(info.sql.alter_column)\n }\n }\n }\n }\n\n return await this.model.upsert({\n create: {\n model: model.table,\n schema: migrate_schema\n },\n update: {\n schema: migrate_schema\n },\n where: {\n model: model.table\n },\n useTransection: false\n })\n }\n\n async get(model: Model) {\n return await this.model.findOne({\n where: {\n model: model.table\n }\n })\n }\n\n async migrateSchema(model: Model) {\n const get = await this.get(model)\n if (get) {\n return get.schema\n }\n }\n\n async has(model: Model) {\n return await this.model.count({\n model: model.table\n })\n }\n}\n\nexport default Migration"],"names":[],"mappings":";;;;;;AASA,MAAM,cAAe,SAAQ,KAAK,CAAA;AAC/B,IAAA,IAAI,KAAK,GAAA;AACN,QAAA,OAAO,mBAAmB;IAC7B;IAEA,MAAM,GAAA;QACH,OAAO;AACJ,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE;AAClB,YAAA,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;AACtC,gBAAA,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE;AACjB,gBAAA,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAC9B,gBAAA,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE;AACjB,gBAAA,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE;AACpB,gBAAA,QAAQ,EAAE,EAAE,CAAC,OAAO,EAAE;AACtB,gBAAA,KAAK,EAAE,EAAE,CAAC,MAAM;AAClB,aAAA,CAAC,CAAC;AACH,YAAA,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE;AACjC,YAAA,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE;SACnC;IACJ;AACF;AAGD,MAAM,SAAS,CAAA;AAEZ,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;QACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;IAEA,MAAM,OAAO,CAAuB,KAAQ,EAAA;QACzC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AAEnC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;QAC7B,IAAI,WAAW,GAAG,EAAE;QACpB,IAAI,UAAU,GAAG,EAAE;QACnB,IAAI,cAAc,GAA6C,EAAE;AAEjE,QAAA,KAAK,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;gBACvB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACxB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;gBACzC;gBACA,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;YAC7C;QACH;AAEA,QAAA,MAAM,GAAG,GAAG,CAAA,2BAAA,EAA8B,KAAK,CAAC,KAAK,CAAA,CAAA,EAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"Migration.js","sources":["../../src/core/Migration.ts"],"sourcesContent":["import { xv } from \"xanv\";\nimport Model from \"../model\";\nimport xt from \"../xt\";\nimport Xansql from \"./Xansql\";\nimport { XqlFieldInfoSchema } from \"../xt/XqlFieldInfo\";\nimport XqlRelationMany from \"../xt/fields/RelationMany\";\nimport { iof } from \"../utils\";\nimport XansqlError from \"./XansqlError\";\n\nclass MigrationModel extends Model {\n get table() {\n return \"_xansql_migration\"\n }\n\n schema() {\n return {\n id: xt.id(),\n model: xt.string(),\n schema: xt.record(xt.string(), xt.object({\n type: xt.string(),\n length: xt.number().nullable(),\n default: xv.any(),\n unique: xt.boolean(),\n nullable: xt.boolean(),\n index: xt.string()\n })),\n created_at: xt.date().createdAt(),\n updated_at: xt.date().updatedAt(),\n }\n }\n}\n\n\nclass Migration {\n model\n constructor(private xansql: Xansql) {\n this.model = xansql.model(MigrationModel)\n this.migrate(this.model)\n }\n\n async migrate<M extends Model<any>>(model: M) {\n if (typeof window !== \"undefined\") return\n\n const schema = model.schema()\n let column_sqls = []\n let index_sqls = []\n let migrate_schema: { [column: string]: XqlFieldInfoSchema } = {}\n\n for (let column in schema) {\n const field = schema[column]\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n column_sqls.push(info.sql.column)\n if (info.sql.create_index) {\n index_sqls.push(info.sql.create_index)\n }\n migrate_schema[column] = field.info.schema\n }\n }\n\n const sql = `CREATE TABLE IF NOT EXISTS ${model.table}(${column_sqls.join(\",\")})`\n await model.execute(sql, false)\n for (let idxql of index_sqls) {\n try {\n await model.execute(idxql, false)\n } catch (error) { }\n }\n\n if (model.table === this.model.table) {\n return\n }\n\n const prev_migration = await this.migrateSchema(model)\n if (prev_migration) {\n for (let column in schema) {\n const field = schema[column]\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n if (column in prev_migration) {\n\n } else {\n // Add column\n await model.execute(info.sql.alter_column, false)\n }\n }\n }\n }\n\n return await this.model.upsert({\n create: {\n model: model.table,\n schema: migrate_schema\n },\n update: {\n schema: migrate_schema\n },\n where: {\n model: model.table\n },\n useTransection: false,\n debug: false\n })\n }\n\n async get(model: Model) {\n return await this.model.findOne({\n where: {\n model: model.table\n }\n })\n }\n\n async migrateSchema(model: Model) {\n const get = await this.get(model)\n if (get) {\n return get.schema\n }\n }\n\n async has(model: Model) {\n return await this.model.count({\n model: model.table\n })\n }\n}\n\nexport default Migration"],"names":[],"mappings":"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"}
|
package/core/Xansql.cjs
CHANGED
|
@@ -27,21 +27,22 @@ class Xansql {
|
|
|
27
27
|
this.models.set(model, _model);
|
|
28
28
|
return _model;
|
|
29
29
|
}
|
|
30
|
-
async execute(sql) {
|
|
30
|
+
async execute(sql, debug = this.config.debug) {
|
|
31
31
|
const query = sql.trim().replace(/\s+/g, ' ');
|
|
32
|
-
|
|
32
|
+
const isDebug = debug !== null && debug !== void 0 ? debug : false;
|
|
33
|
+
if (isDebug) {
|
|
33
34
|
console.log(`[DB] Executing → ${query}`);
|
|
34
35
|
}
|
|
35
36
|
try {
|
|
36
37
|
const result = await this.dialect.execute(query, this);
|
|
37
|
-
if (
|
|
38
|
+
if (isDebug) {
|
|
38
39
|
console.log(`[DB] Executed ✓`);
|
|
39
40
|
console.dir(result, { depth: null });
|
|
40
41
|
}
|
|
41
42
|
return result;
|
|
42
43
|
}
|
|
43
44
|
catch (error) {
|
|
44
|
-
if (
|
|
45
|
+
if (isDebug) {
|
|
45
46
|
console.error(`[DB] Execution failed ✗`);
|
|
46
47
|
console.error(query);
|
|
47
48
|
}
|
package/core/Xansql.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Xansql.cjs","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired, XansqlFileMeta, XansqlFileUploadArgs } from \"./types\";\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\nimport XansqlConfig from \"./classes/XansqlConfig\";\nimport XansqlError from \"./XansqlError\";\nimport { ModelClass } from \"../model/types\";\nimport { chunkFile, getFileId, totalChunks } from \"../utils/file\";\nimport Migration from \"./Migration\";\nimport fileScaner from \"../utils/fileScaner\";\n\n\nclass Xansql {\n private XansqlConfig: XansqlConfig;\n readonly config: XansqlConfigTypeRequired;\n readonly XansqlTransaction: XansqlTransaction;\n readonly models = new Map<ModelClass<any>, Model>()\n readonly Migration: Migration\n\n constructor(config: XansqlConfigType) {\n this.XansqlConfig = new XansqlConfig(this, config);\n this.config = this.XansqlConfig.parse()\n this.XansqlTransaction = new XansqlTransaction(this);\n this.Migration = new Migration(this)\n }\n\n get dialect() {\n return this.config.dialect;\n }\n\n model<M extends Model<any>>(model: ModelClass<M>, hooks?: any) {\n if (this.models.has(model)) {\n return this.models.get(model) as Model<ReturnType<M['schema']>>\n }\n const _model = new model(this)\n this.models.set(model, _model)\n return _model as Model<ReturnType<M['schema']>>\n }\n\n async execute(sql: string): Promise<ExecuterResult> {\n const query = sql.trim().replace(/\\s+/g, ' ');\n\n if (
|
|
1
|
+
{"version":3,"file":"Xansql.cjs","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired, XansqlFileMeta, XansqlFileUploadArgs } from \"./types\";\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\nimport XansqlConfig from \"./classes/XansqlConfig\";\nimport XansqlError from \"./XansqlError\";\nimport { ModelClass } from \"../model/types\";\nimport { chunkFile, getFileId, totalChunks } from \"../utils/file\";\nimport Migration from \"./Migration\";\nimport fileScaner from \"../utils/fileScaner\";\n\n\nclass Xansql {\n private XansqlConfig: XansqlConfig;\n readonly config: XansqlConfigTypeRequired;\n readonly XansqlTransaction: XansqlTransaction;\n readonly models = new Map<ModelClass<any>, Model>()\n readonly Migration: Migration\n\n constructor(config: XansqlConfigType) {\n this.XansqlConfig = new XansqlConfig(this, config);\n this.config = this.XansqlConfig.parse()\n this.XansqlTransaction = new XansqlTransaction(this);\n this.Migration = new Migration(this)\n }\n\n get dialect() {\n return this.config.dialect;\n }\n\n model<M extends Model<any>>(model: ModelClass<M>, hooks?: any) {\n if (this.models.has(model)) {\n return this.models.get(model) as Model<ReturnType<M['schema']>>\n }\n const _model = new model(this)\n this.models.set(model, _model)\n return _model as Model<ReturnType<M['schema']>>\n }\n\n async execute(sql: string, debug = this.config.debug): Promise<ExecuterResult> {\n const query = sql.trim().replace(/\\s+/g, ' ');\n\n const isDebug = debug ?? false\n\n if (isDebug) {\n console.log(`[DB] Executing → ${query}`);\n }\n\n try {\n const result = await this.dialect.execute(query, this) as ExecuterResult;\n\n if (isDebug) {\n console.log(`[DB] Executed ✓`);\n console.dir(result, { depth: null });\n }\n\n return result;\n } catch (error) {\n if (isDebug) {\n console.error(`[DB] Execution failed ✗`);\n console.error(query);\n }\n\n throw error; // never swallow DB errors\n }\n }\n\n async uploadFile(file: XansqlFileUploadArgs) {\n const fileConfig = this.config.file\n if (!fileConfig?.upload) {\n throw new XansqlError({\n code: \"NOT_FOUND\",\n message: `File upload is not supported by the current dialect.`\n });\n }\n if (file instanceof File) {\n // make chunk\n const fileId = await getFileId(file);\n\n const maxFileSize = fileConfig?.maxFilesize\n if (maxFileSize && file.size > maxFileSize * 1024) {\n throw new Error(`File size exceeds the limit of ${maxFileSize / 1024} MB`)\n }\n\n const chunkSize = fileConfig?.chunkSize\n\n // send metadata\n const filemeta: XansqlFileMeta = {\n fileId: fileId,\n name: file.name,\n size: file.size,\n type: file.type,\n totalChunks: totalChunks(file, chunkSize),\n chunkIndex: 0,\n isFinish: false\n }\n for await (let { chunk, chunkIndex } of chunkFile(file, chunkSize)) {\n filemeta.chunkIndex = chunkIndex;\n filemeta.isFinish = chunkIndex + 1 === filemeta.totalChunks;\n filemeta.chunkIndex = chunkIndex\n await this.uploadFile({\n chunk,\n meta: filemeta\n })\n }\n return filemeta\n }\n\n if (file.meta.chunkIndex === 0 && !fileScaner(file.chunk).valid) {\n throw new XansqlError({\n code: \"FILE_ERROR\",\n message: `Failed to process file \"${file.meta.name}\".`\n });\n }\n return await this.config.file.upload(file.chunk, file.meta, this);\n }\n\n async deleteFile(fileId: string) {\n if (!this.config.file?.delete) {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `File delete is not supported by the current dialect.`\n });\n }\n return await this.config.file.delete(fileId, this);\n }\n}\n\nclass XansqlClone extends Xansql { }\n\n\nexport default Xansql"],"names":["file","getFileId","totalChunks","__asyncValues","chunkFile"],"mappings":"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"}
|
package/core/Xansql.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ declare class Xansql {
|
|
|
13
13
|
constructor(config: XansqlConfigType);
|
|
14
14
|
get dialect(): XansqlDialect;
|
|
15
15
|
model<M extends Model<any>>(model: ModelClass<M>, hooks?: any): Model<ReturnType<M["schema"]>>;
|
|
16
|
-
execute(sql: string): Promise<ExecuterResult>;
|
|
16
|
+
execute(sql: string, debug?: boolean): Promise<ExecuterResult>;
|
|
17
17
|
uploadFile(file: XansqlFileUploadArgs): Promise<XansqlFileMeta>;
|
|
18
18
|
deleteFile(fileId: string): Promise<void>;
|
|
19
19
|
}
|
package/core/Xansql.js
CHANGED
|
@@ -25,21 +25,22 @@ class Xansql {
|
|
|
25
25
|
this.models.set(model, _model);
|
|
26
26
|
return _model;
|
|
27
27
|
}
|
|
28
|
-
async execute(sql) {
|
|
28
|
+
async execute(sql, debug = this.config.debug) {
|
|
29
29
|
const query = sql.trim().replace(/\s+/g, ' ');
|
|
30
|
-
|
|
30
|
+
const isDebug = debug !== null && debug !== void 0 ? debug : false;
|
|
31
|
+
if (isDebug) {
|
|
31
32
|
console.log(`[DB] Executing → ${query}`);
|
|
32
33
|
}
|
|
33
34
|
try {
|
|
34
35
|
const result = await this.dialect.execute(query, this);
|
|
35
|
-
if (
|
|
36
|
+
if (isDebug) {
|
|
36
37
|
console.log(`[DB] Executed ✓`);
|
|
37
38
|
console.dir(result, { depth: null });
|
|
38
39
|
}
|
|
39
40
|
return result;
|
|
40
41
|
}
|
|
41
42
|
catch (error) {
|
|
42
|
-
if (
|
|
43
|
+
if (isDebug) {
|
|
43
44
|
console.error(`[DB] Execution failed ✗`);
|
|
44
45
|
console.error(query);
|
|
45
46
|
}
|
package/core/Xansql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Xansql.js","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired, XansqlFileMeta, XansqlFileUploadArgs } from \"./types\";\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\nimport XansqlConfig from \"./classes/XansqlConfig\";\nimport XansqlError from \"./XansqlError\";\nimport { ModelClass } from \"../model/types\";\nimport { chunkFile, getFileId, totalChunks } from \"../utils/file\";\nimport Migration from \"./Migration\";\nimport fileScaner from \"../utils/fileScaner\";\n\n\nclass Xansql {\n private XansqlConfig: XansqlConfig;\n readonly config: XansqlConfigTypeRequired;\n readonly XansqlTransaction: XansqlTransaction;\n readonly models = new Map<ModelClass<any>, Model>()\n readonly Migration: Migration\n\n constructor(config: XansqlConfigType) {\n this.XansqlConfig = new XansqlConfig(this, config);\n this.config = this.XansqlConfig.parse()\n this.XansqlTransaction = new XansqlTransaction(this);\n this.Migration = new Migration(this)\n }\n\n get dialect() {\n return this.config.dialect;\n }\n\n model<M extends Model<any>>(model: ModelClass<M>, hooks?: any) {\n if (this.models.has(model)) {\n return this.models.get(model) as Model<ReturnType<M['schema']>>\n }\n const _model = new model(this)\n this.models.set(model, _model)\n return _model as Model<ReturnType<M['schema']>>\n }\n\n async execute(sql: string): Promise<ExecuterResult> {\n const query = sql.trim().replace(/\\s+/g, ' ');\n\n if (
|
|
1
|
+
{"version":3,"file":"Xansql.js","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired, XansqlFileMeta, XansqlFileUploadArgs } from \"./types\";\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\nimport XansqlConfig from \"./classes/XansqlConfig\";\nimport XansqlError from \"./XansqlError\";\nimport { ModelClass } from \"../model/types\";\nimport { chunkFile, getFileId, totalChunks } from \"../utils/file\";\nimport Migration from \"./Migration\";\nimport fileScaner from \"../utils/fileScaner\";\n\n\nclass Xansql {\n private XansqlConfig: XansqlConfig;\n readonly config: XansqlConfigTypeRequired;\n readonly XansqlTransaction: XansqlTransaction;\n readonly models = new Map<ModelClass<any>, Model>()\n readonly Migration: Migration\n\n constructor(config: XansqlConfigType) {\n this.XansqlConfig = new XansqlConfig(this, config);\n this.config = this.XansqlConfig.parse()\n this.XansqlTransaction = new XansqlTransaction(this);\n this.Migration = new Migration(this)\n }\n\n get dialect() {\n return this.config.dialect;\n }\n\n model<M extends Model<any>>(model: ModelClass<M>, hooks?: any) {\n if (this.models.has(model)) {\n return this.models.get(model) as Model<ReturnType<M['schema']>>\n }\n const _model = new model(this)\n this.models.set(model, _model)\n return _model as Model<ReturnType<M['schema']>>\n }\n\n async execute(sql: string, debug = this.config.debug): Promise<ExecuterResult> {\n const query = sql.trim().replace(/\\s+/g, ' ');\n\n const isDebug = debug ?? false\n\n if (isDebug) {\n console.log(`[DB] Executing → ${query}`);\n }\n\n try {\n const result = await this.dialect.execute(query, this) as ExecuterResult;\n\n if (isDebug) {\n console.log(`[DB] Executed ✓`);\n console.dir(result, { depth: null });\n }\n\n return result;\n } catch (error) {\n if (isDebug) {\n console.error(`[DB] Execution failed ✗`);\n console.error(query);\n }\n\n throw error; // never swallow DB errors\n }\n }\n\n async uploadFile(file: XansqlFileUploadArgs) {\n const fileConfig = this.config.file\n if (!fileConfig?.upload) {\n throw new XansqlError({\n code: \"NOT_FOUND\",\n message: `File upload is not supported by the current dialect.`\n });\n }\n if (file instanceof File) {\n // make chunk\n const fileId = await getFileId(file);\n\n const maxFileSize = fileConfig?.maxFilesize\n if (maxFileSize && file.size > maxFileSize * 1024) {\n throw new Error(`File size exceeds the limit of ${maxFileSize / 1024} MB`)\n }\n\n const chunkSize = fileConfig?.chunkSize\n\n // send metadata\n const filemeta: XansqlFileMeta = {\n fileId: fileId,\n name: file.name,\n size: file.size,\n type: file.type,\n totalChunks: totalChunks(file, chunkSize),\n chunkIndex: 0,\n isFinish: false\n }\n for await (let { chunk, chunkIndex } of chunkFile(file, chunkSize)) {\n filemeta.chunkIndex = chunkIndex;\n filemeta.isFinish = chunkIndex + 1 === filemeta.totalChunks;\n filemeta.chunkIndex = chunkIndex\n await this.uploadFile({\n chunk,\n meta: filemeta\n })\n }\n return filemeta\n }\n\n if (file.meta.chunkIndex === 0 && !fileScaner(file.chunk).valid) {\n throw new XansqlError({\n code: \"FILE_ERROR\",\n message: `Failed to process file \"${file.meta.name}\".`\n });\n }\n return await this.config.file.upload(file.chunk, file.meta, this);\n }\n\n async deleteFile(fileId: string) {\n if (!this.config.file?.delete) {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `File delete is not supported by the current dialect.`\n });\n }\n return await this.config.file.delete(fileId, this);\n }\n}\n\nclass XansqlClone extends Xansql { }\n\n\nexport default Xansql"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ class XansqlConfig {
|
|
|
12
12
|
code: "INTERNAL_ERROR",
|
|
13
13
|
message: `Dialect configuration is required in Xansql config.`,
|
|
14
14
|
});
|
|
15
|
-
if (!config.dialect.engine
|
|
15
|
+
if (!config.dialect.engine || !config.dialect.execute)
|
|
16
16
|
throw new XansqlError({
|
|
17
17
|
code: "INTERNAL_ERROR",
|
|
18
18
|
message: `Dialect engine and execute function are required in Xansql config.`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XansqlConfig.cjs","sources":["../../../src/core/classes/XansqlConfig.ts"],"sourcesContent":["import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialectEngine } from \"../types\";\nimport Xansql from \"../Xansql\";\nimport XansqlError from \"../XansqlError\";\n\nclass XansqlConfig {\n readonly xansql: Xansql;\n readonly config: XansqlConfigType;\n readonly engins: XansqlDialectEngine[] = ['mysql', 'postgres', 'sqlite'];\n constructor(xansql: Xansql, config: XansqlConfigType) {\n this.xansql = xansql;\n this.config = config;\n\n if (!config.dialect) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect configuration is required in Xansql config.`,\n })\n if (!config.dialect.engine
|
|
1
|
+
{"version":3,"file":"XansqlConfig.cjs","sources":["../../../src/core/classes/XansqlConfig.ts"],"sourcesContent":["import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialectEngine } from \"../types\";\nimport Xansql from \"../Xansql\";\nimport XansqlError from \"../XansqlError\";\n\nclass XansqlConfig {\n readonly xansql: Xansql;\n readonly config: XansqlConfigType;\n readonly engins: XansqlDialectEngine[] = ['mysql', 'postgres', 'sqlite'];\n constructor(xansql: Xansql, config: XansqlConfigType) {\n this.xansql = xansql;\n this.config = config;\n\n if (!config.dialect) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect configuration is required in Xansql config.`,\n })\n if (!config.dialect.engine || !config.dialect.execute) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect engine and execute function are required in Xansql config.`,\n })\n if (this.engins.indexOf(config.dialect.engine) === -1) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect engine must be one of ${this.engins.join(', ')}`,\n })\n if (typeof config.dialect.execute !== 'function') throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect execute must be a function.`,\n })\n }\n\n parse() {\n const config = {\n ...this.config,\n }\n\n return config as XansqlConfigTypeRequired\n }\n}\n\nexport default XansqlConfig;"],"names":[],"mappings":";;;;AAIA,MAAM,YAAY,CAAA;IAIf,WAAA,CAAY,MAAc,EAAE,MAAwB,EAAA;QAD3C,IAAA,CAAA,MAAM,GAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;AAErE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QAEpB,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC;AACxC,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,mDAAA,CAAqD;AAChE,aAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC;AAC1E,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,kEAAA,CAAoE;AAC/E,aAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;YAAE,MAAM,IAAI,WAAW,CAAC;AAC1E,gBAAA,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,CAAA,8BAAA,EAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;AACpE,aAAA,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,WAAW,CAAC;AACrE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,mCAAA,CAAqC;AAChD,aAAA,CAAC;IACL;IAEA,KAAK,GAAA;AACF,QAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACN,IAAI,CAAC,MAAM,CAChB;AAED,QAAA,OAAO,MAAkC;IAC5C;AACF;;;;"}
|
|
@@ -10,7 +10,7 @@ class XansqlConfig {
|
|
|
10
10
|
code: "INTERNAL_ERROR",
|
|
11
11
|
message: `Dialect configuration is required in Xansql config.`,
|
|
12
12
|
});
|
|
13
|
-
if (!config.dialect.engine
|
|
13
|
+
if (!config.dialect.engine || !config.dialect.execute)
|
|
14
14
|
throw new XansqlError({
|
|
15
15
|
code: "INTERNAL_ERROR",
|
|
16
16
|
message: `Dialect engine and execute function are required in Xansql config.`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XansqlConfig.js","sources":["../../../src/core/classes/XansqlConfig.ts"],"sourcesContent":["import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialectEngine } from \"../types\";\nimport Xansql from \"../Xansql\";\nimport XansqlError from \"../XansqlError\";\n\nclass XansqlConfig {\n readonly xansql: Xansql;\n readonly config: XansqlConfigType;\n readonly engins: XansqlDialectEngine[] = ['mysql', 'postgres', 'sqlite'];\n constructor(xansql: Xansql, config: XansqlConfigType) {\n this.xansql = xansql;\n this.config = config;\n\n if (!config.dialect) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect configuration is required in Xansql config.`,\n })\n if (!config.dialect.engine
|
|
1
|
+
{"version":3,"file":"XansqlConfig.js","sources":["../../../src/core/classes/XansqlConfig.ts"],"sourcesContent":["import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialectEngine } from \"../types\";\nimport Xansql from \"../Xansql\";\nimport XansqlError from \"../XansqlError\";\n\nclass XansqlConfig {\n readonly xansql: Xansql;\n readonly config: XansqlConfigType;\n readonly engins: XansqlDialectEngine[] = ['mysql', 'postgres', 'sqlite'];\n constructor(xansql: Xansql, config: XansqlConfigType) {\n this.xansql = xansql;\n this.config = config;\n\n if (!config.dialect) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect configuration is required in Xansql config.`,\n })\n if (!config.dialect.engine || !config.dialect.execute) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect engine and execute function are required in Xansql config.`,\n })\n if (this.engins.indexOf(config.dialect.engine) === -1) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect engine must be one of ${this.engins.join(', ')}`,\n })\n if (typeof config.dialect.execute !== 'function') throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect execute must be a function.`,\n })\n }\n\n parse() {\n const config = {\n ...this.config,\n }\n\n return config as XansqlConfigTypeRequired\n }\n}\n\nexport default XansqlConfig;"],"names":[],"mappings":";;AAIA,MAAM,YAAY,CAAA;IAIf,WAAA,CAAY,MAAc,EAAE,MAAwB,EAAA;QAD3C,IAAA,CAAA,MAAM,GAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;AAErE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QAEpB,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC;AACxC,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,mDAAA,CAAqD;AAChE,aAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC;AAC1E,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,kEAAA,CAAoE;AAC/E,aAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;YAAE,MAAM,IAAI,WAAW,CAAC;AAC1E,gBAAA,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,CAAA,8BAAA,EAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;AACpE,aAAA,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,WAAW,CAAC;AACrE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,mCAAA,CAAqC;AAChD,aAAA,CAAC;IACL;IAEA,KAAK,GAAA;AACF,QAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACN,IAAI,CAAC,MAAM,CAChB;AAED,QAAA,OAAO,MAAkC;IAC5C;AACF;;;;"}
|
|
@@ -61,7 +61,7 @@ class BuildAggregateArgs {
|
|
|
61
61
|
${((_b = args.groupBy) === null || _b === void 0 ? void 0 : _b.length) ? largs.sql : ""}
|
|
62
62
|
`.trim();
|
|
63
63
|
sql = sql.replace(/\s+/gi, " ");
|
|
64
|
-
const execute = await model.execute(sql);
|
|
64
|
+
const execute = await model.execute(sql, args.debug);
|
|
65
65
|
return execute.results;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/AggregateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { AggregateArgs } from \"../../types\";\nimport BuildAggregateSelectArgs from \"../AggregateSelectArgs\";\nimport BuildLimitArgs from \"../LimitArgs\";\nimport BuildOrderByArgs from \"../OrderByArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildAggregateArgs {\n\n constructor(private args: AggregateArgs<any, any>, private model: Model<any>) {\n }\n\n async results() {\n const args = this.args\n const model = this.model\n const schema = model.schema()\n\n const wargs = new BuildWhereArgs(args.where || {}, model)\n const sargs = new BuildAggregateSelectArgs(args.select, model)\n const oargs = new BuildOrderByArgs(args.orderBy || {}, model)\n const largs = new BuildLimitArgs(args.limit || {} as any, model)\n\n let columns: string[] = []\n let groupBySql = \"\"\n if (args.groupBy && args.groupBy.length) {\n for (let column of args.groupBy) {\n if (!schema[column]) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Column ${column} not found in model ${model.table} for groupBy`,\n model: model.table,\n field: column as any\n });\n }\n }\n columns.push(args.groupBy.join(\", \"))\n groupBySql = ` GROUP BY ${args.groupBy.join(\", \")} `\n }\n\n if (args.orderBy && Object.keys(args.orderBy).length) {\n if (!args.groupBy?.length) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot use orderBy without specifying groupBy.`,\n model: model.table,\n });\n }\n\n for (let col in args.orderBy) {\n if (!args.groupBy.includes(col)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot order by \"${col}\" without including it in groupBy.`,\n model: model.table,\n });\n }\n }\n }\n\n let sql = `SELECT ${columns.length ? columns.join(\", \") + \",\" : \"\"} ${sargs.sql} \n FROM ${model.table} as ${model.alias}\n ${wargs.sql} ${groupBySql}\n ${oargs.sql} \n ${args.groupBy?.length ? largs.sql : \"\"}\n `.trim()\n sql = sql.replace(/\\s+/gi, \" \")\n const execute = await model.execute(sql)\n return execute.results\n }\n}\n\nexport default BuildAggregateArgs"],"names":["BuildWhereArgs","BuildAggregateSelectArgs","BuildOrderByArgs","BuildLimitArgs"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/AggregateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { AggregateArgs } from \"../../types\";\nimport BuildAggregateSelectArgs from \"../AggregateSelectArgs\";\nimport BuildLimitArgs from \"../LimitArgs\";\nimport BuildOrderByArgs from \"../OrderByArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildAggregateArgs {\n\n constructor(private args: AggregateArgs<any, any>, private model: Model<any>) {\n }\n\n async results() {\n const args = this.args\n const model = this.model\n const schema = model.schema()\n\n const wargs = new BuildWhereArgs(args.where || {}, model)\n const sargs = new BuildAggregateSelectArgs(args.select, model)\n const oargs = new BuildOrderByArgs(args.orderBy || {}, model)\n const largs = new BuildLimitArgs(args.limit || {} as any, model)\n\n let columns: string[] = []\n let groupBySql = \"\"\n if (args.groupBy && args.groupBy.length) {\n for (let column of args.groupBy) {\n if (!schema[column]) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Column ${column} not found in model ${model.table} for groupBy`,\n model: model.table,\n field: column as any\n });\n }\n }\n columns.push(args.groupBy.join(\", \"))\n groupBySql = ` GROUP BY ${args.groupBy.join(\", \")} `\n }\n\n if (args.orderBy && Object.keys(args.orderBy).length) {\n if (!args.groupBy?.length) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot use orderBy without specifying groupBy.`,\n model: model.table,\n });\n }\n\n for (let col in args.orderBy) {\n if (!args.groupBy.includes(col)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot order by \"${col}\" without including it in groupBy.`,\n model: model.table,\n });\n }\n }\n }\n\n let sql = `SELECT ${columns.length ? columns.join(\", \") + \",\" : \"\"} ${sargs.sql} \n FROM ${model.table} as ${model.alias}\n ${wargs.sql} ${groupBySql}\n ${oargs.sql} \n ${args.groupBy?.length ? largs.sql : \"\"}\n `.trim()\n sql = sql.replace(/\\s+/gi, \" \")\n const execute = await model.execute(sql, args.debug)\n return execute.results\n }\n}\n\nexport default BuildAggregateArgs"],"names":["BuildWhereArgs","BuildAggregateSelectArgs","BuildOrderByArgs","BuildLimitArgs"],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ class BuildAggregateArgs {
|
|
|
59
59
|
${((_b = args.groupBy) === null || _b === void 0 ? void 0 : _b.length) ? largs.sql : ""}
|
|
60
60
|
`.trim();
|
|
61
61
|
sql = sql.replace(/\s+/gi, " ");
|
|
62
|
-
const execute = await model.execute(sql);
|
|
62
|
+
const execute = await model.execute(sql, args.debug);
|
|
63
63
|
return execute.results;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/model/Build/AggregateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { AggregateArgs } from \"../../types\";\nimport BuildAggregateSelectArgs from \"../AggregateSelectArgs\";\nimport BuildLimitArgs from \"../LimitArgs\";\nimport BuildOrderByArgs from \"../OrderByArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildAggregateArgs {\n\n constructor(private args: AggregateArgs<any, any>, private model: Model<any>) {\n }\n\n async results() {\n const args = this.args\n const model = this.model\n const schema = model.schema()\n\n const wargs = new BuildWhereArgs(args.where || {}, model)\n const sargs = new BuildAggregateSelectArgs(args.select, model)\n const oargs = new BuildOrderByArgs(args.orderBy || {}, model)\n const largs = new BuildLimitArgs(args.limit || {} as any, model)\n\n let columns: string[] = []\n let groupBySql = \"\"\n if (args.groupBy && args.groupBy.length) {\n for (let column of args.groupBy) {\n if (!schema[column]) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Column ${column} not found in model ${model.table} for groupBy`,\n model: model.table,\n field: column as any\n });\n }\n }\n columns.push(args.groupBy.join(\", \"))\n groupBySql = ` GROUP BY ${args.groupBy.join(\", \")} `\n }\n\n if (args.orderBy && Object.keys(args.orderBy).length) {\n if (!args.groupBy?.length) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot use orderBy without specifying groupBy.`,\n model: model.table,\n });\n }\n\n for (let col in args.orderBy) {\n if (!args.groupBy.includes(col)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot order by \"${col}\" without including it in groupBy.`,\n model: model.table,\n });\n }\n }\n }\n\n let sql = `SELECT ${columns.length ? columns.join(\", \") + \",\" : \"\"} ${sargs.sql} \n FROM ${model.table} as ${model.alias}\n ${wargs.sql} ${groupBySql}\n ${oargs.sql} \n ${args.groupBy?.length ? largs.sql : \"\"}\n `.trim()\n sql = sql.replace(/\\s+/gi, \" \")\n const execute = await model.execute(sql)\n return execute.results\n }\n}\n\nexport default BuildAggregateArgs"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/model/Build/AggregateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { AggregateArgs } from \"../../types\";\nimport BuildAggregateSelectArgs from \"../AggregateSelectArgs\";\nimport BuildLimitArgs from \"../LimitArgs\";\nimport BuildOrderByArgs from \"../OrderByArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildAggregateArgs {\n\n constructor(private args: AggregateArgs<any, any>, private model: Model<any>) {\n }\n\n async results() {\n const args = this.args\n const model = this.model\n const schema = model.schema()\n\n const wargs = new BuildWhereArgs(args.where || {}, model)\n const sargs = new BuildAggregateSelectArgs(args.select, model)\n const oargs = new BuildOrderByArgs(args.orderBy || {}, model)\n const largs = new BuildLimitArgs(args.limit || {} as any, model)\n\n let columns: string[] = []\n let groupBySql = \"\"\n if (args.groupBy && args.groupBy.length) {\n for (let column of args.groupBy) {\n if (!schema[column]) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Column ${column} not found in model ${model.table} for groupBy`,\n model: model.table,\n field: column as any\n });\n }\n }\n columns.push(args.groupBy.join(\", \"))\n groupBySql = ` GROUP BY ${args.groupBy.join(\", \")} `\n }\n\n if (args.orderBy && Object.keys(args.orderBy).length) {\n if (!args.groupBy?.length) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot use orderBy without specifying groupBy.`,\n model: model.table,\n });\n }\n\n for (let col in args.orderBy) {\n if (!args.groupBy.includes(col)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot order by \"${col}\" without including it in groupBy.`,\n model: model.table,\n });\n }\n }\n }\n\n let sql = `SELECT ${columns.length ? columns.join(\", \") + \",\" : \"\"} ${sargs.sql} \n FROM ${model.table} as ${model.alias}\n ${wargs.sql} ${groupBySql}\n ${oargs.sql} \n ${args.groupBy?.length ? largs.sql : \"\"}\n `.trim()\n sql = sql.replace(/\\s+/gi, \" \")\n const execute = await model.execute(sql, args.debug)\n return execute.results\n }\n}\n\nexport default BuildAggregateArgs"],"names":[],"mappings":"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"}
|
|
@@ -129,7 +129,7 @@ class BuildCreateArgs {
|
|
|
129
129
|
if (engine === "postgres")
|
|
130
130
|
sql += ` RETURNING ${model.IDColumn}`;
|
|
131
131
|
sql = sql.replace(/\s+/gi, " ");
|
|
132
|
-
const results = await model.execute(sql);
|
|
132
|
+
const results = await model.execute(sql, args.debug);
|
|
133
133
|
insertId = results === null || results === void 0 ? void 0 : results.insertId;
|
|
134
134
|
if (((_a = results.results) === null || _a === void 0 ? void 0 : _a.length) && engine === "postgres") {
|
|
135
135
|
insertId = results.results[0][model.IDColumn];
|
|
@@ -155,7 +155,7 @@ class BuildCreateArgs {
|
|
|
155
155
|
else {
|
|
156
156
|
rdata[rinfo.target.relation] = insertId;
|
|
157
157
|
}
|
|
158
|
-
const build = new BuildCreateArgs({ data: rdata }, RModel, true);
|
|
158
|
+
const build = new BuildCreateArgs({ data: rdata, debug: args.debug }, RModel, true);
|
|
159
159
|
await build.results();
|
|
160
160
|
}
|
|
161
161
|
}
|
|
@@ -165,7 +165,8 @@ class BuildCreateArgs {
|
|
|
165
165
|
select: sargs,
|
|
166
166
|
where: {
|
|
167
167
|
[model.IDColumn]: insertId
|
|
168
|
-
}
|
|
168
|
+
},
|
|
169
|
+
debug: args.debug
|
|
169
170
|
}, model);
|
|
170
171
|
return await buildFind.results();
|
|
171
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/CreateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { deepMerge, iof, isNumber, isObject, quote } from \"../../../utils\";\nimport XqlDate from \"../../../xt/fields/Date\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport XqlIDField from \"../../../xt/fields/IDField\";\nimport { CreateArgs, SchemaShape, SelectArgs } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\n\nclass BuildCreateArgs {\n private isSubquery\n constructor(private args: CreateArgs<SchemaShape>, private model: Model<any>, isSubquery = false) {\n this.isSubquery = isSubquery\n const data = args.data\n if (Array.isArray(data)) {\n for (let d of data) {\n this.validateData(d)\n }\n } else {\n this.validateData(data)\n }\n }\n\n async results() {\n const model = this.model\n const xansql = this.model.xansql\n const args = this.args\n const isSubquery = this.isSubquery\n const schema = model.schema()\n const data = args.data\n\n if (Array.isArray(data)) {\n for (let d of data) {\n const build = new BuildCreateArgs({ data: d }, model, isSubquery)\n await build.results()\n }\n } else {\n const values: { [col: string]: any } = {}\n const relations: { [col: string]: CreateArgs<any>['data'] } = {}\n const fileMetas: { [col: string]: XansqlFileMeta } = {}\n\n // set create and update\n for (let col in schema) {\n const field = schema[col]\n\n if (iof(field, XqlIDField)) {\n continue\n }\n if (iof(field, XqlDate) && (field.meta.createdAt || field.meta.updatedAt)) {\n const v = field.value.toSql(new Date())\n values[quote(xansql.dialect.engine, col)] = v\n continue\n }\n\n if (col in data) {\n const value = data[col]\n if (field.isRelation) {\n if (field.type === \"relation-one\") {\n values[quote(xansql.dialect.engine, col)] = value\n } else {\n relations[col] = value\n }\n } else {\n if (iof(field, XqlFile)) {\n try {\n const filemeta = await xansql.uploadFile(value);\n if (!filemeta) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Failed to upload file for field \"${col}\" in table \"${model.table}\".`,\n model: model.table,\n field: col\n })\n };\n (fileMetas as any)[col] = filemeta\n values[quote(xansql.dialect.engine, col)] = `'${JSON.stringify(filemeta)}'`\n } catch (error: any) {\n throw error\n }\n } else {\n try {\n values[quote(xansql.dialect.engine, col)] = field.value.toSql(value)\n } catch (error: any) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: error.message,\n model: model.table,\n field: col\n })\n }\n }\n }\n } else {\n if (field.isRelation) {\n if (field.type === \"relation-one\" && !field.meta.nullable) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Field \"${col}\" in table \"${model.table}\" is a non-nullable relation-one field and cannot be left empty.`,\n model: model.table,\n field: col,\n });\n }\n } else {\n try {\n values[quote(xansql.dialect.engine, col)] = field.value.toSql(undefined)\n } catch (error: any) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: error.message,\n model: model.table,\n field: col\n })\n }\n }\n }\n }\n\n let insertId\n try {\n const engine = xansql.dialect.engine\n let sql = `INSERT INTO ${model.table} (${Object.keys(values).join(', ')}) VALUES (${Object.values(values).join(\", \")})`\n if (engine === \"postgres\") sql += ` RETURNING ${model.IDColumn}`\n sql = sql.replace(/\\s+/gi, \" \")\n const results = await model.execute(sql)\n insertId = results?.insertId\n if (results.results?.length && engine === \"postgres\") {\n insertId = results.results[0][model.IDColumn]\n }\n } catch (error) {\n for (let col in fileMetas) {\n await xansql.deleteFile(fileMetas[col].fileId)\n }\n throw error\n }\n\n if (insertId && Object.keys(relations).length) {\n for (let col in relations) {\n const rdata = relations[col]\n const field = schema[col]\n const rinfo = field.relationInfo\n const RModel = xansql.model(field.model)\n if (Array.isArray(rdata)) {\n for (let d of rdata) {\n d[rinfo.target.relation] = insertId\n }\n } else {\n rdata[rinfo.target.relation] = insertId\n }\n\n const build = new BuildCreateArgs({ data: rdata }, RModel, true)\n await build.results()\n }\n }\n\n if (!isSubquery && insertId) {\n let sargs: SelectArgs = !args.select ? this.makeSelectArgs(data, model) : args.select\n const buildFind = new BuildFindArgs({\n select: sargs,\n where: {\n [model.IDColumn]: insertId\n }\n }, model)\n return await buildFind.results()\n }\n }\n }\n\n private makeSelectArgs(data: CreateArgs<any>['data'], model: Model<any>) {\n let args: any = {}\n const schema = model.schema()\n const xansql = model.xansql\n\n if (Array.isArray(data)) {\n for (let d of data) {\n const a = this.makeSelectArgs(d, model)\n args = deepMerge(args, a)\n }\n } else {\n for (let col in data) {\n const field = schema[col] as any\n if (field.type === \"relation-many\") {\n const RModel = xansql.model(field.model)\n const childargs = this.makeSelectArgs(data[col] as any, RModel)\n if (Object.keys(childargs).length) {\n args[col] = {\n select: childargs\n }\n } else {\n args[col] = true\n }\n }\n }\n }\n\n return args\n }\n\n private validateData(data: any) {\n const model = this.model\n const schema = model.schema()\n\n if (!isObject(data)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Expected \"data\" to be an object, received ${typeof data}`,\n model: model.table,\n params: data\n })\n }\n\n // check if idColumn exists\n if (model.IDColumn in data) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `You cannot set a value for the primary key \"${model.IDColumn}\" in table \"${model.table}\".`,\n model: model.table,\n field: model.IDColumn,\n })\n }\n\n for (let col in data) {\n const value = data[col]\n const field = schema[col]\n\n if (field.meta.create || field.meta.update) {\n if (col in data) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot set a value for \"${col}\" in table \"${model.table}\" — this field is automatically managed.`,\n model: model.table,\n field: col,\n })\n }\n }\n\n if (field.type === \"relation-one\" && !isNumber(value)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Invalid value for foreign key \"${col}\" in table \"${model.table}\". Expected a number, got ${typeof value}.`,\n model: model.table,\n field: col,\n })\n }\n\n if (iof(field, XqlFile) && !iof(value, File)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Invalid value for \"${col}\" in table \"${model.table}\". Expected a File, received ${typeof value}.`,\n model: model.table,\n field: col\n })\n }\n }\n }\n}\n\nexport default BuildCreateArgs"],"names":["iof","XqlIDField","XqlDate","quote","XqlFile","BuildFindArgs","deepMerge","isObject","isNumber"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/CreateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { deepMerge, iof, isNumber, isObject, quote } from \"../../../utils\";\nimport XqlDate from \"../../../xt/fields/Date\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport XqlIDField from \"../../../xt/fields/IDField\";\nimport { CreateArgs, SchemaShape, SelectArgs } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\n\nclass BuildCreateArgs {\n private isSubquery\n constructor(private args: CreateArgs<SchemaShape>, private model: Model<any>, isSubquery = false) {\n this.isSubquery = isSubquery\n const data = args.data\n if (Array.isArray(data)) {\n for (let d of data) {\n this.validateData(d)\n }\n } else {\n this.validateData(data)\n }\n }\n\n async results() {\n const model = this.model\n const xansql = this.model.xansql\n const args = this.args\n const isSubquery = this.isSubquery\n const schema = model.schema()\n const data = args.data\n\n if (Array.isArray(data)) {\n for (let d of data) {\n const build = new BuildCreateArgs({ data: d }, model, isSubquery)\n await build.results()\n }\n } else {\n const values: { [col: string]: any } = {}\n const relations: { [col: string]: CreateArgs<any>['data'] } = {}\n const fileMetas: { [col: string]: XansqlFileMeta } = {}\n\n // set create and update\n for (let col in schema) {\n const field = schema[col]\n\n if (iof(field, XqlIDField)) {\n continue\n }\n if (iof(field, XqlDate) && (field.meta.createdAt || field.meta.updatedAt)) {\n const v = field.value.toSql(new Date())\n values[quote(xansql.dialect.engine, col)] = v\n continue\n }\n\n if (col in data) {\n const value = data[col]\n if (field.isRelation) {\n if (field.type === \"relation-one\") {\n values[quote(xansql.dialect.engine, col)] = value\n } else {\n relations[col] = value\n }\n } else {\n if (iof(field, XqlFile)) {\n try {\n const filemeta = await xansql.uploadFile(value);\n if (!filemeta) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Failed to upload file for field \"${col}\" in table \"${model.table}\".`,\n model: model.table,\n field: col\n })\n };\n (fileMetas as any)[col] = filemeta\n values[quote(xansql.dialect.engine, col)] = `'${JSON.stringify(filemeta)}'`\n } catch (error: any) {\n throw error\n }\n } else {\n try {\n values[quote(xansql.dialect.engine, col)] = field.value.toSql(value)\n } catch (error: any) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: error.message,\n model: model.table,\n field: col\n })\n }\n }\n }\n } else {\n if (field.isRelation) {\n if (field.type === \"relation-one\" && !field.meta.nullable) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Field \"${col}\" in table \"${model.table}\" is a non-nullable relation-one field and cannot be left empty.`,\n model: model.table,\n field: col,\n });\n }\n } else {\n try {\n values[quote(xansql.dialect.engine, col)] = field.value.toSql(undefined)\n } catch (error: any) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: error.message,\n model: model.table,\n field: col\n })\n }\n }\n }\n }\n\n let insertId\n try {\n const engine = xansql.dialect.engine\n let sql = `INSERT INTO ${model.table} (${Object.keys(values).join(', ')}) VALUES (${Object.values(values).join(\", \")})`\n if (engine === \"postgres\") sql += ` RETURNING ${model.IDColumn}`\n sql = sql.replace(/\\s+/gi, \" \")\n const results = await model.execute(sql, args.debug)\n insertId = results?.insertId\n if (results.results?.length && engine === \"postgres\") {\n insertId = results.results[0][model.IDColumn]\n }\n } catch (error) {\n for (let col in fileMetas) {\n await xansql.deleteFile(fileMetas[col].fileId)\n }\n throw error\n }\n\n if (insertId && Object.keys(relations).length) {\n for (let col in relations) {\n const rdata = relations[col]\n const field = schema[col]\n const rinfo = field.relationInfo\n const RModel = xansql.model(field.model)\n if (Array.isArray(rdata)) {\n for (let d of rdata) {\n d[rinfo.target.relation] = insertId\n }\n } else {\n rdata[rinfo.target.relation] = insertId\n }\n\n const build = new BuildCreateArgs({ data: rdata, debug: args.debug }, RModel, true)\n await build.results()\n }\n }\n\n if (!isSubquery && insertId) {\n let sargs: SelectArgs = !args.select ? this.makeSelectArgs(data, model) : args.select\n const buildFind = new BuildFindArgs({\n select: sargs,\n where: {\n [model.IDColumn]: insertId\n },\n debug: args.debug\n }, model)\n return await buildFind.results()\n }\n }\n }\n\n private makeSelectArgs(data: CreateArgs<any>['data'], model: Model<any>) {\n let args: any = {}\n const schema = model.schema()\n const xansql = model.xansql\n\n if (Array.isArray(data)) {\n for (let d of data) {\n const a = this.makeSelectArgs(d, model)\n args = deepMerge(args, a)\n }\n } else {\n for (let col in data) {\n const field = schema[col] as any\n if (field.type === \"relation-many\") {\n const RModel = xansql.model(field.model)\n const childargs = this.makeSelectArgs(data[col] as any, RModel)\n if (Object.keys(childargs).length) {\n args[col] = {\n select: childargs\n }\n } else {\n args[col] = true\n }\n }\n }\n }\n\n return args\n }\n\n private validateData(data: any) {\n const model = this.model\n const schema = model.schema()\n\n if (!isObject(data)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Expected \"data\" to be an object, received ${typeof data}`,\n model: model.table,\n params: data\n })\n }\n\n // check if idColumn exists\n if (model.IDColumn in data) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `You cannot set a value for the primary key \"${model.IDColumn}\" in table \"${model.table}\".`,\n model: model.table,\n field: model.IDColumn,\n })\n }\n\n for (let col in data) {\n const value = data[col]\n const field = schema[col]\n\n if (field.meta.create || field.meta.update) {\n if (col in data) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Cannot set a value for \"${col}\" in table \"${model.table}\" — this field is automatically managed.`,\n model: model.table,\n field: col,\n })\n }\n }\n\n if (field.type === \"relation-one\" && !isNumber(value)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Invalid value for foreign key \"${col}\" in table \"${model.table}\". Expected a number, got ${typeof value}.`,\n model: model.table,\n field: col,\n })\n }\n\n if (iof(field, XqlFile) && !iof(value, File)) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Invalid value for \"${col}\" in table \"${model.table}\". Expected a File, received ${typeof value}.`,\n model: model.table,\n field: col\n })\n }\n }\n }\n}\n\nexport default BuildCreateArgs"],"names":["iof","XqlIDField","XqlDate","quote","XqlFile","BuildFindArgs","deepMerge","isObject","isNumber"],"mappings":"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"}
|
|
@@ -127,7 +127,7 @@ class BuildCreateArgs {
|
|
|
127
127
|
if (engine === "postgres")
|
|
128
128
|
sql += ` RETURNING ${model.IDColumn}`;
|
|
129
129
|
sql = sql.replace(/\s+/gi, " ");
|
|
130
|
-
const results = await model.execute(sql);
|
|
130
|
+
const results = await model.execute(sql, args.debug);
|
|
131
131
|
insertId = results === null || results === void 0 ? void 0 : results.insertId;
|
|
132
132
|
if (((_a = results.results) === null || _a === void 0 ? void 0 : _a.length) && engine === "postgres") {
|
|
133
133
|
insertId = results.results[0][model.IDColumn];
|
|
@@ -153,7 +153,7 @@ class BuildCreateArgs {
|
|
|
153
153
|
else {
|
|
154
154
|
rdata[rinfo.target.relation] = insertId;
|
|
155
155
|
}
|
|
156
|
-
const build = new BuildCreateArgs({ data: rdata }, RModel, true);
|
|
156
|
+
const build = new BuildCreateArgs({ data: rdata, debug: args.debug }, RModel, true);
|
|
157
157
|
await build.results();
|
|
158
158
|
}
|
|
159
159
|
}
|
|
@@ -163,7 +163,8 @@ class BuildCreateArgs {
|
|
|
163
163
|
select: sargs,
|
|
164
164
|
where: {
|
|
165
165
|
[model.IDColumn]: insertId
|
|
166
|
-
}
|
|
166
|
+
},
|
|
167
|
+
debug: args.debug
|
|
167
168
|
}, model);
|
|
168
169
|
return await buildFind.results();
|
|
169
170
|
}
|