xansql 1.1.13 → 1.1.14
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/model/Build/DeleteArgs/index.cjs +1 -1
- package/model/Build/DeleteArgs/index.cjs.map +1 -1
- package/model/Build/DeleteArgs/index.js +1 -1
- package/model/Build/DeleteArgs/index.js.map +1 -1
- package/model/Build/UpdateArgs/index.cjs +1 -2
- package/model/Build/UpdateArgs/index.cjs.map +1 -1
- package/model/Build/UpdateArgs/index.js +1 -2
- package/model/Build/UpdateArgs/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -138,7 +138,7 @@ class BuildDeleteArgs {
|
|
|
138
138
|
for (let col in frow) {
|
|
139
139
|
const field = schema[col];
|
|
140
140
|
if (index$3.iof(field, File)) {
|
|
141
|
-
const fileMeta =
|
|
141
|
+
const fileMeta = frow[col];
|
|
142
142
|
if (fileMeta) {
|
|
143
143
|
await xansql.deleteFile(fileMeta.fileId);
|
|
144
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/DeleteArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport { iof } from \"../../../utils\";\nimport { chunkArray } from \"../../../utils/chunker\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport { DeleteArgs, SchemaShape } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\nimport BuildSelectArgs from \"../SelectArgs\";\nimport BuildUpdateArgs from \"../UpdateArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildDeleteArgs {\n constructor(private args: DeleteArgs<SchemaShape>, private model: Model<SchemaShape>, private isSubquery = false) {\n\n }\n\n async results() {\n const model = this.model\n const args = this.args\n const isSubquery = this.isSubquery\n const schema = model.schema()\n const xansql = model.xansql\n const models = xansql.models\n\n for (let m of Array.from(models.values())) {\n const mschema = m.schema()\n for (let col in mschema) {\n const field = mschema[col] as any\n\n if (field.type === \"relation-one\" && field.model == model.constructor) {\n const isNullable = field.meta.nullable\n const isSameModel = m.table === model.table\n\n let ids: number[] = []\n if (isSameModel) {\n const fargs = new BuildFindArgs({\n select: {\n [m.IDColumn]: true,\n [col]: {\n select: {\n [m.IDColumn]: true,\n }\n }\n },\n where: args.where,\n debug: false\n }, m)\n const res = await fargs.results()\n if (res?.length) {\n for (let r of res) {\n if (r[col] && r[col][m.IDColumn]) {\n ids.push(r[col][m.IDColumn])\n }\n }\n }\n }\n if (isNullable) {\n if (isSameModel) {\n if (ids?.length) {\n for (let { chunk } of chunkArray(ids)) {\n const build = new BuildUpdateArgs({\n data: {\n [col]: null\n },\n where: {\n [model.IDColumn]: {\n in: chunk\n }\n },\n debug: args.debug\n }, m)\n await build.results()\n }\n }\n } else {\n const build = new BuildUpdateArgs({\n data: {\n [col]: null\n },\n where: {\n [col]: args.where\n },\n debug: args.debug\n }, m)\n await build.results()\n }\n } else {\n if (isSameModel) {\n if (ids.length) {\n for (let { chunk } of chunkArray(ids)) {\n const build = new BuildDeleteArgs({\n where: {\n [model.IDColumn]: {\n in: chunk\n }\n },\n debug: args.debug\n }, m, true)\n\n await build.results()\n }\n }\n } else {\n const build = new BuildDeleteArgs({\n where: {\n [col]: args.where\n },\n debug: args.debug\n }, m, true)\n await build.results()\n }\n }\n }\n }\n }\n\n\n const wargs = new BuildWhereArgs(args.where, model)\n const _select: any = {}\n for (let col in schema) {\n const field = schema[col] as any\n if (iof(field, XqlFile)) {\n _select[col] = true\n }\n }\n\n const fargs = new BuildFindArgs({\n select: {\n [model.IDColumn]: true,\n ..._select\n },\n where: args.where,\n debug: false\n }, model)\n const fileRows = await fargs.results()\n\n let results\n if (!isSubquery) {\n const build = new BuildFindArgs(args, model)\n results = await build.results()\n }\n\n const sql = `DELETE FROM ${model.table} as ${model.alias} ${wargs.sql}`.trim()\n const execute = await model.execute(sql, args.debug)\n\n if (execute.affectedRows && fileRows?.length) {\n for (let { chunk } of chunkArray(fileRows)) {\n for (let frow of chunk) {\n for (let col in frow) {\n const field = schema[col]\n if (iof(field, XqlFile)) {\n const fileMeta: XansqlFileMeta = field.value.fromSql(frow[col]) as any\n if (fileMeta) {\n await xansql.deleteFile(fileMeta.fileId)\n }\n }\n }\n }\n }\n }\n\n return results\n }\n}\n\nexport default BuildDeleteArgs"],"names":["BuildFindArgs","chunkArray","BuildUpdateArgs","BuildWhereArgs","iof","XqlFile"],"mappings":";;;;;;;;;AAWA,MAAM,eAAe,CAAA;AAClB,IAAA,WAAA,CAAoB,IAA6B,EAAU,KAAyB,EAAU,aAAa,KAAK,EAAA;QAA5F,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAmC,IAAA,CAAA,KAAK,GAAL,KAAK;QAA8B,IAAA,CAAA,UAAU,GAAV,UAAU;IAExG;AAEA,IAAA,MAAM,OAAO,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAE5B,QAAA,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;AACxC,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE;AAC1B,YAAA,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAQ;AAEjC,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE;AACpE,oBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ;oBACtC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;oBAE3C,IAAI,GAAG,GAAa,EAAE;oBACtB,IAAI,WAAW,EAAE;AACd,wBAAA,MAAM,KAAK,GAAG,IAAIA,KAAa,CAAC;AAC7B,4BAAA,MAAM,EAAE;AACL,gCAAA,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI;gCAClB,CAAC,GAAG,GAAG;AACJ,oCAAA,MAAM,EAAE;AACL,wCAAA,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI;AACpB;AACH;AACH,6BAAA;4BACD,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,4BAAA,KAAK,EAAE;yBACT,EAAE,CAAC,CAAC;AACL,wBAAA,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;wBACjC,IAAI,GAAG,aAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,EAAE;AACd,4BAAA,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE;AAChB,gCAAA,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC/B,oCAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gCAC/B;4BACH;wBACH;oBACH;oBACA,IAAI,UAAU,EAAE;wBACb,IAAI,WAAW,EAAE;4BACd,IAAI,GAAG,aAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,EAAE;gCACd,KAAK,IAAI,EAAE,KAAK,EAAE,IAAIC,kBAAU,CAAC,GAAG,CAAC,EAAE;AACpC,oCAAA,MAAM,KAAK,GAAG,IAAIC,OAAe,CAAC;AAC/B,wCAAA,IAAI,EAAE;4CACH,CAAC,GAAG,GAAG;AACT,yCAAA;AACD,wCAAA,KAAK,EAAE;AACJ,4CAAA,CAAC,KAAK,CAAC,QAAQ,GAAG;AACf,gDAAA,EAAE,EAAE;AACN;AACH,yCAAA;wCACD,KAAK,EAAE,IAAI,CAAC;qCACd,EAAE,CAAC,CAAC;AACL,oCAAA,MAAM,KAAK,CAAC,OAAO,EAAE;gCACxB;4BACH;wBACH;6BAAO;AACJ,4BAAA,MAAM,KAAK,GAAG,IAAIA,OAAe,CAAC;AAC/B,gCAAA,IAAI,EAAE;oCACH,CAAC,GAAG,GAAG;AACT,iCAAA;AACD,gCAAA,KAAK,EAAE;AACJ,oCAAA,CAAC,GAAG,GAAG,IAAI,CAAC;AACd,iCAAA;gCACD,KAAK,EAAE,IAAI,CAAC;6BACd,EAAE,CAAC,CAAC;AACL,4BAAA,MAAM,KAAK,CAAC,OAAO,EAAE;wBACxB;oBACH;yBAAO;wBACJ,IAAI,WAAW,EAAE;AACd,4BAAA,IAAI,GAAG,CAAC,MAAM,EAAE;gCACb,KAAK,IAAI,EAAE,KAAK,EAAE,IAAID,kBAAU,CAAC,GAAG,CAAC,EAAE;AACpC,oCAAA,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC;AAC/B,wCAAA,KAAK,EAAE;AACJ,4CAAA,CAAC,KAAK,CAAC,QAAQ,GAAG;AACf,gDAAA,EAAE,EAAE;AACN;AACH,yCAAA;wCACD,KAAK,EAAE,IAAI,CAAC;AACd,qCAAA,EAAE,CAAC,EAAE,IAAI,CAAC;AAEX,oCAAA,MAAM,KAAK,CAAC,OAAO,EAAE;gCACxB;4BACH;wBACH;6BAAO;AACJ,4BAAA,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC;AAC/B,gCAAA,KAAK,EAAE;AACJ,oCAAA,CAAC,GAAG,GAAG,IAAI,CAAC;AACd,iCAAA;gCACD,KAAK,EAAE,IAAI,CAAC;AACd,6BAAA,EAAE,CAAC,EAAE,IAAI,CAAC;AACX,4BAAA,MAAM,KAAK,CAAC,OAAO,EAAE;wBACxB;oBACH;gBACH;YACH;QACH;QAGA,MAAM,KAAK,GAAG,IAAIE,OAAc,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QACnD,MAAM,OAAO,GAAQ,EAAE;AACvB,QAAA,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAQ;AAChC,YAAA,IAAIC,WAAG,CAAC,KAAK,EAAEC,IAAO,CAAC,EAAE;AACtB,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;YACtB;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,IAAIL,KAAa,CAAC;YAC7B,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACH,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,EAAA,EACnB,OAAO,CACZ;YACD,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,KAAK,EAAE;SACT,EAAE,KAAK,CAAC;AACT,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;AAEtC,QAAA,IAAI,OAAO;QACX,IAAI,CAAC,UAAU,EAAE;YACd,MAAM,KAAK,GAAG,IAAIA,KAAa,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5C,YAAA,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;QAClC;AAEA,QAAA,MAAM,GAAG,GAAG,CAAA,YAAA,EAAe,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;AAC9E,QAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;AAEpD,QAAA,IAAI,OAAO,CAAC,YAAY,KAAI,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,MAAM,CAAA,EAAE;YAC3C,KAAK,IAAI,EAAE,KAAK,EAAE,IAAIC,kBAAU,CAAC,QAAQ,CAAC,EAAE;AACzC,gBAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACrB,oBAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACnB,wBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,wBAAA,IAAIG,WAAG,CAAC,KAAK,EAAEC,IAAO,CAAC,EAAE;AACtB,4BAAA,MAAM,QAAQ,GAAmB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAQ;4BACtE,IAAI,QAAQ,EAAE;gCACX,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;4BAC3C;wBACH;oBACH;gBACH;YACH;QACH;AAEA,QAAA,OAAO,OAAO;IACjB;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/DeleteArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport { iof } from \"../../../utils\";\nimport { chunkArray } from \"../../../utils/chunker\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport { DeleteArgs, SchemaShape } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\nimport BuildSelectArgs from \"../SelectArgs\";\nimport BuildUpdateArgs from \"../UpdateArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildDeleteArgs {\n constructor(private args: DeleteArgs<SchemaShape>, private model: Model<SchemaShape>, private isSubquery = false) {\n\n }\n\n async results() {\n const model = this.model\n const args = this.args\n const isSubquery = this.isSubquery\n const schema = model.schema()\n const xansql = model.xansql\n const models = xansql.models\n\n for (let m of Array.from(models.values())) {\n const mschema = m.schema()\n for (let col in mschema) {\n const field = mschema[col] as any\n\n if (field.type === \"relation-one\" && field.model == model.constructor) {\n const isNullable = field.meta.nullable\n const isSameModel = m.table === model.table\n\n let ids: number[] = []\n if (isSameModel) {\n const fargs = new BuildFindArgs({\n select: {\n [m.IDColumn]: true,\n [col]: {\n select: {\n [m.IDColumn]: true,\n }\n }\n },\n where: args.where,\n debug: false\n }, m)\n const res = await fargs.results()\n if (res?.length) {\n for (let r of res) {\n if (r[col] && r[col][m.IDColumn]) {\n ids.push(r[col][m.IDColumn])\n }\n }\n }\n }\n if (isNullable) {\n if (isSameModel) {\n if (ids?.length) {\n for (let { chunk } of chunkArray(ids)) {\n const build = new BuildUpdateArgs({\n data: {\n [col]: null\n },\n where: {\n [model.IDColumn]: {\n in: chunk\n }\n },\n debug: args.debug\n }, m)\n await build.results()\n }\n }\n } else {\n const build = new BuildUpdateArgs({\n data: {\n [col]: null\n },\n where: {\n [col]: args.where\n },\n debug: args.debug\n }, m)\n await build.results()\n }\n } else {\n if (isSameModel) {\n if (ids.length) {\n for (let { chunk } of chunkArray(ids)) {\n const build = new BuildDeleteArgs({\n where: {\n [model.IDColumn]: {\n in: chunk\n }\n },\n debug: args.debug\n }, m, true)\n\n await build.results()\n }\n }\n } else {\n const build = new BuildDeleteArgs({\n where: {\n [col]: args.where\n },\n debug: args.debug\n }, m, true)\n await build.results()\n }\n }\n }\n }\n }\n\n\n const wargs = new BuildWhereArgs(args.where, model)\n const _select: any = {}\n for (let col in schema) {\n const field = schema[col] as any\n if (iof(field, XqlFile)) {\n _select[col] = true\n }\n }\n\n const fargs = new BuildFindArgs({\n select: {\n [model.IDColumn]: true,\n ..._select\n },\n where: args.where,\n debug: false\n }, model)\n const fileRows = await fargs.results()\n\n let results\n if (!isSubquery) {\n const build = new BuildFindArgs(args, model)\n results = await build.results()\n }\n\n const sql = `DELETE FROM ${model.table} as ${model.alias} ${wargs.sql}`.trim()\n const execute = await model.execute(sql, args.debug)\n\n if (execute.affectedRows && fileRows?.length) {\n for (let { chunk } of chunkArray(fileRows)) {\n for (let frow of chunk) {\n for (let col in frow) {\n const field = schema[col]\n if (iof(field, XqlFile)) {\n const fileMeta = frow[col]\n if (fileMeta) {\n await xansql.deleteFile(fileMeta.fileId)\n }\n }\n }\n }\n }\n }\n\n return results\n }\n}\n\nexport default BuildDeleteArgs"],"names":["BuildFindArgs","chunkArray","BuildUpdateArgs","BuildWhereArgs","iof","XqlFile"],"mappings":"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"}
|
|
@@ -136,7 +136,7 @@ class BuildDeleteArgs {
|
|
|
136
136
|
for (let col in frow) {
|
|
137
137
|
const field = schema[col];
|
|
138
138
|
if (iof(field, XqlFile)) {
|
|
139
|
-
const fileMeta =
|
|
139
|
+
const fileMeta = frow[col];
|
|
140
140
|
if (fileMeta) {
|
|
141
141
|
await xansql.deleteFile(fileMeta.fileId);
|
|
142
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/model/Build/DeleteArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport { iof } from \"../../../utils\";\nimport { chunkArray } from \"../../../utils/chunker\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport { DeleteArgs, SchemaShape } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\nimport BuildSelectArgs from \"../SelectArgs\";\nimport BuildUpdateArgs from \"../UpdateArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildDeleteArgs {\n constructor(private args: DeleteArgs<SchemaShape>, private model: Model<SchemaShape>, private isSubquery = false) {\n\n }\n\n async results() {\n const model = this.model\n const args = this.args\n const isSubquery = this.isSubquery\n const schema = model.schema()\n const xansql = model.xansql\n const models = xansql.models\n\n for (let m of Array.from(models.values())) {\n const mschema = m.schema()\n for (let col in mschema) {\n const field = mschema[col] as any\n\n if (field.type === \"relation-one\" && field.model == model.constructor) {\n const isNullable = field.meta.nullable\n const isSameModel = m.table === model.table\n\n let ids: number[] = []\n if (isSameModel) {\n const fargs = new BuildFindArgs({\n select: {\n [m.IDColumn]: true,\n [col]: {\n select: {\n [m.IDColumn]: true,\n }\n }\n },\n where: args.where,\n debug: false\n }, m)\n const res = await fargs.results()\n if (res?.length) {\n for (let r of res) {\n if (r[col] && r[col][m.IDColumn]) {\n ids.push(r[col][m.IDColumn])\n }\n }\n }\n }\n if (isNullable) {\n if (isSameModel) {\n if (ids?.length) {\n for (let { chunk } of chunkArray(ids)) {\n const build = new BuildUpdateArgs({\n data: {\n [col]: null\n },\n where: {\n [model.IDColumn]: {\n in: chunk\n }\n },\n debug: args.debug\n }, m)\n await build.results()\n }\n }\n } else {\n const build = new BuildUpdateArgs({\n data: {\n [col]: null\n },\n where: {\n [col]: args.where\n },\n debug: args.debug\n }, m)\n await build.results()\n }\n } else {\n if (isSameModel) {\n if (ids.length) {\n for (let { chunk } of chunkArray(ids)) {\n const build = new BuildDeleteArgs({\n where: {\n [model.IDColumn]: {\n in: chunk\n }\n },\n debug: args.debug\n }, m, true)\n\n await build.results()\n }\n }\n } else {\n const build = new BuildDeleteArgs({\n where: {\n [col]: args.where\n },\n debug: args.debug\n }, m, true)\n await build.results()\n }\n }\n }\n }\n }\n\n\n const wargs = new BuildWhereArgs(args.where, model)\n const _select: any = {}\n for (let col in schema) {\n const field = schema[col] as any\n if (iof(field, XqlFile)) {\n _select[col] = true\n }\n }\n\n const fargs = new BuildFindArgs({\n select: {\n [model.IDColumn]: true,\n ..._select\n },\n where: args.where,\n debug: false\n }, model)\n const fileRows = await fargs.results()\n\n let results\n if (!isSubquery) {\n const build = new BuildFindArgs(args, model)\n results = await build.results()\n }\n\n const sql = `DELETE FROM ${model.table} as ${model.alias} ${wargs.sql}`.trim()\n const execute = await model.execute(sql, args.debug)\n\n if (execute.affectedRows && fileRows?.length) {\n for (let { chunk } of chunkArray(fileRows)) {\n for (let frow of chunk) {\n for (let col in frow) {\n const field = schema[col]\n if (iof(field, XqlFile)) {\n const fileMeta: XansqlFileMeta = field.value.fromSql(frow[col]) as any\n if (fileMeta) {\n await xansql.deleteFile(fileMeta.fileId)\n }\n }\n }\n }\n }\n }\n\n return results\n }\n}\n\nexport default BuildDeleteArgs"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/model/Build/DeleteArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport { iof } from \"../../../utils\";\nimport { chunkArray } from \"../../../utils/chunker\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport { DeleteArgs, SchemaShape } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\nimport BuildSelectArgs from \"../SelectArgs\";\nimport BuildUpdateArgs from \"../UpdateArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildDeleteArgs {\n constructor(private args: DeleteArgs<SchemaShape>, private model: Model<SchemaShape>, private isSubquery = false) {\n\n }\n\n async results() {\n const model = this.model\n const args = this.args\n const isSubquery = this.isSubquery\n const schema = model.schema()\n const xansql = model.xansql\n const models = xansql.models\n\n for (let m of Array.from(models.values())) {\n const mschema = m.schema()\n for (let col in mschema) {\n const field = mschema[col] as any\n\n if (field.type === \"relation-one\" && field.model == model.constructor) {\n const isNullable = field.meta.nullable\n const isSameModel = m.table === model.table\n\n let ids: number[] = []\n if (isSameModel) {\n const fargs = new BuildFindArgs({\n select: {\n [m.IDColumn]: true,\n [col]: {\n select: {\n [m.IDColumn]: true,\n }\n }\n },\n where: args.where,\n debug: false\n }, m)\n const res = await fargs.results()\n if (res?.length) {\n for (let r of res) {\n if (r[col] && r[col][m.IDColumn]) {\n ids.push(r[col][m.IDColumn])\n }\n }\n }\n }\n if (isNullable) {\n if (isSameModel) {\n if (ids?.length) {\n for (let { chunk } of chunkArray(ids)) {\n const build = new BuildUpdateArgs({\n data: {\n [col]: null\n },\n where: {\n [model.IDColumn]: {\n in: chunk\n }\n },\n debug: args.debug\n }, m)\n await build.results()\n }\n }\n } else {\n const build = new BuildUpdateArgs({\n data: {\n [col]: null\n },\n where: {\n [col]: args.where\n },\n debug: args.debug\n }, m)\n await build.results()\n }\n } else {\n if (isSameModel) {\n if (ids.length) {\n for (let { chunk } of chunkArray(ids)) {\n const build = new BuildDeleteArgs({\n where: {\n [model.IDColumn]: {\n in: chunk\n }\n },\n debug: args.debug\n }, m, true)\n\n await build.results()\n }\n }\n } else {\n const build = new BuildDeleteArgs({\n where: {\n [col]: args.where\n },\n debug: args.debug\n }, m, true)\n await build.results()\n }\n }\n }\n }\n }\n\n\n const wargs = new BuildWhereArgs(args.where, model)\n const _select: any = {}\n for (let col in schema) {\n const field = schema[col] as any\n if (iof(field, XqlFile)) {\n _select[col] = true\n }\n }\n\n const fargs = new BuildFindArgs({\n select: {\n [model.IDColumn]: true,\n ..._select\n },\n where: args.where,\n debug: false\n }, model)\n const fileRows = await fargs.results()\n\n let results\n if (!isSubquery) {\n const build = new BuildFindArgs(args, model)\n results = await build.results()\n }\n\n const sql = `DELETE FROM ${model.table} as ${model.alias} ${wargs.sql}`.trim()\n const execute = await model.execute(sql, args.debug)\n\n if (execute.affectedRows && fileRows?.length) {\n for (let { chunk } of chunkArray(fileRows)) {\n for (let frow of chunk) {\n for (let col in frow) {\n const field = schema[col]\n if (iof(field, XqlFile)) {\n const fileMeta = frow[col]\n if (fileMeta) {\n await xansql.deleteFile(fileMeta.fileId)\n }\n }\n }\n }\n }\n }\n\n return results\n }\n}\n\nexport default BuildDeleteArgs"],"names":[],"mappings":"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"}
|
|
@@ -105,8 +105,7 @@ class BuildUpdateArgs {
|
|
|
105
105
|
if (oldFileResults) {
|
|
106
106
|
for (let row of oldFileResults) {
|
|
107
107
|
for (let col in fileMetas) {
|
|
108
|
-
const
|
|
109
|
-
const meta = field.value.fromSql(row[col]);
|
|
108
|
+
const meta = row[col];
|
|
110
109
|
if (meta) {
|
|
111
110
|
await xansql.deleteFile(meta.fileId);
|
|
112
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/UpdateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { iof, isNumber, isObject, quote } from \"../../../utils\";\nimport XqlDate from \"../../../xt/fields/Date\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport { SchemaShape, SelectArgs, UpdateArgs } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildUpdateArgs {\n\n constructor(private args: UpdateArgs<SchemaShape>, private model: Model<any>, private isSubquery = false) {\n this.validateData(args.data)\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 const wargs = new BuildWhereArgs(args.where, model)\n const values: string[] = []\n const relations: { [col: string]: UpdateArgs<any>['data'] } = {}\n const fileMetas: { [col: string]: XansqlFileMeta } = {}\n\n for (let col in data) {\n const value = data[col]\n const field = schema[col]\n if (field.isRelation) {\n if (field.type === \"relation-one\") {\n values.push(`${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) as any\n (fileMetas as any)[col] = filemeta\n values.push(`${quote(xansql.dialect.engine, col)}='${JSON.stringify(filemeta)}'`)\n } catch (error: any) {\n throw new XansqlError({\n code: \"FILE_ERROR\",\n message: error.message,\n model: model.table,\n field: col\n })\n }\n } else {\n try {\n values.push(`${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 }\n\n // set updatedAt and update\n for (let col in schema) {\n const field = schema[col]\n if (iof(field, XqlDate) && field.meta.updatedAt) {\n const v = field.value.toSql(new Date())\n values.push(`${quote(xansql.dialect.engine, col)}=${v}`)\n }\n }\n\n // taking old filemetas\n let oldFileResults\n if (Object.keys(fileMetas).length) {\n let select: any = {}\n for (let col in fileMetas) {\n select[col] = true\n }\n const build = new BuildFindArgs({\n select,\n where: args.where,\n debug: false\n }, model)\n oldFileResults = await build.results()\n }\n\n let execute\n try {\n let sql = `UPDATE ${model.table} as ${model.alias} SET ${values.join(\", \")} ${wargs.sql}`.trim()\n execute = await model.execute(sql.replace(/\\s+/gi, \" \"), args.debug)\n } catch (error) {\n for (let col in fileMetas) {\n await xansql.deleteFile(fileMetas[col].fileId)\n }\n throw error\n }\n\n if (execute?.affectedRows && Object.keys(relations).length) {\n\n // delete Old files\n if (oldFileResults) {\n for (let row of oldFileResults) {\n for (let col in fileMetas) {\n const field = schema[col]\n const meta = field.value.fromSql(row[col]) as XansqlFileMeta\n if (meta) {\n await xansql.deleteFile(meta.fileId)\n }\n }\n }\n }\n\n for (let col in relations) {\n const rargs = relations[col] as UpdateArgs<any>\n const field = schema[col]\n const rinfo = field.relationInfo\n const RModel = xansql.model(field.model)\n\n const build = new BuildUpdateArgs({\n ...rargs,\n where: {\n ...rargs.where,\n [rinfo.target.column]: args.where\n },\n debug: args.debug\n }, RModel, true)\n await build.results()\n }\n }\n\n if (!isSubquery && execute?.affectedRows) {\n let sargs: SelectArgs = this.makeSelectArgs(data, model)\n const buildFind = new BuildFindArgs({\n select: sargs,\n where: {\n ...args.where,\n },\n debug: args.debug\n }, model)\n return await buildFind.results()\n }\n }\n\n private makeSelectArgs(data: UpdateArgs<any>['data'], model: Model<any>) {\n let args: any = {}\n const schema = model.schema()\n const xansql = model.xansql\n\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 sub_args = data[col] as UpdateArgs<any>\n const childargs = this.makeSelectArgs(sub_args.data as any, RModel)\n if (Object.keys(childargs).length) {\n args[col] = {\n select: childargs,\n where: sub_args.where\n }\n } else {\n args[col] = {\n where: sub_args.where\n }\n }\n } else {\n args[col] = true\n }\n }\n\n return args\n }\n\n private validateData(data: UpdateArgs<any>['data']) {\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) || value === null)) {\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 BuildUpdateArgs"],"names":["BuildWhereArgs","quote","iof","XqlFile","XansqlError","XqlDate","BuildFindArgs","isObject","isNumber"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/model/Build/UpdateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { iof, isNumber, isObject, quote } from \"../../../utils\";\nimport XqlDate from \"../../../xt/fields/Date\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport { SchemaShape, SelectArgs, UpdateArgs } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildUpdateArgs {\n\n constructor(private args: UpdateArgs<SchemaShape>, private model: Model<any>, private isSubquery = false) {\n this.validateData(args.data)\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 const wargs = new BuildWhereArgs(args.where, model)\n const values: string[] = []\n const relations: { [col: string]: UpdateArgs<any>['data'] } = {}\n const fileMetas: { [col: string]: XansqlFileMeta } = {}\n\n for (let col in data) {\n const value = data[col]\n const field = schema[col]\n if (field.isRelation) {\n if (field.type === \"relation-one\") {\n values.push(`${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) as any\n (fileMetas as any)[col] = filemeta\n values.push(`${quote(xansql.dialect.engine, col)}='${JSON.stringify(filemeta)}'`)\n } catch (error: any) {\n throw new XansqlError({\n code: \"FILE_ERROR\",\n message: error.message,\n model: model.table,\n field: col\n })\n }\n } else {\n try {\n values.push(`${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 }\n\n // set updatedAt and update\n for (let col in schema) {\n const field = schema[col]\n if (iof(field, XqlDate) && field.meta.updatedAt) {\n const v = field.value.toSql(new Date())\n values.push(`${quote(xansql.dialect.engine, col)}=${v}`)\n }\n }\n\n // taking old filemetas\n let oldFileResults\n if (Object.keys(fileMetas).length) {\n let select: any = {}\n for (let col in fileMetas) {\n select[col] = true\n }\n const build = new BuildFindArgs({\n select,\n where: args.where,\n debug: false\n }, model)\n oldFileResults = await build.results()\n }\n\n let execute\n try {\n let sql = `UPDATE ${model.table} as ${model.alias} SET ${values.join(\", \")} ${wargs.sql}`.trim()\n execute = await model.execute(sql.replace(/\\s+/gi, \" \"), args.debug)\n } catch (error) {\n for (let col in fileMetas) {\n await xansql.deleteFile(fileMetas[col].fileId)\n }\n throw error\n }\n\n if (execute?.affectedRows && Object.keys(relations).length) {\n\n // delete Old files\n if (oldFileResults) {\n for (let row of oldFileResults) {\n for (let col in fileMetas) {\n const meta = row[col]\n if (meta) {\n await xansql.deleteFile(meta.fileId)\n }\n }\n }\n }\n\n for (let col in relations) {\n const rargs = relations[col] as UpdateArgs<any>\n const field = schema[col]\n const rinfo = field.relationInfo\n const RModel = xansql.model(field.model)\n\n const build = new BuildUpdateArgs({\n ...rargs,\n where: {\n ...rargs.where,\n [rinfo.target.column]: args.where\n },\n debug: args.debug\n }, RModel, true)\n await build.results()\n }\n }\n\n if (!isSubquery && execute?.affectedRows) {\n let sargs: SelectArgs = this.makeSelectArgs(data, model)\n const buildFind = new BuildFindArgs({\n select: sargs,\n where: {\n ...args.where,\n },\n debug: args.debug\n }, model)\n return await buildFind.results()\n }\n }\n\n private makeSelectArgs(data: UpdateArgs<any>['data'], model: Model<any>) {\n let args: any = {}\n const schema = model.schema()\n const xansql = model.xansql\n\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 sub_args = data[col] as UpdateArgs<any>\n const childargs = this.makeSelectArgs(sub_args.data as any, RModel)\n if (Object.keys(childargs).length) {\n args[col] = {\n select: childargs,\n where: sub_args.where\n }\n } else {\n args[col] = {\n where: sub_args.where\n }\n }\n } else {\n args[col] = true\n }\n }\n\n return args\n }\n\n private validateData(data: UpdateArgs<any>['data']) {\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) || value === null)) {\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 BuildUpdateArgs"],"names":["BuildWhereArgs","quote","iof","XqlFile","XansqlError","XqlDate","BuildFindArgs","isObject","isNumber"],"mappings":";;;;;;;;;AAUA,MAAM,eAAe,CAAA;AAElB,IAAA,WAAA,CAAoB,IAA6B,EAAU,KAAiB,EAAU,aAAa,KAAK,EAAA;QAApF,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAmC,IAAA,CAAA,KAAK,GAAL,KAAK;QAAsB,IAAA,CAAA,UAAU,GAAV,UAAU;AAC7F,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;AAEA,IAAA,MAAM,OAAO,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;QAEtB,MAAM,KAAK,GAAG,IAAIA,KAAc,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QACnD,MAAM,MAAM,GAAa,EAAE;QAC3B,MAAM,SAAS,GAA+C,EAAE;QAChE,MAAM,SAAS,GAAsC,EAAE;AAEvD,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACvB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,YAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;AAChC,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAGC,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,CAAA,CAAE,CAAC;gBAC/D;qBAAO;AACJ,oBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK;gBACzB;YACH;iBAAO;AACJ,gBAAA,IAAIC,WAAG,CAAC,KAAK,EAAEC,MAAO,CAAC,EAAE;AACtB,oBAAA,IAAI;wBACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAQ;AACrD,wBAAA,SAAiB,CAAC,GAAG,CAAC,GAAG,QAAQ;wBAClC,MAAM,CAAC,IAAI,CAAC,CAAA,EAAGF,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA,CAAA,CAAG,CAAC;oBACpF;oBAAE,OAAO,KAAU,EAAE;wBAClB,MAAM,IAAIG,uBAAW,CAAC;AACnB,4BAAA,IAAI,EAAE,YAAY;4BAClB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,4BAAA,KAAK,EAAE;AACT,yBAAA,CAAC;oBACL;gBACH;qBAAO;AACJ,oBAAA,IAAI;wBACD,MAAM,CAAC,IAAI,CAAC,CAAA,EAAGH,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;oBAClF;oBAAE,OAAO,KAAU,EAAE;wBAClB,MAAM,IAAIG,uBAAW,CAAC;AACnB,4BAAA,IAAI,EAAE,kBAAkB;4BACxB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,4BAAA,KAAK,EAAE;AACT,yBAAA,CAAC;oBACL;gBACH;YACH;QACH;;AAGA,QAAA,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,YAAA,IAAIF,WAAG,CAAC,KAAK,EAAEG,MAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;AAC9C,gBAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;AACvC,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAGJ,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;YAC3D;QACH;;AAGA,QAAA,IAAI,cAAc;QAClB,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;YAChC,IAAI,MAAM,GAAQ,EAAE;AACpB,YAAA,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;AACxB,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;YACrB;AACA,YAAA,MAAM,KAAK,GAAG,IAAIK,OAAa,CAAC;gBAC7B,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;aACT,EAAE,KAAK,CAAC;AACT,YAAA,cAAc,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;QACzC;AAEA,QAAA,IAAI,OAAO;AACX,QAAA,IAAI;YACD,IAAI,GAAG,GAAG,CAAA,OAAA,EAAU,KAAK,CAAC,KAAK,CAAA,IAAA,EAAO,KAAK,CAAC,KAAK,CAAA,KAAA,EAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,GAAG,CAAA,CAAE,CAAC,IAAI,EAAE;AAChG,YAAA,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;QACvE;QAAE,OAAO,KAAK,EAAE;AACb,YAAA,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;gBACxB,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACjD;AACA,YAAA,MAAM,KAAK;QACd;AAEA,QAAA,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,YAAY,KAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;;YAGzD,IAAI,cAAc,EAAE;AACjB,gBAAA,KAAK,IAAI,GAAG,IAAI,cAAc,EAAE;AAC7B,oBAAA,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;AACxB,wBAAA,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;wBACrB,IAAI,IAAI,EAAE;4BACP,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;wBACvC;oBACH;gBACH;YACH;AAEA,YAAA,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAoB;AAC/C,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY;gBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAExC,gBAAA,MAAM,KAAK,GAAG,IAAI,eAAe,iCAC3B,KAAK,CAAA,EAAA,EACR,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACC,KAAK,CAAC,KAAK,CAAA,EAAA,EACd,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,KAEpC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAA,CAAA,EACjB,MAAM,EAAE,IAAI,CAAC;AAChB,gBAAA,MAAM,KAAK,CAAC,OAAO,EAAE;YACxB;QACH;AAEA,QAAA,IAAI,CAAC,UAAU,KAAI,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,YAAY,CAAA,EAAE;YACvC,IAAI,KAAK,GAAe,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;AACxD,YAAA,MAAM,SAAS,GAAG,IAAIA,OAAa,CAAC;AACjC,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACC,IAAI,CAAC,KAAK,CACf;gBACD,KAAK,EAAE,IAAI,CAAC;aACd,EAAE,KAAK,CAAC;AACT,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE;QACnC;IACH;IAEQ,cAAc,CAAC,IAA6B,EAAE,KAAiB,EAAA;QACpE,IAAI,IAAI,GAAQ,EAAE;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAE3B,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAQ;AAChC,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE;gBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAoB;AAC7C,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAW,EAAE,MAAM,CAAC;gBACnE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;oBAChC,IAAI,CAAC,GAAG,CAAC,GAAG;AACT,wBAAA,MAAM,EAAE,SAAS;wBACjB,KAAK,EAAE,QAAQ,CAAC;qBAClB;gBACJ;qBAAO;oBACJ,IAAI,CAAC,GAAG,CAAC,GAAG;wBACT,KAAK,EAAE,QAAQ,CAAC;qBAClB;gBACJ;YACH;iBAAO;AACJ,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;YACnB;QACH;AAEA,QAAA,OAAO,IAAI;IACd;AAEQ,IAAA,YAAY,CAAC,IAA6B,EAAA;AAC/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AAE7B,QAAA,IAAI,CAACC,gBAAQ,CAAC,IAAI,CAAC,EAAE;YAClB,MAAM,IAAIH,uBAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,OAAO,EAAE,CAAA,0CAAA,EAA6C,OAAO,IAAI,CAAA,CAAE;gBACnE,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,MAAM,EAAE;AACV,aAAA,CAAC;QACL;;AAGA,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;YACzB,MAAM,IAAIA,uBAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,+CAA+C,KAAK,CAAC,QAAQ,CAAA,YAAA,EAAe,KAAK,CAAC,KAAK,CAAA,EAAA,CAAI;gBACpG,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,QAAQ;AACvB,aAAA,CAAC;QACL;AAEA,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACnB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACvB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAEzB,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;AACzC,gBAAA,IAAI,GAAG,IAAI,IAAI,EAAE;oBACd,MAAM,IAAIA,uBAAW,CAAC;AACnB,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,OAAO,EAAE,CAAA,wBAAA,EAA2B,GAAG,eAAe,KAAK,CAAC,KAAK,CAAA,wCAAA,CAA0C;wBAC3G,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,wBAAA,KAAK,EAAE,GAAG;AACZ,qBAAA,CAAC;gBACL;YACH;AAEA,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,EAAEI,gBAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;gBACxE,MAAM,IAAIJ,uBAAW,CAAC;AACnB,oBAAA,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,CAAA,+BAAA,EAAkC,GAAG,CAAA,YAAA,EAAe,KAAK,CAAC,KAAK,CAAA,0BAAA,EAA6B,OAAO,KAAK,CAAA,CAAA,CAAG;oBACpH,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,oBAAA,KAAK,EAAE,GAAG;AACZ,iBAAA,CAAC;YACL;AAEA,YAAA,IAAIF,WAAG,CAAC,KAAK,EAAEC,MAAO,CAAC,IAAI,CAACD,WAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;gBAC3C,MAAM,IAAIE,uBAAW,CAAC;AACnB,oBAAA,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,CAAA,mBAAA,EAAsB,GAAG,CAAA,YAAA,EAAe,KAAK,CAAC,KAAK,CAAA,6BAAA,EAAgC,OAAO,KAAK,CAAA,CAAA,CAAG;oBAC3G,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,oBAAA,KAAK,EAAE;AACT,iBAAA,CAAC;YACL;QACH;IACH;AACF;;;;"}
|
|
@@ -103,8 +103,7 @@ class BuildUpdateArgs {
|
|
|
103
103
|
if (oldFileResults) {
|
|
104
104
|
for (let row of oldFileResults) {
|
|
105
105
|
for (let col in fileMetas) {
|
|
106
|
-
const
|
|
107
|
-
const meta = field.value.fromSql(row[col]);
|
|
106
|
+
const meta = row[col];
|
|
108
107
|
if (meta) {
|
|
109
108
|
await xansql.deleteFile(meta.fileId);
|
|
110
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/model/Build/UpdateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { iof, isNumber, isObject, quote } from \"../../../utils\";\nimport XqlDate from \"../../../xt/fields/Date\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport { SchemaShape, SelectArgs, UpdateArgs } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildUpdateArgs {\n\n constructor(private args: UpdateArgs<SchemaShape>, private model: Model<any>, private isSubquery = false) {\n this.validateData(args.data)\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 const wargs = new BuildWhereArgs(args.where, model)\n const values: string[] = []\n const relations: { [col: string]: UpdateArgs<any>['data'] } = {}\n const fileMetas: { [col: string]: XansqlFileMeta } = {}\n\n for (let col in data) {\n const value = data[col]\n const field = schema[col]\n if (field.isRelation) {\n if (field.type === \"relation-one\") {\n values.push(`${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) as any\n (fileMetas as any)[col] = filemeta\n values.push(`${quote(xansql.dialect.engine, col)}='${JSON.stringify(filemeta)}'`)\n } catch (error: any) {\n throw new XansqlError({\n code: \"FILE_ERROR\",\n message: error.message,\n model: model.table,\n field: col\n })\n }\n } else {\n try {\n values.push(`${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 }\n\n // set updatedAt and update\n for (let col in schema) {\n const field = schema[col]\n if (iof(field, XqlDate) && field.meta.updatedAt) {\n const v = field.value.toSql(new Date())\n values.push(`${quote(xansql.dialect.engine, col)}=${v}`)\n }\n }\n\n // taking old filemetas\n let oldFileResults\n if (Object.keys(fileMetas).length) {\n let select: any = {}\n for (let col in fileMetas) {\n select[col] = true\n }\n const build = new BuildFindArgs({\n select,\n where: args.where,\n debug: false\n }, model)\n oldFileResults = await build.results()\n }\n\n let execute\n try {\n let sql = `UPDATE ${model.table} as ${model.alias} SET ${values.join(\", \")} ${wargs.sql}`.trim()\n execute = await model.execute(sql.replace(/\\s+/gi, \" \"), args.debug)\n } catch (error) {\n for (let col in fileMetas) {\n await xansql.deleteFile(fileMetas[col].fileId)\n }\n throw error\n }\n\n if (execute?.affectedRows && Object.keys(relations).length) {\n\n // delete Old files\n if (oldFileResults) {\n for (let row of oldFileResults) {\n for (let col in fileMetas) {\n const field = schema[col]\n const meta = field.value.fromSql(row[col]) as XansqlFileMeta\n if (meta) {\n await xansql.deleteFile(meta.fileId)\n }\n }\n }\n }\n\n for (let col in relations) {\n const rargs = relations[col] as UpdateArgs<any>\n const field = schema[col]\n const rinfo = field.relationInfo\n const RModel = xansql.model(field.model)\n\n const build = new BuildUpdateArgs({\n ...rargs,\n where: {\n ...rargs.where,\n [rinfo.target.column]: args.where\n },\n debug: args.debug\n }, RModel, true)\n await build.results()\n }\n }\n\n if (!isSubquery && execute?.affectedRows) {\n let sargs: SelectArgs = this.makeSelectArgs(data, model)\n const buildFind = new BuildFindArgs({\n select: sargs,\n where: {\n ...args.where,\n },\n debug: args.debug\n }, model)\n return await buildFind.results()\n }\n }\n\n private makeSelectArgs(data: UpdateArgs<any>['data'], model: Model<any>) {\n let args: any = {}\n const schema = model.schema()\n const xansql = model.xansql\n\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 sub_args = data[col] as UpdateArgs<any>\n const childargs = this.makeSelectArgs(sub_args.data as any, RModel)\n if (Object.keys(childargs).length) {\n args[col] = {\n select: childargs,\n where: sub_args.where\n }\n } else {\n args[col] = {\n where: sub_args.where\n }\n }\n } else {\n args[col] = true\n }\n }\n\n return args\n }\n\n private validateData(data: UpdateArgs<any>['data']) {\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) || value === null)) {\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 BuildUpdateArgs"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/model/Build/UpdateArgs/index.ts"],"sourcesContent":["import Model from \"../..\";\nimport { XansqlFileMeta } from \"../../../core/types\";\nimport XansqlError from \"../../../core/XansqlError\";\nimport { iof, isNumber, isObject, quote } from \"../../../utils\";\nimport XqlDate from \"../../../xt/fields/Date\";\nimport XqlFile from \"../../../xt/fields/File\";\nimport { SchemaShape, SelectArgs, UpdateArgs } from \"../../types\";\nimport BuildFindArgs from \"../FindArgs\";\nimport BuildWhereArgs from \"../WhereArgs\";\n\nclass BuildUpdateArgs {\n\n constructor(private args: UpdateArgs<SchemaShape>, private model: Model<any>, private isSubquery = false) {\n this.validateData(args.data)\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 const wargs = new BuildWhereArgs(args.where, model)\n const values: string[] = []\n const relations: { [col: string]: UpdateArgs<any>['data'] } = {}\n const fileMetas: { [col: string]: XansqlFileMeta } = {}\n\n for (let col in data) {\n const value = data[col]\n const field = schema[col]\n if (field.isRelation) {\n if (field.type === \"relation-one\") {\n values.push(`${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) as any\n (fileMetas as any)[col] = filemeta\n values.push(`${quote(xansql.dialect.engine, col)}='${JSON.stringify(filemeta)}'`)\n } catch (error: any) {\n throw new XansqlError({\n code: \"FILE_ERROR\",\n message: error.message,\n model: model.table,\n field: col\n })\n }\n } else {\n try {\n values.push(`${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 }\n\n // set updatedAt and update\n for (let col in schema) {\n const field = schema[col]\n if (iof(field, XqlDate) && field.meta.updatedAt) {\n const v = field.value.toSql(new Date())\n values.push(`${quote(xansql.dialect.engine, col)}=${v}`)\n }\n }\n\n // taking old filemetas\n let oldFileResults\n if (Object.keys(fileMetas).length) {\n let select: any = {}\n for (let col in fileMetas) {\n select[col] = true\n }\n const build = new BuildFindArgs({\n select,\n where: args.where,\n debug: false\n }, model)\n oldFileResults = await build.results()\n }\n\n let execute\n try {\n let sql = `UPDATE ${model.table} as ${model.alias} SET ${values.join(\", \")} ${wargs.sql}`.trim()\n execute = await model.execute(sql.replace(/\\s+/gi, \" \"), args.debug)\n } catch (error) {\n for (let col in fileMetas) {\n await xansql.deleteFile(fileMetas[col].fileId)\n }\n throw error\n }\n\n if (execute?.affectedRows && Object.keys(relations).length) {\n\n // delete Old files\n if (oldFileResults) {\n for (let row of oldFileResults) {\n for (let col in fileMetas) {\n const meta = row[col]\n if (meta) {\n await xansql.deleteFile(meta.fileId)\n }\n }\n }\n }\n\n for (let col in relations) {\n const rargs = relations[col] as UpdateArgs<any>\n const field = schema[col]\n const rinfo = field.relationInfo\n const RModel = xansql.model(field.model)\n\n const build = new BuildUpdateArgs({\n ...rargs,\n where: {\n ...rargs.where,\n [rinfo.target.column]: args.where\n },\n debug: args.debug\n }, RModel, true)\n await build.results()\n }\n }\n\n if (!isSubquery && execute?.affectedRows) {\n let sargs: SelectArgs = this.makeSelectArgs(data, model)\n const buildFind = new BuildFindArgs({\n select: sargs,\n where: {\n ...args.where,\n },\n debug: args.debug\n }, model)\n return await buildFind.results()\n }\n }\n\n private makeSelectArgs(data: UpdateArgs<any>['data'], model: Model<any>) {\n let args: any = {}\n const schema = model.schema()\n const xansql = model.xansql\n\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 sub_args = data[col] as UpdateArgs<any>\n const childargs = this.makeSelectArgs(sub_args.data as any, RModel)\n if (Object.keys(childargs).length) {\n args[col] = {\n select: childargs,\n where: sub_args.where\n }\n } else {\n args[col] = {\n where: sub_args.where\n }\n }\n } else {\n args[col] = true\n }\n }\n\n return args\n }\n\n private validateData(data: UpdateArgs<any>['data']) {\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) || value === null)) {\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 BuildUpdateArgs"],"names":[],"mappings":"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"}
|