xansql 1.1.22 → 1.1.23
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 +0 -1
- package/core/Migration.cjs.map +1 -1
- package/core/Migration.js +0 -1
- package/core/Migration.js.map +1 -1
- package/model/Build/WhereArgs/index.cjs +13 -5
- package/model/Build/WhereArgs/index.cjs.map +1 -1
- package/model/Build/WhereArgs/index.js +13 -5
- package/model/Build/WhereArgs/index.js.map +1 -1
- package/package.json +1 -1
package/core/Migration.cjs
CHANGED
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
|
|
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 }\n\n async migrate<M extends Model<any>>(model: M, force?: boolean) {\n if (typeof window !== \"undefined\") return\n\n if (force) {\n try {\n await model.execute(`DROP TABLE IF EXISTS ${model.table}`)\n } catch (error) {\n\n }\n }\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 debug: false\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;IAC5C;AAEA,IAAA,MAAM,OAAO,CAAuB,KAAQ,EAAE,KAAe,EAAA;QAC1D,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;QAEnC,IAAI,KAAK,EAAE;AACR,YAAA,IAAI;gBACD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAA,qBAAA,EAAwB,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;YAC7D;YAAE,OAAO,KAAK,EAAE;YAEhB;QACH;AAEA,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;QACjF,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,QAAA,KAAK,IAAI,KAAK,IAAI,UAAU,EAAE;AAC3B,YAAA,IAAI;gBACD,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;YACpC;AAAE,YAAA,OAAO,KAAK,EAAE,EAAE;QACrB;QAEA,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACnC;QACH;QAEA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QACtD,IAAI,cAAc,EAAE;AACjB,YAAA,KAAK,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAACD,SAAG,CAAC,KAAK,EAAEC,YAAe,CAAC,EAAE;AAC/B,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACvB,oBAAA,IAAI,MAAM,IAAI,cAAc,EAAE;yBAEvB;;AAEJ,wBAAA,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC;oBACpD;gBACH;YACH;QACH;AAEA,QAAA,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5B,YAAA,MAAM,EAAE;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,MAAM,EAAE;AACV,aAAA;AACD,YAAA,MAAM,EAAE;AACL,gBAAA,MAAM,EAAE;AACV,aAAA;AACD,YAAA,KAAK,EAAE;gBACJ,KAAK,EAAE,KAAK,CAAC;AACf,aAAA;AACD,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,KAAK,EAAE;AACT,SAAA,CAAC;IACL;IAEA,MAAM,GAAG,CAAC,KAAY,EAAA;AACnB,QAAA,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC7B,YAAA,KAAK,EAAE;gBACJ,KAAK,EAAE,KAAK,CAAC;AACf,aAAA;AACD,YAAA,KAAK,EAAE;AACT,SAAA,CAAC;IACL;IAEA,MAAM,aAAa,CAAC,KAAY,EAAA;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACjC,IAAI,GAAG,EAAE;YACN,OAAO,GAAG,CAAC,MAAM;QACpB;IACH;IAEA,MAAM,GAAG,CAAC,KAAY,EAAA;AACnB,QAAA,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;AACpB,SAAA,CAAC;IACL;AACF;;;;"}
|
package/core/Migration.js
CHANGED
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
|
|
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 }\n\n async migrate<M extends Model<any>>(model: M, force?: boolean) {\n if (typeof window !== \"undefined\") return\n\n if (force) {\n try {\n await model.execute(`DROP TABLE IF EXISTS ${model.table}`)\n } catch (error) {\n\n }\n }\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 debug: false\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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"}
|
|
@@ -15,12 +15,14 @@ class BuildWhereArgs {
|
|
|
15
15
|
this.model = model;
|
|
16
16
|
const schema = model.schema();
|
|
17
17
|
const parts = [];
|
|
18
|
-
aliases[model.table] = model.table in aliases ? aliases[model.table] : 0;
|
|
18
|
+
aliases[model.table] = model.table in aliases && aliases[model.table] > 0 ? aliases[model.table] : 0;
|
|
19
19
|
const alias = `${model.alias}${aliases[model.table] || ""}`;
|
|
20
20
|
if (Array.isArray(args)) {
|
|
21
21
|
const _parts = [];
|
|
22
22
|
for (const arg of args) {
|
|
23
|
-
const
|
|
23
|
+
const _aliases = Object.assign({}, aliases);
|
|
24
|
+
_aliases[model.table] = aliases[model.table] - 1;
|
|
25
|
+
const w_parts = new BuildWhereArgs(arg, model, _aliases).parts;
|
|
24
26
|
if (w_parts.length) {
|
|
25
27
|
if (w_parts.length > 1) {
|
|
26
28
|
_parts.push(`(${w_parts.join(" AND ")})`);
|
|
@@ -39,11 +41,13 @@ class BuildWhereArgs {
|
|
|
39
41
|
const val = args[col];
|
|
40
42
|
if (col === "AND") {
|
|
41
43
|
const andparts = [];
|
|
44
|
+
const _aliases = Object.assign({}, aliases);
|
|
45
|
+
_aliases[model.table] = aliases[model.table] - 1;
|
|
42
46
|
for (let aargs of val) {
|
|
43
47
|
if (!Object.keys(aargs).length) {
|
|
44
48
|
continue;
|
|
45
49
|
}
|
|
46
|
-
const b = new BuildWhereArgs(aargs, model,
|
|
50
|
+
const b = new BuildWhereArgs(aargs, model, _aliases);
|
|
47
51
|
andparts.push(b.parts.join(" AND "));
|
|
48
52
|
}
|
|
49
53
|
if (andparts.length) {
|
|
@@ -57,12 +61,14 @@ class BuildWhereArgs {
|
|
|
57
61
|
continue;
|
|
58
62
|
}
|
|
59
63
|
if (col === "OR") {
|
|
64
|
+
const _aliases = Object.assign({}, aliases);
|
|
65
|
+
_aliases[model.table] = aliases[model.table] - 1;
|
|
60
66
|
const orparts = [];
|
|
61
67
|
for (let aargs of val) {
|
|
62
68
|
if (!Object.keys(aargs).length) {
|
|
63
69
|
continue;
|
|
64
70
|
}
|
|
65
|
-
const b = new BuildWhereArgs(aargs, model,
|
|
71
|
+
const b = new BuildWhereArgs(aargs, model, _aliases);
|
|
66
72
|
orparts.push(b.parts.join(" AND "));
|
|
67
73
|
}
|
|
68
74
|
if (orparts.length) {
|
|
@@ -76,12 +82,14 @@ class BuildWhereArgs {
|
|
|
76
82
|
continue;
|
|
77
83
|
}
|
|
78
84
|
if (col === "NOT") {
|
|
85
|
+
const _aliases = Object.assign({}, aliases);
|
|
86
|
+
_aliases[model.table] = aliases[model.table] - 1;
|
|
79
87
|
const notparts = [];
|
|
80
88
|
for (let aargs of val) {
|
|
81
89
|
if (!Object.keys(aargs).length) {
|
|
82
90
|
continue;
|
|
83
91
|
}
|
|
84
|
-
const b = new BuildWhereArgs(aargs, model,
|
|
92
|
+
const b = new BuildWhereArgs(aargs, model, _aliases);
|
|
85
93
|
notparts.push(b.parts.join(" AND "));
|
|
86
94
|
}
|
|
87
95
|
if (notparts.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/WhereArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { isObject } from \"../../../utils\";\nimport { RelationManyInfo } from \"../../../xt/fields/RelationMany\";\nimport ModelWhere from \"../../ModelWhere\";\nimport { SchemaShape, WhereArgs, WhereSubConditionArgs } from \"../../types\";\n\ntype Aliases = {\n [table: string]: number\n}\n\nconst sub_keys = [\"is\", \"not\", \"lt\", \"lte\", \"gt\", \"gte\", \"in\", \"notIn\", \"between\", \"contains\", \"startsWith\", \"endsWith\"]\n\nclass BuildWhereArgs<S extends SchemaShape, M extends Model<any>> {\n readonly parts: string[];\n private model: M\n\n get sql() {\n if (!this.parts.length) return \"\";\n return `WHERE ${this.parts.join(\" AND \")}`;\n }\n\n constructor(args: WhereArgs<S>, model: M, aliases: Aliases = {}) {\n this.model = model\n const schema = model.schema();\n const parts: string[] = [];\n aliases[model.table] = model.table in aliases ? aliases[model.table] : 0\n const alias = `${model.alias}${aliases[model.table] || \"\"}`\n\n if (Array.isArray(args)) {\n const _parts = []\n for (const arg of args) {\n const w_parts = new BuildWhereArgs(arg, model, { ...aliases }).parts\n if (w_parts.length) {\n if (w_parts.length > 1) {\n _parts.push(`(${w_parts.join(\" AND \")})`)\n } else {\n _parts.push(w_parts.join(\" AND \"))\n }\n }\n }\n if (_parts.length) {\n parts.push(_parts.join(\" OR \"))\n }\n } else {\n for (const col in args) {\n const val = args[col];\n\n\n if (col === \"AND\") {\n const andparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, { ...aliases })\n andparts.push(b.parts.join(\" AND \"))\n }\n if (andparts.length) {\n if (andparts.length > 1) {\n parts.push(`(${andparts.join(\" AND \")})`)\n } else {\n parts.push(andparts.join(\" AND \"))\n }\n }\n continue\n }\n\n if (col === \"OR\") {\n const orparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, { ...aliases })\n orparts.push(b.parts.join(\" AND \"))\n }\n if (orparts.length) {\n if (orparts.length > 1) {\n parts.push(`(${orparts.join(\" OR \")})`)\n } else {\n parts.push(orparts.join(\" OR \"))\n }\n }\n continue\n }\n\n if (col === \"NOT\") {\n const notparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, { ...aliases })\n notparts.push(b.parts.join(\" AND \"))\n }\n if (notparts.length) {\n parts.push(`NOT (${notparts.join(\" AND \")})`)\n }\n continue\n }\n\n if (!(col in schema)) {\n throw new XansqlError({\n code: \"NOT_FOUND\",\n model: model.table,\n field: col,\n message: `Unknown column ${col} in ${model.table}`,\n });\n }\n\n const field = schema[col];\n if (field.isRelation) {\n const br = this.buildRelation(field, col, val, alias, aliases)\n br && parts.push(br)\n } else {\n // Array of subconditions → OR\n if (Array.isArray(val)) {\n const subParts: string[] = [];\n for (const subargs of val as any) {\n if (!isObject(subargs)) {\n throw new XansqlError({\n message: \"Invalid argument\",\n code: \"VALIDATION_ERROR\",\n model: model.table,\n field: col,\n params: subargs\n })\n }\n const cond = this.condition(col, subargs, alias, aliases);\n if (cond) {\n const keys = Object.keys(subargs);\n if (keys.length > 1) {\n subParts.push(`(${cond})`);\n } else {\n subParts.push(cond);\n }\n }\n }\n\n if (subParts.length) {\n const keys = Object.keys(val);\n if (keys.length > 1) {\n parts.push(`(${subParts.join(\" OR \")})`);\n } else {\n parts.push(`${subParts.join(\" OR \")}`);\n }\n }\n } else if (isObject(val)) {\n const cond = this.condition(col, val, alias, aliases);\n if (cond) {\n const keys = Object.keys(val);\n if (keys.length > 1) {\n parts.push(`(${cond})`);\n } else {\n parts.push(cond);\n }\n }\n } else {\n parts.push(`${alias}.${col}=${this.format(col, val)}`);\n }\n }\n }\n }\n aliases[model.table] = aliases[model.table] + 1\n this.parts = parts;\n }\n\n\n private buildRelation(field: any, col: string, val: any, alias: string, aliases: Aliases) {\n const model = this.model\n const xansql = model.xansql\n const relArgs = val as WhereArgs<any>;\n const RModel = xansql.model(field.model);\n const parts: string[] = [];\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const rinfo = field.relationInfo as RelationManyInfo\n const relationSql = `${alias}.${rinfo.self.relation}=${ralias}.${rinfo.target.relation}`\n\n if (Array.isArray(relArgs)) {\n const _parts = []\n for (const rargs of relArgs) {\n if (!isObject(rargs)) { }\n const b = this.buildRelation(field, col, rargs, alias, aliases)\n _parts.push(`(${b})`)\n }\n if (_parts.length) {\n parts.push(_parts.join(\" OR \"))\n }\n } else {\n const _sparts: string[] = []\n let _args: { [col: string]: any } = {}\n if (field.type === \"relation-one\") {\n if (relArgs === null) {\n parts.push(`${alias}.${col} IS NULL`);\n } else if (typeof relArgs === \"number\") {\n parts.push(`${alias}.${col}=${this.format(col, val)}`);\n } else {\n const _subargs: { [col: string]: any } = {}\n for (let col in relArgs) {\n const val = relArgs[col]\n if (sub_keys.includes(col)) {\n _subargs[col] = val\n } else {\n _args[col] = val\n }\n }\n\n if (Object.keys(_subargs).length) {\n const cond = this.condition(col, _subargs, alias, aliases);\n if (cond) {\n _sparts.push(cond)\n }\n }\n }\n } else {\n _args = relArgs\n }\n\n if (Object.keys(_args).length) {\n const relWhere = new BuildWhereArgs(_args, RModel, aliases);\n const relSql = relWhere.parts.join(\" AND \");\n _sparts.push(\n `EXISTS (SELECT 1 FROM ${RModel.table} as ${ralias} WHERE ${relationSql}${relSql ? ` AND ${relSql}` : \"\"})`\n );\n }\n if (_sparts.length) {\n parts.push(_sparts.join(\" AND \"))\n }\n }\n\n return parts.join(\" AND \")\n }\n\n private condition(column: string, subargs: WhereSubConditionArgs<any>, alias: string, aliases: Aliases) {\n const parts: string[] = [];\n const col_name = `${alias}.${column}`\n const model = this.model\n const engin = model.xansql.dialect.engine\n\n for (const key in subargs) {\n const val = (subargs as any)[key];\n\n switch (key) {\n case \"is\":\n if (val === null) {\n parts.push(`${col_name} IS NULL`);\n } else {\n parts.push(`${col_name} = ${this.format(column, val)}`);\n }\n break;\n case \"not\":\n if (Array.isArray(val)) {\n const notParts: string[] = [];\n for (const v of val) {\n if (!isObject(v)) {\n throw new XansqlError({\n code: \"QUERY_ERROR\",\n message: \"Invalid where condition\",\n field: column,\n model: this.model.table,\n })\n }\n const cond = this.condition(column, v as WhereSubConditionArgs<any>, alias, aliases);\n if (cond) {\n const keys = Object.keys(v);\n if (keys.length > 1) {\n notParts.push(`(${cond})`)\n } else {\n notParts.push(cond)\n }\n }\n }\n if (notParts.length) {\n parts.push(`NOT (${notParts.join(\" OR \")})`);\n }\n } else if (isObject(val)) {\n parts.push(`NOT (${this.condition(column, val, alias, aliases)})`);\n } else if (val === null) {\n parts.push(`${col_name} IS NOT NULL`)\n } else {\n parts.push(`${col_name} != ${this.format(column, val)}`);\n }\n break;\n\n case \"lt\":\n parts.push(`${col_name} < ${this.format(column, val)}`);\n break;\n\n case \"lte\":\n parts.push(`${col_name} <= ${this.format(column, val)}`);\n break;\n\n case \"gt\":\n parts.push(`${col_name} > ${this.format(column, val)}`);\n break;\n\n case \"gte\":\n parts.push(`${col_name} >= ${this.format(column, val)}`);\n break;\n\n case \"in\":\n if (val instanceof ModelWhere) {\n const RModel = val.model\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const wargs = new BuildWhereArgs(val.where || {}, RModel, aliases)\n\n parts.push(\n `EXISTS (\n SELECT 1\n FROM ${val.model.table} AS ${ralias}\n ${wargs.sql ? wargs.sql + \" AND \" : \"WHERE \"}\n ${ralias}.${String(val.inColumn)} = ${col_name}\n )`\n );\n } else if (val?.length) {\n parts.push(\n `${col_name} IN (${val.map((v: any) => this.format(column, v)).join(\", \")})`\n );\n }\n break;\n\n case \"notIn\":\n if (val instanceof ModelWhere) {\n const RModel = val.model\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const wargs = new BuildWhereArgs(val.where || {}, RModel, aliases)\n parts.push(\n `NOT EXISTS (\n SELECT 1\n FROM ${val.model.table} AS ${ralias}\n ${wargs.sql ? wargs.sql + \" AND \" : \"WHERE \"}\n ${ralias}.${String(val.inColumn)} = ${col_name}\n )`\n );\n } else if (val?.length) {\n parts.push(\n `${col_name} NOT IN (${val.map((v: any) => this.format(column, v)).join(\", \")})`\n );\n }\n break;\n\n case \"between\":\n parts.push(\n `${col_name} BETWEEN ${this.format(column, val[0])} AND ${this.format(column, val[1])}`\n );\n break;\n\n case \"contains\":\n let csql = `${col_name} LIKE ${this.format(column, `%${val}%`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n csql = `${col_name} ILIKE ${this.format(column, `%${val}%`, false)}`\n } else {\n csql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `%${val}%`, false)})`\n }\n }\n parts.push(csql);\n break;\n\n case \"startsWith\":\n let ssql = `${col_name} LIKE ${this.format(column, `${val}%`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n ssql = `${col_name} ILIKE ${this.format(column, `${val}%`, false)}`\n } else {\n ssql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `${val}%`, false)})`\n }\n }\n parts.push(ssql);\n break;\n\n case \"endsWith\":\n let esql = `${col_name} LIKE ${this.format(column, `%${val}`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n esql = `${col_name} ILIKE ${this.format(column, `%${val}`, false)}`\n } else {\n esql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `%${val}`, false)})`\n }\n }\n parts.push(esql);\n break;\n }\n }\n\n return parts.join(\" AND \");\n }\n\n private format(column: string, value: any, parse = true) {\n const model = this.model;\n const schema = model.schema()\n const field = schema[column];\n\n if (field.type === 'relation-one') {\n if (typeof value == \"number\" || value === null) {\n return value\n } else {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Invalid value for relation field \"${column}\" in table \"${model.table}\". Expected a number or null, received ${typeof value}.`,\n model: model.table,\n field: column\n })\n }\n }\n\n if (parse) {\n try {\n value = field.parse(value)\n } catch (error: any) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n model: model.table,\n field: column,\n sql: `${column}=${value}`,\n message: error.message\n });\n }\n }\n\n if (value instanceof Date) {\n return `'${value.toISOString()}'`;\n }\n\n if (typeof value === \"string\") {\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"TRUE\" : \"FALSE\";\n }\n\n if (value === null) {\n return \"NULL\";\n }\n\n return value;\n }\n\n}\n\nexport default BuildWhereArgs;\n"],"names":["isObject"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/WhereArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { isObject } from \"../../../utils\";\nimport { RelationManyInfo } from \"../../../xt/fields/RelationMany\";\nimport ModelWhere from \"../../ModelWhere\";\nimport { SchemaShape, WhereArgs, WhereSubConditionArgs } from \"../../types\";\n\ntype Aliases = {\n [table: string]: number\n}\n\nconst sub_keys = [\"is\", \"not\", \"lt\", \"lte\", \"gt\", \"gte\", \"in\", \"notIn\", \"between\", \"contains\", \"startsWith\", \"endsWith\"]\n\nclass BuildWhereArgs<S extends SchemaShape, M extends Model<any>> {\n readonly parts: string[];\n private model: M\n\n get sql() {\n if (!this.parts.length) return \"\";\n return `WHERE ${this.parts.join(\" AND \")}`;\n }\n\n constructor(args: WhereArgs<S>, model: M, aliases: Aliases = {}) {\n this.model = model\n const schema = model.schema();\n const parts: string[] = [];\n aliases[model.table] = model.table in aliases && aliases[model.table] > 0 ? aliases[model.table] : 0\n const alias = `${model.alias}${aliases[model.table] || \"\"}`\n\n if (Array.isArray(args)) {\n const _parts = []\n for (const arg of args) {\n const _aliases = { ...aliases }\n _aliases[model.table] = aliases[model.table] - 1\n\n const w_parts = new BuildWhereArgs(arg, model, _aliases).parts\n if (w_parts.length) {\n if (w_parts.length > 1) {\n _parts.push(`(${w_parts.join(\" AND \")})`)\n } else {\n _parts.push(w_parts.join(\" AND \"))\n }\n }\n }\n if (_parts.length) {\n parts.push(_parts.join(\" OR \"))\n }\n } else {\n for (const col in args) {\n const val = args[col];\n\n if (col === \"AND\") {\n const andparts = []\n const _aliases = { ...aliases }\n _aliases[model.table] = aliases[model.table] - 1\n\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, _aliases)\n andparts.push(b.parts.join(\" AND \"))\n }\n if (andparts.length) {\n if (andparts.length > 1) {\n parts.push(`(${andparts.join(\" AND \")})`)\n } else {\n parts.push(andparts.join(\" AND \"))\n }\n }\n continue\n }\n\n if (col === \"OR\") {\n const _aliases = { ...aliases }\n _aliases[model.table] = aliases[model.table] - 1\n\n const orparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, _aliases)\n orparts.push(b.parts.join(\" AND \"))\n }\n if (orparts.length) {\n if (orparts.length > 1) {\n parts.push(`(${orparts.join(\" OR \")})`)\n } else {\n parts.push(orparts.join(\" OR \"))\n }\n }\n continue\n }\n\n if (col === \"NOT\") {\n const _aliases = { ...aliases }\n _aliases[model.table] = aliases[model.table] - 1\n\n const notparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, _aliases)\n notparts.push(b.parts.join(\" AND \"))\n }\n if (notparts.length) {\n parts.push(`NOT (${notparts.join(\" AND \")})`)\n }\n continue\n }\n\n if (!(col in schema)) {\n throw new XansqlError({\n code: \"NOT_FOUND\",\n model: model.table,\n field: col,\n message: `Unknown column ${col} in ${model.table}`,\n });\n }\n\n const field = schema[col];\n if (field.isRelation) {\n const br = this.buildRelation(field, col, val, alias, aliases)\n br && parts.push(br)\n } else {\n // Array of subconditions → OR\n if (Array.isArray(val)) {\n const subParts: string[] = [];\n for (const subargs of val as any) {\n if (!isObject(subargs)) {\n throw new XansqlError({\n message: \"Invalid argument\",\n code: \"VALIDATION_ERROR\",\n model: model.table,\n field: col,\n params: subargs\n })\n }\n const cond = this.condition(col, subargs, alias, aliases);\n if (cond) {\n const keys = Object.keys(subargs);\n if (keys.length > 1) {\n subParts.push(`(${cond})`);\n } else {\n subParts.push(cond);\n }\n }\n }\n\n if (subParts.length) {\n const keys = Object.keys(val);\n if (keys.length > 1) {\n parts.push(`(${subParts.join(\" OR \")})`);\n } else {\n parts.push(`${subParts.join(\" OR \")}`);\n }\n }\n } else if (isObject(val)) {\n const cond = this.condition(col, val, alias, aliases);\n if (cond) {\n const keys = Object.keys(val);\n if (keys.length > 1) {\n parts.push(`(${cond})`);\n } else {\n parts.push(cond);\n }\n }\n } else {\n parts.push(`${alias}.${col}=${this.format(col, val)}`);\n }\n }\n }\n }\n aliases[model.table] = aliases[model.table] + 1\n this.parts = parts;\n }\n\n\n private buildRelation(field: any, col: string, val: any, alias: string, aliases: Aliases) {\n const model = this.model\n const xansql = model.xansql\n const relArgs = val as WhereArgs<any>;\n const RModel = xansql.model(field.model);\n const parts: string[] = [];\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const rinfo = field.relationInfo as RelationManyInfo\n const relationSql = `${alias}.${rinfo.self.relation}=${ralias}.${rinfo.target.relation}`\n\n if (Array.isArray(relArgs)) {\n const _parts = []\n for (const rargs of relArgs) {\n if (!isObject(rargs)) { }\n const b = this.buildRelation(field, col, rargs, alias, aliases)\n _parts.push(`(${b})`)\n }\n if (_parts.length) {\n parts.push(_parts.join(\" OR \"))\n }\n } else {\n const _sparts: string[] = []\n let _args: { [col: string]: any } = {}\n if (field.type === \"relation-one\") {\n if (relArgs === null) {\n parts.push(`${alias}.${col} IS NULL`);\n } else if (typeof relArgs === \"number\") {\n parts.push(`${alias}.${col}=${this.format(col, val)}`);\n } else {\n const _subargs: { [col: string]: any } = {}\n for (let col in relArgs) {\n const val = relArgs[col]\n if (sub_keys.includes(col)) {\n _subargs[col] = val\n } else {\n _args[col] = val\n }\n }\n\n if (Object.keys(_subargs).length) {\n const cond = this.condition(col, _subargs, alias, aliases);\n if (cond) {\n _sparts.push(cond)\n }\n }\n }\n } else {\n _args = relArgs\n }\n\n if (Object.keys(_args).length) {\n const relWhere = new BuildWhereArgs(_args, RModel, aliases);\n const relSql = relWhere.parts.join(\" AND \");\n _sparts.push(\n `EXISTS (SELECT 1 FROM ${RModel.table} as ${ralias} WHERE ${relationSql}${relSql ? ` AND ${relSql}` : \"\"})`\n );\n }\n if (_sparts.length) {\n parts.push(_sparts.join(\" AND \"))\n }\n }\n\n return parts.join(\" AND \")\n }\n\n private condition(column: string, subargs: WhereSubConditionArgs<any>, alias: string, aliases: Aliases) {\n const parts: string[] = [];\n const col_name = `${alias}.${column}`\n const model = this.model\n const engin = model.xansql.dialect.engine\n\n for (const key in subargs) {\n const val = (subargs as any)[key];\n\n switch (key) {\n case \"is\":\n if (val === null) {\n parts.push(`${col_name} IS NULL`);\n } else {\n parts.push(`${col_name} = ${this.format(column, val)}`);\n }\n break;\n case \"not\":\n if (Array.isArray(val)) {\n const notParts: string[] = [];\n for (const v of val) {\n if (!isObject(v)) {\n throw new XansqlError({\n code: \"QUERY_ERROR\",\n message: \"Invalid where condition\",\n field: column,\n model: this.model.table,\n })\n }\n const cond = this.condition(column, v as WhereSubConditionArgs<any>, alias, aliases);\n if (cond) {\n const keys = Object.keys(v);\n if (keys.length > 1) {\n notParts.push(`(${cond})`)\n } else {\n notParts.push(cond)\n }\n }\n }\n if (notParts.length) {\n parts.push(`NOT (${notParts.join(\" OR \")})`);\n }\n } else if (isObject(val)) {\n parts.push(`NOT (${this.condition(column, val, alias, aliases)})`);\n } else if (val === null) {\n parts.push(`${col_name} IS NOT NULL`)\n } else {\n parts.push(`${col_name} != ${this.format(column, val)}`);\n }\n break;\n\n case \"lt\":\n parts.push(`${col_name} < ${this.format(column, val)}`);\n break;\n\n case \"lte\":\n parts.push(`${col_name} <= ${this.format(column, val)}`);\n break;\n\n case \"gt\":\n parts.push(`${col_name} > ${this.format(column, val)}`);\n break;\n\n case \"gte\":\n parts.push(`${col_name} >= ${this.format(column, val)}`);\n break;\n\n case \"in\":\n if (val instanceof ModelWhere) {\n const RModel = val.model\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const wargs = new BuildWhereArgs(val.where || {}, RModel, aliases)\n\n parts.push(\n `EXISTS (\n SELECT 1\n FROM ${val.model.table} AS ${ralias}\n ${wargs.sql ? wargs.sql + \" AND \" : \"WHERE \"}\n ${ralias}.${String(val.inColumn)} = ${col_name}\n )`\n );\n } else if (val?.length) {\n parts.push(\n `${col_name} IN (${val.map((v: any) => this.format(column, v)).join(\", \")})`\n );\n }\n break;\n\n case \"notIn\":\n if (val instanceof ModelWhere) {\n const RModel = val.model\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const wargs = new BuildWhereArgs(val.where || {}, RModel, aliases)\n parts.push(\n `NOT EXISTS (\n SELECT 1\n FROM ${val.model.table} AS ${ralias}\n ${wargs.sql ? wargs.sql + \" AND \" : \"WHERE \"}\n ${ralias}.${String(val.inColumn)} = ${col_name}\n )`\n );\n } else if (val?.length) {\n parts.push(\n `${col_name} NOT IN (${val.map((v: any) => this.format(column, v)).join(\", \")})`\n );\n }\n break;\n\n case \"between\":\n parts.push(\n `${col_name} BETWEEN ${this.format(column, val[0])} AND ${this.format(column, val[1])}`\n );\n break;\n\n case \"contains\":\n let csql = `${col_name} LIKE ${this.format(column, `%${val}%`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n csql = `${col_name} ILIKE ${this.format(column, `%${val}%`, false)}`\n } else {\n csql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `%${val}%`, false)})`\n }\n }\n parts.push(csql);\n break;\n\n case \"startsWith\":\n let ssql = `${col_name} LIKE ${this.format(column, `${val}%`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n ssql = `${col_name} ILIKE ${this.format(column, `${val}%`, false)}`\n } else {\n ssql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `${val}%`, false)})`\n }\n }\n parts.push(ssql);\n break;\n\n case \"endsWith\":\n let esql = `${col_name} LIKE ${this.format(column, `%${val}`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n esql = `${col_name} ILIKE ${this.format(column, `%${val}`, false)}`\n } else {\n esql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `%${val}`, false)})`\n }\n }\n parts.push(esql);\n break;\n }\n }\n\n return parts.join(\" AND \");\n }\n\n private format(column: string, value: any, parse = true) {\n const model = this.model;\n const schema = model.schema()\n const field = schema[column];\n\n if (field.type === 'relation-one') {\n if (typeof value == \"number\" || value === null) {\n return value\n } else {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Invalid value for relation field \"${column}\" in table \"${model.table}\". Expected a number or null, received ${typeof value}.`,\n model: model.table,\n field: column\n })\n }\n }\n\n if (parse) {\n try {\n value = field.parse(value)\n } catch (error: any) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n model: model.table,\n field: column,\n sql: `${column}=${value}`,\n message: error.message\n });\n }\n }\n\n if (value instanceof Date) {\n return `'${value.toISOString()}'`;\n }\n\n if (typeof value === \"string\") {\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"TRUE\" : \"FALSE\";\n }\n\n if (value === null) {\n return \"NULL\";\n }\n\n return value;\n }\n\n}\n\nexport default BuildWhereArgs;\n"],"names":["isObject"],"mappings":"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"}
|
|
@@ -13,12 +13,14 @@ class BuildWhereArgs {
|
|
|
13
13
|
this.model = model;
|
|
14
14
|
const schema = model.schema();
|
|
15
15
|
const parts = [];
|
|
16
|
-
aliases[model.table] = model.table in aliases ? aliases[model.table] : 0;
|
|
16
|
+
aliases[model.table] = model.table in aliases && aliases[model.table] > 0 ? aliases[model.table] : 0;
|
|
17
17
|
const alias = `${model.alias}${aliases[model.table] || ""}`;
|
|
18
18
|
if (Array.isArray(args)) {
|
|
19
19
|
const _parts = [];
|
|
20
20
|
for (const arg of args) {
|
|
21
|
-
const
|
|
21
|
+
const _aliases = Object.assign({}, aliases);
|
|
22
|
+
_aliases[model.table] = aliases[model.table] - 1;
|
|
23
|
+
const w_parts = new BuildWhereArgs(arg, model, _aliases).parts;
|
|
22
24
|
if (w_parts.length) {
|
|
23
25
|
if (w_parts.length > 1) {
|
|
24
26
|
_parts.push(`(${w_parts.join(" AND ")})`);
|
|
@@ -37,11 +39,13 @@ class BuildWhereArgs {
|
|
|
37
39
|
const val = args[col];
|
|
38
40
|
if (col === "AND") {
|
|
39
41
|
const andparts = [];
|
|
42
|
+
const _aliases = Object.assign({}, aliases);
|
|
43
|
+
_aliases[model.table] = aliases[model.table] - 1;
|
|
40
44
|
for (let aargs of val) {
|
|
41
45
|
if (!Object.keys(aargs).length) {
|
|
42
46
|
continue;
|
|
43
47
|
}
|
|
44
|
-
const b = new BuildWhereArgs(aargs, model,
|
|
48
|
+
const b = new BuildWhereArgs(aargs, model, _aliases);
|
|
45
49
|
andparts.push(b.parts.join(" AND "));
|
|
46
50
|
}
|
|
47
51
|
if (andparts.length) {
|
|
@@ -55,12 +59,14 @@ class BuildWhereArgs {
|
|
|
55
59
|
continue;
|
|
56
60
|
}
|
|
57
61
|
if (col === "OR") {
|
|
62
|
+
const _aliases = Object.assign({}, aliases);
|
|
63
|
+
_aliases[model.table] = aliases[model.table] - 1;
|
|
58
64
|
const orparts = [];
|
|
59
65
|
for (let aargs of val) {
|
|
60
66
|
if (!Object.keys(aargs).length) {
|
|
61
67
|
continue;
|
|
62
68
|
}
|
|
63
|
-
const b = new BuildWhereArgs(aargs, model,
|
|
69
|
+
const b = new BuildWhereArgs(aargs, model, _aliases);
|
|
64
70
|
orparts.push(b.parts.join(" AND "));
|
|
65
71
|
}
|
|
66
72
|
if (orparts.length) {
|
|
@@ -74,12 +80,14 @@ class BuildWhereArgs {
|
|
|
74
80
|
continue;
|
|
75
81
|
}
|
|
76
82
|
if (col === "NOT") {
|
|
83
|
+
const _aliases = Object.assign({}, aliases);
|
|
84
|
+
_aliases[model.table] = aliases[model.table] - 1;
|
|
77
85
|
const notparts = [];
|
|
78
86
|
for (let aargs of val) {
|
|
79
87
|
if (!Object.keys(aargs).length) {
|
|
80
88
|
continue;
|
|
81
89
|
}
|
|
82
|
-
const b = new BuildWhereArgs(aargs, model,
|
|
90
|
+
const b = new BuildWhereArgs(aargs, model, _aliases);
|
|
83
91
|
notparts.push(b.parts.join(" AND "));
|
|
84
92
|
}
|
|
85
93
|
if (notparts.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/model/Build/WhereArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { isObject } from \"../../../utils\";\nimport { RelationManyInfo } from \"../../../xt/fields/RelationMany\";\nimport ModelWhere from \"../../ModelWhere\";\nimport { SchemaShape, WhereArgs, WhereSubConditionArgs } from \"../../types\";\n\ntype Aliases = {\n [table: string]: number\n}\n\nconst sub_keys = [\"is\", \"not\", \"lt\", \"lte\", \"gt\", \"gte\", \"in\", \"notIn\", \"between\", \"contains\", \"startsWith\", \"endsWith\"]\n\nclass BuildWhereArgs<S extends SchemaShape, M extends Model<any>> {\n readonly parts: string[];\n private model: M\n\n get sql() {\n if (!this.parts.length) return \"\";\n return `WHERE ${this.parts.join(\" AND \")}`;\n }\n\n constructor(args: WhereArgs<S>, model: M, aliases: Aliases = {}) {\n this.model = model\n const schema = model.schema();\n const parts: string[] = [];\n aliases[model.table] = model.table in aliases ? aliases[model.table] : 0\n const alias = `${model.alias}${aliases[model.table] || \"\"}`\n\n if (Array.isArray(args)) {\n const _parts = []\n for (const arg of args) {\n const w_parts = new BuildWhereArgs(arg, model, { ...aliases }).parts\n if (w_parts.length) {\n if (w_parts.length > 1) {\n _parts.push(`(${w_parts.join(\" AND \")})`)\n } else {\n _parts.push(w_parts.join(\" AND \"))\n }\n }\n }\n if (_parts.length) {\n parts.push(_parts.join(\" OR \"))\n }\n } else {\n for (const col in args) {\n const val = args[col];\n\n\n if (col === \"AND\") {\n const andparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, { ...aliases })\n andparts.push(b.parts.join(\" AND \"))\n }\n if (andparts.length) {\n if (andparts.length > 1) {\n parts.push(`(${andparts.join(\" AND \")})`)\n } else {\n parts.push(andparts.join(\" AND \"))\n }\n }\n continue\n }\n\n if (col === \"OR\") {\n const orparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, { ...aliases })\n orparts.push(b.parts.join(\" AND \"))\n }\n if (orparts.length) {\n if (orparts.length > 1) {\n parts.push(`(${orparts.join(\" OR \")})`)\n } else {\n parts.push(orparts.join(\" OR \"))\n }\n }\n continue\n }\n\n if (col === \"NOT\") {\n const notparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, { ...aliases })\n notparts.push(b.parts.join(\" AND \"))\n }\n if (notparts.length) {\n parts.push(`NOT (${notparts.join(\" AND \")})`)\n }\n continue\n }\n\n if (!(col in schema)) {\n throw new XansqlError({\n code: \"NOT_FOUND\",\n model: model.table,\n field: col,\n message: `Unknown column ${col} in ${model.table}`,\n });\n }\n\n const field = schema[col];\n if (field.isRelation) {\n const br = this.buildRelation(field, col, val, alias, aliases)\n br && parts.push(br)\n } else {\n // Array of subconditions → OR\n if (Array.isArray(val)) {\n const subParts: string[] = [];\n for (const subargs of val as any) {\n if (!isObject(subargs)) {\n throw new XansqlError({\n message: \"Invalid argument\",\n code: \"VALIDATION_ERROR\",\n model: model.table,\n field: col,\n params: subargs\n })\n }\n const cond = this.condition(col, subargs, alias, aliases);\n if (cond) {\n const keys = Object.keys(subargs);\n if (keys.length > 1) {\n subParts.push(`(${cond})`);\n } else {\n subParts.push(cond);\n }\n }\n }\n\n if (subParts.length) {\n const keys = Object.keys(val);\n if (keys.length > 1) {\n parts.push(`(${subParts.join(\" OR \")})`);\n } else {\n parts.push(`${subParts.join(\" OR \")}`);\n }\n }\n } else if (isObject(val)) {\n const cond = this.condition(col, val, alias, aliases);\n if (cond) {\n const keys = Object.keys(val);\n if (keys.length > 1) {\n parts.push(`(${cond})`);\n } else {\n parts.push(cond);\n }\n }\n } else {\n parts.push(`${alias}.${col}=${this.format(col, val)}`);\n }\n }\n }\n }\n aliases[model.table] = aliases[model.table] + 1\n this.parts = parts;\n }\n\n\n private buildRelation(field: any, col: string, val: any, alias: string, aliases: Aliases) {\n const model = this.model\n const xansql = model.xansql\n const relArgs = val as WhereArgs<any>;\n const RModel = xansql.model(field.model);\n const parts: string[] = [];\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const rinfo = field.relationInfo as RelationManyInfo\n const relationSql = `${alias}.${rinfo.self.relation}=${ralias}.${rinfo.target.relation}`\n\n if (Array.isArray(relArgs)) {\n const _parts = []\n for (const rargs of relArgs) {\n if (!isObject(rargs)) { }\n const b = this.buildRelation(field, col, rargs, alias, aliases)\n _parts.push(`(${b})`)\n }\n if (_parts.length) {\n parts.push(_parts.join(\" OR \"))\n }\n } else {\n const _sparts: string[] = []\n let _args: { [col: string]: any } = {}\n if (field.type === \"relation-one\") {\n if (relArgs === null) {\n parts.push(`${alias}.${col} IS NULL`);\n } else if (typeof relArgs === \"number\") {\n parts.push(`${alias}.${col}=${this.format(col, val)}`);\n } else {\n const _subargs: { [col: string]: any } = {}\n for (let col in relArgs) {\n const val = relArgs[col]\n if (sub_keys.includes(col)) {\n _subargs[col] = val\n } else {\n _args[col] = val\n }\n }\n\n if (Object.keys(_subargs).length) {\n const cond = this.condition(col, _subargs, alias, aliases);\n if (cond) {\n _sparts.push(cond)\n }\n }\n }\n } else {\n _args = relArgs\n }\n\n if (Object.keys(_args).length) {\n const relWhere = new BuildWhereArgs(_args, RModel, aliases);\n const relSql = relWhere.parts.join(\" AND \");\n _sparts.push(\n `EXISTS (SELECT 1 FROM ${RModel.table} as ${ralias} WHERE ${relationSql}${relSql ? ` AND ${relSql}` : \"\"})`\n );\n }\n if (_sparts.length) {\n parts.push(_sparts.join(\" AND \"))\n }\n }\n\n return parts.join(\" AND \")\n }\n\n private condition(column: string, subargs: WhereSubConditionArgs<any>, alias: string, aliases: Aliases) {\n const parts: string[] = [];\n const col_name = `${alias}.${column}`\n const model = this.model\n const engin = model.xansql.dialect.engine\n\n for (const key in subargs) {\n const val = (subargs as any)[key];\n\n switch (key) {\n case \"is\":\n if (val === null) {\n parts.push(`${col_name} IS NULL`);\n } else {\n parts.push(`${col_name} = ${this.format(column, val)}`);\n }\n break;\n case \"not\":\n if (Array.isArray(val)) {\n const notParts: string[] = [];\n for (const v of val) {\n if (!isObject(v)) {\n throw new XansqlError({\n code: \"QUERY_ERROR\",\n message: \"Invalid where condition\",\n field: column,\n model: this.model.table,\n })\n }\n const cond = this.condition(column, v as WhereSubConditionArgs<any>, alias, aliases);\n if (cond) {\n const keys = Object.keys(v);\n if (keys.length > 1) {\n notParts.push(`(${cond})`)\n } else {\n notParts.push(cond)\n }\n }\n }\n if (notParts.length) {\n parts.push(`NOT (${notParts.join(\" OR \")})`);\n }\n } else if (isObject(val)) {\n parts.push(`NOT (${this.condition(column, val, alias, aliases)})`);\n } else if (val === null) {\n parts.push(`${col_name} IS NOT NULL`)\n } else {\n parts.push(`${col_name} != ${this.format(column, val)}`);\n }\n break;\n\n case \"lt\":\n parts.push(`${col_name} < ${this.format(column, val)}`);\n break;\n\n case \"lte\":\n parts.push(`${col_name} <= ${this.format(column, val)}`);\n break;\n\n case \"gt\":\n parts.push(`${col_name} > ${this.format(column, val)}`);\n break;\n\n case \"gte\":\n parts.push(`${col_name} >= ${this.format(column, val)}`);\n break;\n\n case \"in\":\n if (val instanceof ModelWhere) {\n const RModel = val.model\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const wargs = new BuildWhereArgs(val.where || {}, RModel, aliases)\n\n parts.push(\n `EXISTS (\n SELECT 1\n FROM ${val.model.table} AS ${ralias}\n ${wargs.sql ? wargs.sql + \" AND \" : \"WHERE \"}\n ${ralias}.${String(val.inColumn)} = ${col_name}\n )`\n );\n } else if (val?.length) {\n parts.push(\n `${col_name} IN (${val.map((v: any) => this.format(column, v)).join(\", \")})`\n );\n }\n break;\n\n case \"notIn\":\n if (val instanceof ModelWhere) {\n const RModel = val.model\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const wargs = new BuildWhereArgs(val.where || {}, RModel, aliases)\n parts.push(\n `NOT EXISTS (\n SELECT 1\n FROM ${val.model.table} AS ${ralias}\n ${wargs.sql ? wargs.sql + \" AND \" : \"WHERE \"}\n ${ralias}.${String(val.inColumn)} = ${col_name}\n )`\n );\n } else if (val?.length) {\n parts.push(\n `${col_name} NOT IN (${val.map((v: any) => this.format(column, v)).join(\", \")})`\n );\n }\n break;\n\n case \"between\":\n parts.push(\n `${col_name} BETWEEN ${this.format(column, val[0])} AND ${this.format(column, val[1])}`\n );\n break;\n\n case \"contains\":\n let csql = `${col_name} LIKE ${this.format(column, `%${val}%`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n csql = `${col_name} ILIKE ${this.format(column, `%${val}%`, false)}`\n } else {\n csql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `%${val}%`, false)})`\n }\n }\n parts.push(csql);\n break;\n\n case \"startsWith\":\n let ssql = `${col_name} LIKE ${this.format(column, `${val}%`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n ssql = `${col_name} ILIKE ${this.format(column, `${val}%`, false)}`\n } else {\n ssql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `${val}%`, false)})`\n }\n }\n parts.push(ssql);\n break;\n\n case \"endsWith\":\n let esql = `${col_name} LIKE ${this.format(column, `%${val}`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n esql = `${col_name} ILIKE ${this.format(column, `%${val}`, false)}`\n } else {\n esql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `%${val}`, false)})`\n }\n }\n parts.push(esql);\n break;\n }\n }\n\n return parts.join(\" AND \");\n }\n\n private format(column: string, value: any, parse = true) {\n const model = this.model;\n const schema = model.schema()\n const field = schema[column];\n\n if (field.type === 'relation-one') {\n if (typeof value == \"number\" || value === null) {\n return value\n } else {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Invalid value for relation field \"${column}\" in table \"${model.table}\". Expected a number or null, received ${typeof value}.`,\n model: model.table,\n field: column\n })\n }\n }\n\n if (parse) {\n try {\n value = field.parse(value)\n } catch (error: any) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n model: model.table,\n field: column,\n sql: `${column}=${value}`,\n message: error.message\n });\n }\n }\n\n if (value instanceof Date) {\n return `'${value.toISOString()}'`;\n }\n\n if (typeof value === \"string\") {\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"TRUE\" : \"FALSE\";\n }\n\n if (value === null) {\n return \"NULL\";\n }\n\n return value;\n }\n\n}\n\nexport default BuildWhereArgs;\n"],"names":[],"mappings":";;;;AAWA,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC;AAExH,MAAM,cAAc,CAAA;AAIjB,IAAA,IAAI,GAAG,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;QACjC,OAAO,CAAA,MAAA,EAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAE;IAC7C;AAEA,IAAA,WAAA,CAAY,IAAkB,EAAE,KAAQ,EAAE,UAAmB,EAAE,EAAA;AAC5D,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;QAC7B,MAAM,KAAK,GAAa,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACxE,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,CAAA,EAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;AAE3D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,MAAM,GAAG,EAAE;AACjB,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACrB,gBAAA,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,OAAO,CAAA,CAAG,CAAC,KAAK;AACpE,gBAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AACjB,oBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,wBAAA,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAA,CAAG,CAAC;oBAC5C;yBAAO;wBACJ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrC;gBACH;YACH;AACA,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBAChB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC;QACH;aAAO;AACJ,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACrB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAGrB,gBAAA,IAAI,GAAG,KAAK,KAAK,EAAE;oBAChB,MAAM,QAAQ,GAAG,EAAE;AACnB,oBAAA,KAAK,IAAI,KAAK,IAAI,GAAY,EAAE;wBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;4BAC7B;wBACH;wBACA,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,OAAO,CAAA,CAAG;AAC1D,wBAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvC;AACA,oBAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AAClB,wBAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,4BAAA,KAAK,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAA,CAAG,CAAC;wBAC5C;6BAAO;4BACJ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACrC;oBACH;oBACA;gBACH;AAEA,gBAAA,IAAI,GAAG,KAAK,IAAI,EAAE;oBACf,MAAM,OAAO,GAAG,EAAE;AAClB,oBAAA,KAAK,IAAI,KAAK,IAAI,GAAY,EAAE;wBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;4BAC7B;wBACH;wBACA,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,OAAO,CAAA,CAAG;AAC1D,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtC;AACA,oBAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AACjB,wBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,4BAAA,KAAK,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAA,CAAG,CAAC;wBAC1C;6BAAO;4BACJ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACnC;oBACH;oBACA;gBACH;AAEA,gBAAA,IAAI,GAAG,KAAK,KAAK,EAAE;oBAChB,MAAM,QAAQ,GAAG,EAAE;AACnB,oBAAA,KAAK,IAAI,KAAK,IAAI,GAAY,EAAE;wBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;4BAC7B;wBACH;wBACA,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,OAAO,CAAA,CAAG;AAC1D,wBAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvC;AACA,oBAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AAClB,wBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,CAAA,CAAG,CAAC;oBAChD;oBACA;gBACH;AAEA,gBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE;oBACnB,MAAM,IAAI,WAAW,CAAC;AACnB,wBAAA,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,OAAO,EAAE,CAAA,eAAA,EAAkB,GAAG,OAAO,KAAK,CAAC,KAAK,CAAA,CAAE;AACpD,qBAAA,CAAC;gBACL;AAEA,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,gBAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AACnB,oBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;AAC9D,oBAAA,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB;qBAAO;;AAEJ,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACrB,MAAM,QAAQ,GAAa,EAAE;AAC7B,wBAAA,KAAK,MAAM,OAAO,IAAI,GAAU,EAAE;AAC/B,4BAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gCACrB,MAAM,IAAI,WAAW,CAAC;AACnB,oCAAA,OAAO,EAAE,kBAAkB;AAC3B,oCAAA,IAAI,EAAE,kBAAkB;oCACxB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,oCAAA,KAAK,EAAE,GAAG;AACV,oCAAA,MAAM,EAAE;AACV,iCAAA,CAAC;4BACL;AACA,4BAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;4BACzD,IAAI,IAAI,EAAE;gCACP,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,gCAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,oCAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA,CAAA,CAAG,CAAC;gCAC7B;qCAAO;AACJ,oCAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gCACtB;4BACH;wBACH;AAEA,wBAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;4BAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,4BAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,gCAAA,KAAK,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAA,CAAG,CAAC;4BAC3C;iCAAO;AACJ,gCAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;4BACzC;wBACH;oBACH;AAAO,yBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;wBACrD,IAAI,IAAI,EAAE;4BACP,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,4BAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,gCAAA,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA,CAAA,CAAG,CAAC;4BAC1B;iCAAO;AACJ,gCAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;4BACnB;wBACH;oBACH;yBAAO;AACJ,wBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;oBACzD;gBACH;YACH;QACH;AACA,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACrB;IAGQ,aAAa,CAAC,KAAU,EAAE,GAAW,EAAE,GAAQ,EAAE,KAAa,EAAE,OAAgB,EAAA;AACrF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;QAC3B,MAAM,OAAO,GAAG,GAAqB;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACxC,MAAM,KAAK,GAAa,EAAE;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/E,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,CAAA,EAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;AAC9D,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAgC;AACpD,QAAA,MAAM,WAAW,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;AAExF,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,MAAM,MAAM,GAAG,EAAE;AACjB,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;AAC/D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;YACxB;AACA,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBAChB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC;QACH;aAAO;YACJ,MAAM,OAAO,GAAa,EAAE;YAC5B,IAAI,KAAK,GAA2B,EAAE;AACtC,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;AAChC,gBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;oBACnB,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,QAAA,CAAU,CAAC;gBACxC;AAAO,qBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACrC,oBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;gBACzD;qBAAO;oBACJ,MAAM,QAAQ,GAA2B,EAAE;AAC3C,oBAAA,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;AACtB,wBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,wBAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzB,4BAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG;wBACtB;6BAAO;AACJ,4BAAA,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG;wBACnB;oBACH;oBAEA,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;AAC/B,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;wBAC1D,IAAI,IAAI,EAAE;AACP,4BAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;wBACrB;oBACH;gBACH;YACH;iBAAO;gBACJ,KAAK,GAAG,OAAO;YAClB;YAEA,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;gBAC5B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;gBAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC3C,OAAO,CAAC,IAAI,CACT,CAAA,sBAAA,EAAyB,MAAM,CAAC,KAAK,CAAA,IAAA,EAAO,MAAM,CAAA,OAAA,EAAU,WAAW,CAAA,EAAG,MAAM,GAAG,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,GAAG,EAAE,CAAA,CAAA,CAAG,CAC7G;YACJ;AACA,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;gBACjB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC;QACH;AAEA,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B;AAEQ,IAAA,SAAS,CAAC,MAAc,EAAE,OAAmC,EAAE,KAAa,EAAE,OAAgB,EAAA;QACnG,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,MAAM,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;AAEzC,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACxB,YAAA,MAAM,GAAG,GAAI,OAAe,CAAC,GAAG,CAAC;YAEjC,QAAQ,GAAG;AACR,gBAAA,KAAK,IAAI;AACN,oBAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AACf,wBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA,QAAA,CAAU,CAAC;oBACpC;yBAAO;AACJ,wBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,QAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;oBAC1D;oBACA;AACH,gBAAA,KAAK,KAAK;AACP,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACrB,MAAM,QAAQ,GAAa,EAAE;AAC7B,wBAAA,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AAClB,4BAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gCACf,MAAM,IAAI,WAAW,CAAC;AACnB,oCAAA,IAAI,EAAE,aAAa;AACnB,oCAAA,OAAO,EAAE,yBAAyB;AAClC,oCAAA,KAAK,EAAE,MAAM;AACb,oCAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACzB,iCAAA,CAAC;4BACL;AACA,4BAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAA+B,EAAE,KAAK,EAAE,OAAO,CAAC;4BACpF,IAAI,IAAI,EAAE;gCACP,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,gCAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,oCAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA,CAAA,CAAG,CAAC;gCAC7B;qCAAO;AACJ,oCAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gCACtB;4BACH;wBACH;AACA,wBAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AAClB,4BAAA,KAAK,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAA,CAAG,CAAC;wBAC/C;oBACH;AAAO,yBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,wBAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA,CAAA,CAAG,CAAC;oBACrE;AAAO,yBAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AACtB,wBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA,YAAA,CAAc,CAAC;oBACxC;yBAAO;AACJ,wBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;oBAC3D;oBACA;AAEH,gBAAA,KAAK,IAAI;AACN,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,QAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;oBACvD;AAEH,gBAAA,KAAK,KAAK;AACP,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;oBACxD;AAEH,gBAAA,KAAK,IAAI;AACN,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,QAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;oBACvD;AAEH,gBAAA,KAAK,KAAK;AACP,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;oBACxD;AAEH,gBAAA,KAAK,IAAI;AACN,oBAAA,IAAI,GAAG,YAAY,UAAU,EAAE;AAC5B,wBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK;wBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/E,wBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,CAAA,EAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;AAC9D,wBAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC;wBAElE,KAAK,CAAC,IAAI,CACP,CAAA;;AAES,4BAAA,EAAA,GAAG,CAAC,KAAK,CAAC,KAAK,OAAO,MAAM;AACjC,uBAAA,EAAA,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,OAAO,GAAG,QAAQ;yBAC1C,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,QAAQ;AAC9C,sBAAA,CAAA,CACJ;oBACJ;yBAAO,IAAI,GAAG,aAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,EAAE;AACrB,wBAAA,KAAK,CAAC,IAAI,CACP,CAAA,EAAG,QAAQ,CAAA,KAAA,EAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAC9E;oBACJ;oBACA;AAEH,gBAAA,KAAK,OAAO;AACT,oBAAA,IAAI,GAAG,YAAY,UAAU,EAAE;AAC5B,wBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK;wBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/E,wBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,CAAA,EAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;AAC9D,wBAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC;wBAClE,KAAK,CAAC,IAAI,CACP,CAAA;;AAES,4BAAA,EAAA,GAAG,CAAC,KAAK,CAAC,KAAK,OAAO,MAAM;AACjC,uBAAA,EAAA,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,OAAO,GAAG,QAAQ;yBAC1C,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,QAAQ;AAC9C,sBAAA,CAAA,CACJ;oBACJ;yBAAO,IAAI,GAAG,aAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,EAAE;AACrB,wBAAA,KAAK,CAAC,IAAI,CACP,CAAA,EAAG,QAAQ,CAAA,SAAA,EAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAClF;oBACJ;oBACA;AAEH,gBAAA,KAAK,SAAS;AACX,oBAAA,KAAK,CAAC,IAAI,CACP,CAAA,EAAG,QAAQ,CAAA,SAAA,EAAY,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CACzF;oBACD;AAEH,gBAAA,KAAK,UAAU;AACZ,oBAAA,IAAI,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,MAAA,EAAS,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,EAAE;AACvE,oBAAA,IAAK,OAAe,CAAC,IAAI,KAAK,aAAa,EAAE;AAC1C,wBAAA,IAAI,KAAK,KAAK,UAAU,EAAE;AACvB,4BAAA,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,EAAE;wBACvE;6BAAO;AACJ,4BAAA,IAAI,GAAG,CAAA,MAAA,EAAS,QAAQ,CAAA,aAAA,EAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,GAAG;wBACpF;oBACH;AACA,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAChB;AAEH,gBAAA,KAAK,YAAY;AACd,oBAAA,IAAI,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,MAAA,EAAS,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,EAAE;AACtE,oBAAA,IAAK,OAAe,CAAC,IAAI,KAAK,aAAa,EAAE;AAC1C,wBAAA,IAAI,KAAK,KAAK,UAAU,EAAE;AACvB,4BAAA,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,EAAE;wBACtE;6BAAO;AACJ,4BAAA,IAAI,GAAG,CAAA,MAAA,EAAS,QAAQ,CAAA,aAAA,EAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,GAAG;wBACnF;oBACH;AACA,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAChB;AAEH,gBAAA,KAAK,UAAU;AACZ,oBAAA,IAAI,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,MAAA,EAAS,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC,EAAE;AACtE,oBAAA,IAAK,OAAe,CAAC,IAAI,KAAK,aAAa,EAAE;AAC1C,wBAAA,IAAI,KAAK,KAAK,UAAU,EAAE;AACvB,4BAAA,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC,EAAE;wBACtE;6BAAO;AACJ,4BAAA,IAAI,GAAG,CAAA,MAAA,EAAS,QAAQ,CAAA,aAAA,EAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC,GAAG;wBACnF;oBACH;AACA,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAChB;;QAET;AAEA,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B;AAEQ,IAAA,MAAM,CAAC,MAAc,EAAE,KAAU,EAAE,KAAK,GAAG,IAAI,EAAA;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAE5B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;YAChC,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC7C,gBAAA,OAAO,KAAK;YACf;iBAAO;gBACJ,MAAM,IAAI,WAAW,CAAC;AACnB,oBAAA,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,CAAA,kCAAA,EAAqC,MAAM,CAAA,YAAA,EAAe,KAAK,CAAC,KAAK,CAAA,uCAAA,EAA0C,OAAO,KAAK,CAAA,CAAA,CAAG;oBACvI,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,oBAAA,KAAK,EAAE;AACT,iBAAA,CAAC;YACL;QACH;QAEA,IAAI,KAAK,EAAE;AACR,YAAA,IAAI;AACD,gBAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7B;YAAE,OAAO,KAAU,EAAE;gBAClB,MAAM,IAAI,WAAW,CAAC;AACnB,oBAAA,IAAI,EAAE,kBAAkB;oBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,GAAG,EAAE,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;oBACzB,OAAO,EAAE,KAAK,CAAC;AACjB,iBAAA,CAAC;YACL;QACH;AAEA,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACxB,YAAA,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG;QACpC;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC5B,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,CAAA,CAAG;QAC1C;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC7B,OAAO,KAAK,GAAG,MAAM,GAAG,OAAO;QAClC;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,MAAM;QAChB;AAEA,QAAA,OAAO,KAAK;IACf;AAEF;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/model/Build/WhereArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { isObject } from \"../../../utils\";\nimport { RelationManyInfo } from \"../../../xt/fields/RelationMany\";\nimport ModelWhere from \"../../ModelWhere\";\nimport { SchemaShape, WhereArgs, WhereSubConditionArgs } from \"../../types\";\n\ntype Aliases = {\n [table: string]: number\n}\n\nconst sub_keys = [\"is\", \"not\", \"lt\", \"lte\", \"gt\", \"gte\", \"in\", \"notIn\", \"between\", \"contains\", \"startsWith\", \"endsWith\"]\n\nclass BuildWhereArgs<S extends SchemaShape, M extends Model<any>> {\n readonly parts: string[];\n private model: M\n\n get sql() {\n if (!this.parts.length) return \"\";\n return `WHERE ${this.parts.join(\" AND \")}`;\n }\n\n constructor(args: WhereArgs<S>, model: M, aliases: Aliases = {}) {\n this.model = model\n const schema = model.schema();\n const parts: string[] = [];\n aliases[model.table] = model.table in aliases && aliases[model.table] > 0 ? aliases[model.table] : 0\n const alias = `${model.alias}${aliases[model.table] || \"\"}`\n\n if (Array.isArray(args)) {\n const _parts = []\n for (const arg of args) {\n const _aliases = { ...aliases }\n _aliases[model.table] = aliases[model.table] - 1\n\n const w_parts = new BuildWhereArgs(arg, model, _aliases).parts\n if (w_parts.length) {\n if (w_parts.length > 1) {\n _parts.push(`(${w_parts.join(\" AND \")})`)\n } else {\n _parts.push(w_parts.join(\" AND \"))\n }\n }\n }\n if (_parts.length) {\n parts.push(_parts.join(\" OR \"))\n }\n } else {\n for (const col in args) {\n const val = args[col];\n\n if (col === \"AND\") {\n const andparts = []\n const _aliases = { ...aliases }\n _aliases[model.table] = aliases[model.table] - 1\n\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, _aliases)\n andparts.push(b.parts.join(\" AND \"))\n }\n if (andparts.length) {\n if (andparts.length > 1) {\n parts.push(`(${andparts.join(\" AND \")})`)\n } else {\n parts.push(andparts.join(\" AND \"))\n }\n }\n continue\n }\n\n if (col === \"OR\") {\n const _aliases = { ...aliases }\n _aliases[model.table] = aliases[model.table] - 1\n\n const orparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, _aliases)\n orparts.push(b.parts.join(\" AND \"))\n }\n if (orparts.length) {\n if (orparts.length > 1) {\n parts.push(`(${orparts.join(\" OR \")})`)\n } else {\n parts.push(orparts.join(\" OR \"))\n }\n }\n continue\n }\n\n if (col === \"NOT\") {\n const _aliases = { ...aliases }\n _aliases[model.table] = aliases[model.table] - 1\n\n const notparts = []\n for (let aargs of val as any[]) {\n if (!Object.keys(aargs).length) {\n continue\n }\n const b = new BuildWhereArgs(aargs, model, _aliases)\n notparts.push(b.parts.join(\" AND \"))\n }\n if (notparts.length) {\n parts.push(`NOT (${notparts.join(\" AND \")})`)\n }\n continue\n }\n\n if (!(col in schema)) {\n throw new XansqlError({\n code: \"NOT_FOUND\",\n model: model.table,\n field: col,\n message: `Unknown column ${col} in ${model.table}`,\n });\n }\n\n const field = schema[col];\n if (field.isRelation) {\n const br = this.buildRelation(field, col, val, alias, aliases)\n br && parts.push(br)\n } else {\n // Array of subconditions → OR\n if (Array.isArray(val)) {\n const subParts: string[] = [];\n for (const subargs of val as any) {\n if (!isObject(subargs)) {\n throw new XansqlError({\n message: \"Invalid argument\",\n code: \"VALIDATION_ERROR\",\n model: model.table,\n field: col,\n params: subargs\n })\n }\n const cond = this.condition(col, subargs, alias, aliases);\n if (cond) {\n const keys = Object.keys(subargs);\n if (keys.length > 1) {\n subParts.push(`(${cond})`);\n } else {\n subParts.push(cond);\n }\n }\n }\n\n if (subParts.length) {\n const keys = Object.keys(val);\n if (keys.length > 1) {\n parts.push(`(${subParts.join(\" OR \")})`);\n } else {\n parts.push(`${subParts.join(\" OR \")}`);\n }\n }\n } else if (isObject(val)) {\n const cond = this.condition(col, val, alias, aliases);\n if (cond) {\n const keys = Object.keys(val);\n if (keys.length > 1) {\n parts.push(`(${cond})`);\n } else {\n parts.push(cond);\n }\n }\n } else {\n parts.push(`${alias}.${col}=${this.format(col, val)}`);\n }\n }\n }\n }\n aliases[model.table] = aliases[model.table] + 1\n this.parts = parts;\n }\n\n\n private buildRelation(field: any, col: string, val: any, alias: string, aliases: Aliases) {\n const model = this.model\n const xansql = model.xansql\n const relArgs = val as WhereArgs<any>;\n const RModel = xansql.model(field.model);\n const parts: string[] = [];\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const rinfo = field.relationInfo as RelationManyInfo\n const relationSql = `${alias}.${rinfo.self.relation}=${ralias}.${rinfo.target.relation}`\n\n if (Array.isArray(relArgs)) {\n const _parts = []\n for (const rargs of relArgs) {\n if (!isObject(rargs)) { }\n const b = this.buildRelation(field, col, rargs, alias, aliases)\n _parts.push(`(${b})`)\n }\n if (_parts.length) {\n parts.push(_parts.join(\" OR \"))\n }\n } else {\n const _sparts: string[] = []\n let _args: { [col: string]: any } = {}\n if (field.type === \"relation-one\") {\n if (relArgs === null) {\n parts.push(`${alias}.${col} IS NULL`);\n } else if (typeof relArgs === \"number\") {\n parts.push(`${alias}.${col}=${this.format(col, val)}`);\n } else {\n const _subargs: { [col: string]: any } = {}\n for (let col in relArgs) {\n const val = relArgs[col]\n if (sub_keys.includes(col)) {\n _subargs[col] = val\n } else {\n _args[col] = val\n }\n }\n\n if (Object.keys(_subargs).length) {\n const cond = this.condition(col, _subargs, alias, aliases);\n if (cond) {\n _sparts.push(cond)\n }\n }\n }\n } else {\n _args = relArgs\n }\n\n if (Object.keys(_args).length) {\n const relWhere = new BuildWhereArgs(_args, RModel, aliases);\n const relSql = relWhere.parts.join(\" AND \");\n _sparts.push(\n `EXISTS (SELECT 1 FROM ${RModel.table} as ${ralias} WHERE ${relationSql}${relSql ? ` AND ${relSql}` : \"\"})`\n );\n }\n if (_sparts.length) {\n parts.push(_sparts.join(\" AND \"))\n }\n }\n\n return parts.join(\" AND \")\n }\n\n private condition(column: string, subargs: WhereSubConditionArgs<any>, alias: string, aliases: Aliases) {\n const parts: string[] = [];\n const col_name = `${alias}.${column}`\n const model = this.model\n const engin = model.xansql.dialect.engine\n\n for (const key in subargs) {\n const val = (subargs as any)[key];\n\n switch (key) {\n case \"is\":\n if (val === null) {\n parts.push(`${col_name} IS NULL`);\n } else {\n parts.push(`${col_name} = ${this.format(column, val)}`);\n }\n break;\n case \"not\":\n if (Array.isArray(val)) {\n const notParts: string[] = [];\n for (const v of val) {\n if (!isObject(v)) {\n throw new XansqlError({\n code: \"QUERY_ERROR\",\n message: \"Invalid where condition\",\n field: column,\n model: this.model.table,\n })\n }\n const cond = this.condition(column, v as WhereSubConditionArgs<any>, alias, aliases);\n if (cond) {\n const keys = Object.keys(v);\n if (keys.length > 1) {\n notParts.push(`(${cond})`)\n } else {\n notParts.push(cond)\n }\n }\n }\n if (notParts.length) {\n parts.push(`NOT (${notParts.join(\" OR \")})`);\n }\n } else if (isObject(val)) {\n parts.push(`NOT (${this.condition(column, val, alias, aliases)})`);\n } else if (val === null) {\n parts.push(`${col_name} IS NOT NULL`)\n } else {\n parts.push(`${col_name} != ${this.format(column, val)}`);\n }\n break;\n\n case \"lt\":\n parts.push(`${col_name} < ${this.format(column, val)}`);\n break;\n\n case \"lte\":\n parts.push(`${col_name} <= ${this.format(column, val)}`);\n break;\n\n case \"gt\":\n parts.push(`${col_name} > ${this.format(column, val)}`);\n break;\n\n case \"gte\":\n parts.push(`${col_name} >= ${this.format(column, val)}`);\n break;\n\n case \"in\":\n if (val instanceof ModelWhere) {\n const RModel = val.model\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const wargs = new BuildWhereArgs(val.where || {}, RModel, aliases)\n\n parts.push(\n `EXISTS (\n SELECT 1\n FROM ${val.model.table} AS ${ralias}\n ${wargs.sql ? wargs.sql + \" AND \" : \"WHERE \"}\n ${ralias}.${String(val.inColumn)} = ${col_name}\n )`\n );\n } else if (val?.length) {\n parts.push(\n `${col_name} IN (${val.map((v: any) => this.format(column, v)).join(\", \")})`\n );\n }\n break;\n\n case \"notIn\":\n if (val instanceof ModelWhere) {\n const RModel = val.model\n aliases[RModel.table] = RModel.table in aliases ? aliases[RModel.table] + 1 : 0\n const ralias = `${RModel.alias}${aliases[RModel.table] || \"\"}`\n const wargs = new BuildWhereArgs(val.where || {}, RModel, aliases)\n parts.push(\n `NOT EXISTS (\n SELECT 1\n FROM ${val.model.table} AS ${ralias}\n ${wargs.sql ? wargs.sql + \" AND \" : \"WHERE \"}\n ${ralias}.${String(val.inColumn)} = ${col_name}\n )`\n );\n } else if (val?.length) {\n parts.push(\n `${col_name} NOT IN (${val.map((v: any) => this.format(column, v)).join(\", \")})`\n );\n }\n break;\n\n case \"between\":\n parts.push(\n `${col_name} BETWEEN ${this.format(column, val[0])} AND ${this.format(column, val[1])}`\n );\n break;\n\n case \"contains\":\n let csql = `${col_name} LIKE ${this.format(column, `%${val}%`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n csql = `${col_name} ILIKE ${this.format(column, `%${val}%`, false)}`\n } else {\n csql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `%${val}%`, false)})`\n }\n }\n parts.push(csql);\n break;\n\n case \"startsWith\":\n let ssql = `${col_name} LIKE ${this.format(column, `${val}%`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n ssql = `${col_name} ILIKE ${this.format(column, `${val}%`, false)}`\n } else {\n ssql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `${val}%`, false)})`\n }\n }\n parts.push(ssql);\n break;\n\n case \"endsWith\":\n let esql = `${col_name} LIKE ${this.format(column, `%${val}`, false)}`\n if ((subargs as any).mode === \"insensitive\") {\n if (engin === \"postgres\") {\n esql = `${col_name} ILIKE ${this.format(column, `%${val}`, false)}`\n } else {\n esql = `LOWER(${col_name}) LIKE LOWER(${this.format(column, `%${val}`, false)})`\n }\n }\n parts.push(esql);\n break;\n }\n }\n\n return parts.join(\" AND \");\n }\n\n private format(column: string, value: any, parse = true) {\n const model = this.model;\n const schema = model.schema()\n const field = schema[column];\n\n if (field.type === 'relation-one') {\n if (typeof value == \"number\" || value === null) {\n return value\n } else {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n message: `Invalid value for relation field \"${column}\" in table \"${model.table}\". Expected a number or null, received ${typeof value}.`,\n model: model.table,\n field: column\n })\n }\n }\n\n if (parse) {\n try {\n value = field.parse(value)\n } catch (error: any) {\n throw new XansqlError({\n code: \"VALIDATION_ERROR\",\n model: model.table,\n field: column,\n sql: `${column}=${value}`,\n message: error.message\n });\n }\n }\n\n if (value instanceof Date) {\n return `'${value.toISOString()}'`;\n }\n\n if (typeof value === \"string\") {\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"TRUE\" : \"FALSE\";\n }\n\n if (value === null) {\n return \"NULL\";\n }\n\n return value;\n }\n\n}\n\nexport default BuildWhereArgs;\n"],"names":[],"mappings":"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"}
|