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.
@@ -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 = field.value.fromSql(frow[col]);
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":"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"}
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 = field.value.fromSql(frow[col]);
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 field = schema[col];
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":"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"}
@@ -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 field = schema[col];
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":";;;;;;;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,IAAI,cAAc,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,GAAG,KAAK,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,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,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,EAAG,KAAK,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,IAAI,WAAW,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,EAAG,KAAK,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,IAAI,WAAW,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,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,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,GAAG,KAAK,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,IAAI,aAAa,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,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,wBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAmB;wBAC5D,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,IAAI,aAAa,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,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClB,MAAM,IAAI,WAAW,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,IAAI,WAAW,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,IAAI,WAAW,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,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;gBACxE,MAAM,IAAI,WAAW,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,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;gBAC3C,MAAM,IAAI,WAAW,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;;;;"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xansql",
3
- "version": "1.1.13",
3
+ "version": "1.1.14",
4
4
  "main": "./index.cjs",
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",