xansql 1.1.20 → 1.1.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/model/index.ts"],"sourcesContent":["import Xansql from \"../core/Xansql\";\nimport { iof } from \"../utils\";\nimport XqlIDField from \"../xt/fields/IDField\";\nimport XqlRelationMany from \"../xt/fields/RelationMany\";\nimport XqlRelationOne from \"../xt/fields/RelationOne\";\nimport { AggregateArgs, AggregateResult, CreateArgs, CreateResult, DeleteArgs, DeleteResult, ExactArgs, FindArgs, FindResult, ModelClass, PaginateArgs, SchemaShape, UpdateArgs, UpdateResult, UpsertArgs, UpsertResult, WhereArgs } from \"./types\";\nimport XansqlError from \"../core/XansqlError\";\nimport BuildFindArgs from \"./Build/FindArgs\";\nimport BuildCreateArgs from \"./Build/CreateArgs\";\nimport xt from \"../xt\";\nimport BuildAggregateArgs from \"./Build/AggregateArgs\";\nimport BuildUpdateArgs from \"./Build/UpdateArgs\";\nimport BuildDeleteArgs from \"./Build/DeleteArgs\";\nimport ModelWhere from \"./ModelWhere\";\nimport ReserveKeywords from \"./ReserveKeywords\";\nimport BuildUpsertArgs from \"./Build/UpsertArgs\";\nimport { AliasGenerate } from \"./AliasGenerate\";\n\n\nabstract class Model<S extends SchemaShape = SchemaShape> {\n abstract schema(): S\n readonly xansql: Xansql\n readonly IDColumn: string\n readonly alias: string\n\n get table() {\n const name = this.constructor.name.replace(/_/g, \"\");\n let table = name.split(/(?=[A-Z])/).filter((l: string) => l.toLowerCase() !== 'model').join(\"_\").toLowerCase()\n table = table.endsWith(\"y\") ? table.slice(0, -1) + \"ies\" : table + \"s\"\n return table\n }\n\n constructor(xansql: Xansql) {\n this.xansql = xansql\n const fields = this.schema()\n\n this.IDColumn = Object.keys(fields).find(column => fields[column] instanceof XqlIDField) || ''\n if (!this.IDColumn) {\n throw new Error(`ID Column not found in schema ${this.table}. Please define an ID column using xt.id() in the schema.`)\n }\n\n // build model registry in xansql for relations\n xansql.models.set(this.constructor as ModelClass<any>, this as any)\n for (let column in fields) {\n const field = fields[column]\n if (iof(field, XqlRelationMany, XqlRelationOne) && !xansql.models.has(field.model)) {\n xansql.model(field.model)\n }\n }\n\n this.alias = (new AliasGenerate(xansql, this)).generate();\n\n let migration_columns = []\n let index_sqls = []\n for (let column in fields) {\n if (ReserveKeywords.includes(column)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Invalid column name \"${column}\" in table \"${this.table}\". \"${column}\" is a reserved keyword.`,\n model: this.table,\n field: column\n })\n }\n\n const field = fields[column]\n\n // check field is valid XqlField\n if (!field.meta || !field.parse) {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n model: this.constructor.name,\n field: column,\n message: `Invalid field type in model ${this.constructor.name}:${column}`\n })\n }\n\n field.table = this.table\n field.column_name = column\n field.engine = xansql.dialect.engine\n\n if (iof(field, XqlRelationMany, XqlRelationOne)) {\n const targetColumn = field.targetColumn\n const TModel = field.model\n const targetModel = xansql.models.get(TModel)\n if (!targetModel) {\n throw new Error(`Target model for relation ${column} in schema ${fields.table} not found. Please define the target schema before defining the relation.`)\n }\n const targetShape = targetModel.schema() as Record<string, any>\n\n // check if relation target exists\n if (field.type === 'relation-many') {\n if (!targetShape[targetColumn] || targetShape[targetColumn].type !== \"relation-one\") {\n throw new Error(`Target column ${targetColumn} for relation ${column} in schema ${fields.table} not found in target schema ${targetModel.table}. Please define the target column in the target schema.`)\n }\n } else if (!targetShape[targetColumn]) {\n // const tschema = targetModel.schema()\n // tschema[targetColumn] = xt.many(this.constructor as any, column)\n // targetModel.schema = (() => tschema).bind(targetModel)\n }\n\n if (field.type == 'relation-one') {\n field.relationInfo = {\n self: {\n table: this.table,\n relation: column,\n column: column,\n },\n target: {\n table: targetModel.table,\n relation: targetModel.IDColumn,\n column: targetColumn,\n },\n sql: `${this.table}.${column} = ${targetModel.table}.${targetModel.IDColumn}`\n }\n } else if (field.type == 'relation-many') {\n field.relationInfo = {\n self: {\n table: this.table,\n relation: this.IDColumn,\n column: column,\n },\n target: {\n table: targetModel.table,\n relation: targetColumn,\n column: targetColumn,\n },\n sql: `${this.table}.${this.IDColumn} = ${targetModel.table}.${targetColumn}`\n }\n }\n }\n\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n migration_columns.push(info.sql.column)\n if (info.sql.create_index) {\n index_sqls.push(info.sql.create_index)\n }\n }\n }\n\n this.schema = (() => fields).bind(this)\n }\n\n where(inColumn: string, where?: WhereArgs<S>) {\n return new ModelWhere<S>(this, inColumn, where)\n }\n\n async execute(sql: string, debug?: boolean) {\n return this.xansql.execute(sql, debug)\n }\n\n async find<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null> {\n try {\n const build = new BuildFindArgs(args as any, this)\n const results = await build.results()\n return results as any\n } catch (error) {\n throw error\n }\n }\n\n async findOne<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null> {\n try {\n const results: any = await this.find(args)\n if (results?.length) {\n return results[0]\n }\n return null\n } catch (error) {\n throw error\n }\n }\n\n async aggregate<T extends AggregateArgs<S, any>>(args: ExactArgs<T, AggregateArgs<S, T>>): Promise<AggregateResult<T, S>[] | null> {\n try {\n await this.xansql.XansqlTransaction.begin()\n const build = new BuildAggregateArgs(args as any, this)\n const results = await build.results()\n await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async create<T extends CreateArgs<S>>(args: ExactArgs<T, CreateArgs<S>>): Promise<CreateResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildCreateArgs(args as any, this)\n const results = await build.results() as any\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async update<T extends UpdateArgs<S>>(args: ExactArgs<T, UpdateArgs<S>>): Promise<UpdateResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildUpdateArgs(args as any, this)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async upsert<T extends UpsertArgs<S>>(args: ExactArgs<T, UpsertArgs<S>>): Promise<UpsertResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildUpsertArgs(args as any, this)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async delete<T extends DeleteArgs<S>>(args: ExactArgs<T, DeleteArgs<S>>): Promise<DeleteResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildDeleteArgs(args as any, this as any)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n // Helper Methods\n async paginate(args: PaginateArgs<S>) {\n const page = args.page\n const perpage = args?.perpage || 20;\n const skip = (page - 1) * perpage;\n const results = await this.find({\n ...args as any,\n limit: {\n take: perpage,\n skip\n }\n })\n const total = await this.count(args?.where || {} as WhereArgs<S>, args.debug)\n return {\n total,\n page,\n perpage,\n pages: Math.ceil(total / perpage),\n results,\n }\n }\n\n async exists(where: WhereArgs<S>, debug?: boolean): Promise<boolean> {\n return !!(await this.count(where, debug))\n }\n\n // Aggregate Methods\n async count(where: WhereArgs<S>, debug?: boolean): Promise<number> {\n const res: any = await this.aggregate({\n where,\n select: {\n [this.IDColumn]: {\n count: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`count_${this.IDColumn}`] : 0\n }\n\n async min(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n min: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`min_${column}`] : 0\n }\n\n async max(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n max: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`max_${column}`] : 0\n }\n\n async sum(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n sum: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`sum_${column}`] : 0\n }\n\n async avg(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n avg: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`avg_${column}`] : 0\n }\n}\n\nexport default Model"],"names":["XqlIDField","iof","XqlRelationMany","XqlRelationOne","AliasGenerate","BuildFindArgs","BuildAggregateArgs","BuildCreateArgs","BuildUpdateArgs","BuildUpsertArgs","BuildDeleteArgs"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/model/index.ts"],"sourcesContent":["import Xansql from \"../core/Xansql\";\nimport { iof } from \"../utils\";\nimport XqlIDField from \"../xt/fields/IDField\";\nimport XqlRelationMany from \"../xt/fields/RelationMany\";\nimport XqlRelationOne from \"../xt/fields/RelationOne\";\nimport { AggregateArgs, AggregateResult, CreateArgs, CreateResult, DeleteArgs, DeleteResult, ExactArgs, FindArgs, FindResult, ModelClass, PaginateArgs, SchemaShape, UpdateArgs, UpdateResult, UpsertArgs, UpsertResult, WhereArgs } from \"./types\";\nimport XansqlError from \"../core/XansqlError\";\nimport BuildFindArgs from \"./Build/FindArgs\";\nimport BuildCreateArgs from \"./Build/CreateArgs\";\nimport xt from \"../xt\";\nimport BuildAggregateArgs from \"./Build/AggregateArgs\";\nimport BuildUpdateArgs from \"./Build/UpdateArgs\";\nimport BuildDeleteArgs from \"./Build/DeleteArgs\";\nimport ModelWhere from \"./ModelWhere\";\nimport ReserveKeywords from \"./ReserveKeywords\";\nimport BuildUpsertArgs from \"./Build/UpsertArgs\";\nimport { AliasGenerate } from \"./AliasGenerate\";\n\n\nabstract class Model<S extends SchemaShape = SchemaShape> {\n abstract schema(): S\n readonly xansql: Xansql\n readonly IDColumn: string\n readonly alias: string\n\n get table() {\n const name = this.constructor.name.replace(/_/g, \"\");\n let table = name.split(/(?=[A-Z])/).filter((l: string) => l.toLowerCase() !== 'model').join(\"_\").toLowerCase()\n table = table.endsWith(\"y\") ? table.slice(0, -1) + \"ies\" : table + \"s\"\n return table\n }\n\n constructor(xansql: Xansql) {\n this.xansql = xansql\n const fields = this.schema()\n\n this.IDColumn = Object.keys(fields).find(column => fields[column] instanceof XqlIDField) || ''\n if (!this.IDColumn) {\n throw new Error(`ID Column not found in schema ${this.table}. Please define an ID column using xt.id() in the schema.`)\n }\n\n // build model registry in xansql for relations\n xansql.models.set(this.constructor as ModelClass<any>, this as any)\n for (let column in fields) {\n const field = fields[column]\n if (iof(field, XqlRelationMany, XqlRelationOne) && !xansql.models.has(field.model)) {\n xansql.model(field.model)\n }\n }\n\n this.alias = (new AliasGenerate(xansql, this)).generate();\n\n let migration_columns = []\n let index_sqls = []\n for (let column in fields) {\n if (ReserveKeywords.includes(column)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Invalid column name \"${column}\" in table \"${this.table}\". \"${column}\" is a reserved keyword.`,\n model: this.table,\n field: column\n })\n }\n\n const field = fields[column]\n\n // check field is valid XqlField\n if (!field.meta || !field.parse) {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n model: this.constructor.name,\n field: column,\n message: `Invalid field type in model ${this.constructor.name}:${column}`\n })\n }\n\n field.table = this.table\n field.column_name = column\n field.engine = xansql.dialect.engine\n\n if (iof(field, XqlRelationMany, XqlRelationOne)) {\n const targetColumn = field.targetColumn\n const TModel = field.model\n const targetModel = xansql.models.get(TModel)\n if (!targetModel) {\n throw new Error(`Target model for relation ${column} in schema ${fields.table} not found. Please define the target schema before defining the relation.`)\n }\n const targetShape = targetModel.schema() as Record<string, any>\n\n // check if relation target exists\n if (field.type === 'relation-many') {\n if (!targetShape[targetColumn] || targetShape[targetColumn].type !== \"relation-one\") {\n throw new Error(`Target column ${targetColumn} for relation ${column} in schema ${fields.table} not found in target schema ${targetModel.table}. Please define the target column in the target schema.`)\n }\n } else if (!targetShape[targetColumn]) {\n // const tschema = targetModel.schema()\n // tschema[targetColumn] = xt.many(this.constructor as any, column)\n // targetModel.schema = (() => tschema).bind(targetModel)\n }\n\n if (field.type == 'relation-one') {\n field.relationInfo = {\n self: {\n table: this.table,\n relation: column,\n column: column,\n },\n target: {\n table: targetModel.table,\n relation: targetModel.IDColumn,\n column: targetColumn,\n },\n sql: `${this.table}.${column} = ${targetModel.table}.${targetModel.IDColumn}`\n }\n } else if (field.type == 'relation-many') {\n field.relationInfo = {\n self: {\n table: this.table,\n relation: this.IDColumn,\n column: column,\n },\n target: {\n table: targetModel.table,\n relation: targetColumn,\n column: targetColumn,\n },\n sql: `${this.table}.${this.IDColumn} = ${targetModel.table}.${targetColumn}`\n }\n }\n }\n\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n migration_columns.push(info.sql.column)\n if (info.sql.create_index) {\n index_sqls.push(info.sql.create_index)\n }\n }\n }\n\n this.schema = (() => fields).bind(this)\n }\n\n where(inColumn: string, where?: WhereArgs<S>) {\n return new ModelWhere<S>(this, inColumn, where)\n }\n\n async execute(sql: string, debug?: boolean) {\n return this.xansql.execute(sql, debug)\n }\n\n async find<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S>[] | null> {\n try {\n const build = new BuildFindArgs(args as any, this)\n const results = await build.results()\n return results as any\n } catch (error) {\n throw error\n }\n }\n\n async findOne<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null> {\n try {\n const results: any = await this.find(args)\n if (results?.length) {\n return results[0]\n }\n return null\n } catch (error) {\n throw error\n }\n }\n\n async aggregate<T extends AggregateArgs<S, any>>(args: ExactArgs<T, AggregateArgs<S, T>>): Promise<AggregateResult<T, S>[] | null> {\n try {\n await this.xansql.XansqlTransaction.begin()\n const build = new BuildAggregateArgs(args as any, this)\n const results = await build.results()\n await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async create<T extends CreateArgs<S>>(args: ExactArgs<T, CreateArgs<S>>): Promise<CreateResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildCreateArgs(args as any, this)\n const results = await build.results() as any\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async update<T extends UpdateArgs<S>>(args: ExactArgs<T, UpdateArgs<S>>): Promise<UpdateResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildUpdateArgs(args as any, this)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async upsert<T extends UpsertArgs<S>>(args: ExactArgs<T, UpsertArgs<S>>): Promise<UpsertResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildUpsertArgs(args as any, this)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async delete<T extends DeleteArgs<S>>(args: ExactArgs<T, DeleteArgs<S>>): Promise<DeleteResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildDeleteArgs(args as any, this as any)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n // Helper Methods\n async paginate(args: PaginateArgs<S>) {\n const page = args.page\n const perpage = args?.perpage || 20;\n const skip = (page - 1) * perpage;\n const results = await this.find({\n ...args as any,\n limit: {\n take: perpage,\n skip\n }\n })\n const total = await this.count(args?.where || {} as WhereArgs<S>, args.debug)\n return {\n total,\n page,\n perpage,\n pages: Math.ceil(total / perpage),\n results,\n }\n }\n\n async exists(where: WhereArgs<S>, debug?: boolean): Promise<boolean> {\n return !!(await this.count(where, debug))\n }\n\n // Aggregate Methods\n async count(where: WhereArgs<S>, debug?: boolean): Promise<number> {\n const res: any = await this.aggregate({\n where,\n select: {\n [this.IDColumn]: {\n count: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`count_${this.IDColumn}`] : 0\n }\n\n async min(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n min: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`min_${column}`] : 0\n }\n\n async max(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n max: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`max_${column}`] : 0\n }\n\n async sum(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n sum: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`sum_${column}`] : 0\n }\n\n async avg(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n avg: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`avg_${column}`] : 0\n }\n}\n\nexport default Model"],"names":["XqlIDField","iof","XqlRelationMany","XqlRelationOne","AliasGenerate","BuildFindArgs","BuildAggregateArgs","BuildCreateArgs","BuildUpdateArgs","BuildUpsertArgs","BuildDeleteArgs"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAe,KAAK,CAAA;AAMjB,IAAA,IAAI,KAAK,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACpD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QAC9G,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG;AACtE,QAAA,OAAO,KAAK;IACf;AAEA,IAAA,WAAA,CAAY,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAE5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,YAAYA,OAAU,CAAC,IAAI,EAAE;AAC9F,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,EAAiC,IAAI,CAAC,KAAK,CAAA,yDAAA,CAA2D,CAAC;QAC1H;;QAGA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAA8B,EAAE,IAAW,CAAC;AACnE,QAAA,KAAK,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,IAAIC,SAAG,CAAC,KAAK,EAAEC,YAAe,EAAEC,WAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACjF,gBAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAIC,2BAAa,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE;QAEzD,IAAI,iBAAiB,GAAG,EAAE;QAC1B,IAAI,UAAU,GAAG,EAAE;AACnB,QAAA,KAAK,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACnC,MAAM,IAAI,WAAW,CAAC;AACnB,oBAAA,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,wBAAwB,MAAM,CAAA,YAAA,EAAe,IAAI,CAAC,KAAK,CAAA,IAAA,EAAO,MAAM,CAAA,wBAAA,CAA0B;oBACvG,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,oBAAA,KAAK,EAAE;AACT,iBAAA,CAAC;YACL;AAEA,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;;YAG5B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC9B,MAAM,IAAI,WAAW,CAAC;AACnB,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;AAC5B,oBAAA,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,+BAA+B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA;AACzE,iBAAA,CAAC;YACL;AAEA,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,YAAA,KAAK,CAAC,WAAW,GAAG,MAAM;YAC1B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;YAEpC,IAAIH,SAAG,CAAC,KAAK,EAAEC,YAAe,EAAEC,WAAc,CAAC,EAAE;AAC9C,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY;AACvC,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK;gBAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7C,IAAI,CAAC,WAAW,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,EAA6B,MAAM,CAAA,WAAA,EAAc,MAAM,CAAC,KAAK,CAAA,yEAAA,CAA2E,CAAC;gBAC5J;AACA,gBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAyB;;AAG/D,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE;AACjC,oBAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE;AAClF,wBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,YAAY,iBAAiB,MAAM,CAAA,WAAA,EAAc,MAAM,CAAC,KAAK,CAAA,4BAAA,EAA+B,WAAW,CAAC,KAAK,CAAA,uDAAA,CAAyD,CAAC;oBAC3M;gBACH;AAAO,qBAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE;AAMvC,gBAAA,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,EAAE;oBAC/B,KAAK,CAAC,YAAY,GAAG;AAClB,wBAAA,IAAI,EAAE;4BACH,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,MAAM,EAAE,MAAM;AAChB,yBAAA;AACD,wBAAA,MAAM,EAAE;4BACL,KAAK,EAAE,WAAW,CAAC,KAAK;4BACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC9B,4BAAA,MAAM,EAAE,YAAY;AACtB,yBAAA;AACD,wBAAA,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,MAAM,CAAA,GAAA,EAAM,WAAW,CAAC,KAAK,CAAA,CAAA,EAAI,WAAW,CAAC,QAAQ,CAAA;qBAC7E;gBACJ;AAAO,qBAAA,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,EAAE;oBACvC,KAAK,CAAC,YAAY,GAAG;AAClB,wBAAA,IAAI,EAAE;4BACH,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,4BAAA,MAAM,EAAE,MAAM;AAChB,yBAAA;AACD,wBAAA,MAAM,EAAE;4BACL,KAAK,EAAE,WAAW,CAAC,KAAK;AACxB,4BAAA,QAAQ,EAAE,YAAY;AACtB,4BAAA,MAAM,EAAE,YAAY;AACtB,yBAAA;AACD,wBAAA,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,MAAM,WAAW,CAAC,KAAK,CAAA,CAAA,EAAI,YAAY,CAAA;qBAC5E;gBACJ;YACH;YAEA,IAAI,CAACF,SAAG,CAAC,KAAK,EAAEC,YAAe,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;gBACvB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACvC,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACxB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;gBACzC;YACH;QACH;AAEA,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;IAC1C;IAEA,KAAK,CAAC,QAAgB,EAAE,KAAoB,EAAA;QACzC,OAAO,IAAI,UAAU,CAAI,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IAClD;AAEA,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAe,EAAA;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;IACzC;IAEA,MAAM,IAAI,CAAwB,IAA+B,EAAA;AAC9D,QAAA,IAAI;YACD,MAAM,KAAK,GAAG,IAAIG,OAAa,CAAC,IAAW,EAAE,IAAI,CAAC;AAClD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;AACrC,YAAA,OAAO,OAAc;QACxB;QAAE,OAAO,KAAK,EAAE;AACb,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,OAAO,CAAwB,IAA+B,EAAA;AACjE,QAAA,IAAI;YACD,MAAM,OAAO,GAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,IAAI,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,EAAE;AAClB,gBAAA,OAAO,OAAO,CAAC,CAAC,CAAC;YACpB;AACA,YAAA,OAAO,IAAI;QACd;QAAE,OAAO,KAAK,EAAE;AACb,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,SAAS,CAAkC,IAAuC,EAAA;AACrF,QAAA,IAAI;YACD,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAIC,OAAkB,CAAC,IAAW,EAAE,IAAI,CAAC;AACvD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACrC,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC5C,YAAA,OAAO,OAAc;QACxB;QAAE,OAAO,KAAK,EAAE;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAC9C,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,MAAM,CAA0B,IAAiC,EAAA;;QACpE,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAClD,QAAA,IAAI;YACD,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAIC,OAAe,CAAC,IAAW,EAAE,IAAI,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAS;YAC5C,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,OAAO;QACjB;QAAE,OAAO,KAAK,EAAE;YACb,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,MAAM,CAA0B,IAAiC,EAAA;;QACpE,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAClD,QAAA,IAAI;YACD,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAIC,OAAe,CAAC,IAAW,EAAE,IAAI,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACrC,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,OAAc;QACxB;QAAE,OAAO,KAAK,EAAE;YACb,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,MAAM,CAA0B,IAAiC,EAAA;;QACpE,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAClD,QAAA,IAAI;YACD,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAIC,OAAe,CAAC,IAAW,EAAE,IAAI,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACrC,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,OAAO;QACjB;QAAE,OAAO,KAAK,EAAE;YACb,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,MAAM,CAA0B,IAAiC,EAAA;;QACpE,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAClD,QAAA,IAAI;YACD,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAIC,OAAe,CAAC,IAAW,EAAE,IAAW,CAAC;AAC3D,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACrC,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,OAAc;QACxB;QAAE,OAAO,KAAK,EAAE;YACb,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK;QACd;IACH;;IAGA,MAAM,QAAQ,CAAC,IAAqB,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,OAAO,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,OAAO,KAAI,EAAE;QACnC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACzB,IAAW,CAAA,EAAA,EACd,KAAK,EAAE;AACJ,gBAAA,IAAI,EAAE,OAAO;gBACb;AACF,aAAA,EAAA,CAAA,CACF;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KAAI,EAAkB,EAAE,IAAI,CAAC,KAAK,CAAC;QAC7E,OAAO;YACJ,KAAK;YACL,IAAI;YACJ,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACjC,OAAO;SACT;IACJ;AAEA,IAAA,MAAM,MAAM,CAAC,KAAmB,EAAE,KAAe,EAAA;AAC9C,QAAA,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C;;AAGA,IAAA,MAAM,KAAK,CAAC,KAAmB,EAAE,KAAe,EAAA;AAC7C,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;AACL,gBAAA,CAAC,IAAI,CAAC,QAAQ,GAAG;AACd,oBAAA,KAAK,EAAE;AACT;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC,GAAG,CAAC;IAC5D;AAEA,IAAA,MAAM,GAAG,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAe,EAAA;QAC3D,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,OAAO,EAAE,CAAA,QAAA,EAAW,MAAM,8BAA8B,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG;gBACrE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;AACT,aAAA,CAAC;QACL;AACA,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;gBACL,CAAC,MAAM,GAAG;AACP,oBAAA,GAAG,EAAE;AACP;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,GAAG,CAAC;IACnD;AAEA,IAAA,MAAM,GAAG,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAe,EAAA;QAC3D,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,OAAO,EAAE,CAAA,QAAA,EAAW,MAAM,8BAA8B,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG;gBACrE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;AACT,aAAA,CAAC;QACL;AACA,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;gBACL,CAAC,MAAM,GAAG;AACP,oBAAA,GAAG,EAAE;AACP;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,GAAG,CAAC;IACnD;AAEA,IAAA,MAAM,GAAG,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAe,EAAA;QAC3D,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,OAAO,EAAE,CAAA,QAAA,EAAW,MAAM,8BAA8B,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG;gBACrE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;AACT,aAAA,CAAC;QACL;AACA,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;gBACL,CAAC,MAAM,GAAG;AACP,oBAAA,GAAG,EAAE;AACP;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,GAAG,CAAC;IACnD;AAEA,IAAA,MAAM,GAAG,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAe,EAAA;QAC3D,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,OAAO,EAAE,CAAA,QAAA,EAAW,MAAM,8BAA8B,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG;gBACrE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;AACT,aAAA,CAAC;QACL;AACA,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;gBACL,CAAC,MAAM,GAAG;AACP,oBAAA,GAAG,EAAE;AACP;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,GAAG,CAAC;IACnD;AACF;;;;"}
package/model/index.d.ts CHANGED
@@ -12,7 +12,7 @@ declare abstract class Model<S extends SchemaShape = SchemaShape> {
12
12
  constructor(xansql: Xansql);
13
13
  where(inColumn: string, where?: WhereArgs<S>): ModelWhere<S>;
14
14
  execute(sql: string, debug?: boolean): Promise<ExecuterResult>;
15
- find<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null>;
15
+ find<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S>[] | null>;
16
16
  findOne<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null>;
17
17
  aggregate<T extends AggregateArgs<S, any>>(args: ExactArgs<T, AggregateArgs<S, T>>): Promise<AggregateResult<T, S>[] | null>;
18
18
  create<T extends CreateArgs<S>>(args: ExactArgs<T, CreateArgs<S>>): Promise<CreateResult<T, S>[] | null>;
@@ -30,7 +30,7 @@ declare abstract class Model<S extends SchemaShape = SchemaShape> {
30
30
  [x: `${string}_${string}`]: number;
31
31
  };
32
32
  };
33
- }> | null;
33
+ }>[] | null;
34
34
  }>;
35
35
  exists(where: WhereArgs<S>, debug?: boolean): Promise<boolean>;
36
36
  count(where: WhereArgs<S>, debug?: boolean): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/model/index.ts"],"sourcesContent":["import Xansql from \"../core/Xansql\";\nimport { iof } from \"../utils\";\nimport XqlIDField from \"../xt/fields/IDField\";\nimport XqlRelationMany from \"../xt/fields/RelationMany\";\nimport XqlRelationOne from \"../xt/fields/RelationOne\";\nimport { AggregateArgs, AggregateResult, CreateArgs, CreateResult, DeleteArgs, DeleteResult, ExactArgs, FindArgs, FindResult, ModelClass, PaginateArgs, SchemaShape, UpdateArgs, UpdateResult, UpsertArgs, UpsertResult, WhereArgs } from \"./types\";\nimport XansqlError from \"../core/XansqlError\";\nimport BuildFindArgs from \"./Build/FindArgs\";\nimport BuildCreateArgs from \"./Build/CreateArgs\";\nimport xt from \"../xt\";\nimport BuildAggregateArgs from \"./Build/AggregateArgs\";\nimport BuildUpdateArgs from \"./Build/UpdateArgs\";\nimport BuildDeleteArgs from \"./Build/DeleteArgs\";\nimport ModelWhere from \"./ModelWhere\";\nimport ReserveKeywords from \"./ReserveKeywords\";\nimport BuildUpsertArgs from \"./Build/UpsertArgs\";\nimport { AliasGenerate } from \"./AliasGenerate\";\n\n\nabstract class Model<S extends SchemaShape = SchemaShape> {\n abstract schema(): S\n readonly xansql: Xansql\n readonly IDColumn: string\n readonly alias: string\n\n get table() {\n const name = this.constructor.name.replace(/_/g, \"\");\n let table = name.split(/(?=[A-Z])/).filter((l: string) => l.toLowerCase() !== 'model').join(\"_\").toLowerCase()\n table = table.endsWith(\"y\") ? table.slice(0, -1) + \"ies\" : table + \"s\"\n return table\n }\n\n constructor(xansql: Xansql) {\n this.xansql = xansql\n const fields = this.schema()\n\n this.IDColumn = Object.keys(fields).find(column => fields[column] instanceof XqlIDField) || ''\n if (!this.IDColumn) {\n throw new Error(`ID Column not found in schema ${this.table}. Please define an ID column using xt.id() in the schema.`)\n }\n\n // build model registry in xansql for relations\n xansql.models.set(this.constructor as ModelClass<any>, this as any)\n for (let column in fields) {\n const field = fields[column]\n if (iof(field, XqlRelationMany, XqlRelationOne) && !xansql.models.has(field.model)) {\n xansql.model(field.model)\n }\n }\n\n this.alias = (new AliasGenerate(xansql, this)).generate();\n\n let migration_columns = []\n let index_sqls = []\n for (let column in fields) {\n if (ReserveKeywords.includes(column)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Invalid column name \"${column}\" in table \"${this.table}\". \"${column}\" is a reserved keyword.`,\n model: this.table,\n field: column\n })\n }\n\n const field = fields[column]\n\n // check field is valid XqlField\n if (!field.meta || !field.parse) {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n model: this.constructor.name,\n field: column,\n message: `Invalid field type in model ${this.constructor.name}:${column}`\n })\n }\n\n field.table = this.table\n field.column_name = column\n field.engine = xansql.dialect.engine\n\n if (iof(field, XqlRelationMany, XqlRelationOne)) {\n const targetColumn = field.targetColumn\n const TModel = field.model\n const targetModel = xansql.models.get(TModel)\n if (!targetModel) {\n throw new Error(`Target model for relation ${column} in schema ${fields.table} not found. Please define the target schema before defining the relation.`)\n }\n const targetShape = targetModel.schema() as Record<string, any>\n\n // check if relation target exists\n if (field.type === 'relation-many') {\n if (!targetShape[targetColumn] || targetShape[targetColumn].type !== \"relation-one\") {\n throw new Error(`Target column ${targetColumn} for relation ${column} in schema ${fields.table} not found in target schema ${targetModel.table}. Please define the target column in the target schema.`)\n }\n } else if (!targetShape[targetColumn]) {\n // const tschema = targetModel.schema()\n // tschema[targetColumn] = xt.many(this.constructor as any, column)\n // targetModel.schema = (() => tschema).bind(targetModel)\n }\n\n if (field.type == 'relation-one') {\n field.relationInfo = {\n self: {\n table: this.table,\n relation: column,\n column: column,\n },\n target: {\n table: targetModel.table,\n relation: targetModel.IDColumn,\n column: targetColumn,\n },\n sql: `${this.table}.${column} = ${targetModel.table}.${targetModel.IDColumn}`\n }\n } else if (field.type == 'relation-many') {\n field.relationInfo = {\n self: {\n table: this.table,\n relation: this.IDColumn,\n column: column,\n },\n target: {\n table: targetModel.table,\n relation: targetColumn,\n column: targetColumn,\n },\n sql: `${this.table}.${this.IDColumn} = ${targetModel.table}.${targetColumn}`\n }\n }\n }\n\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n migration_columns.push(info.sql.column)\n if (info.sql.create_index) {\n index_sqls.push(info.sql.create_index)\n }\n }\n }\n\n this.schema = (() => fields).bind(this)\n }\n\n where(inColumn: string, where?: WhereArgs<S>) {\n return new ModelWhere<S>(this, inColumn, where)\n }\n\n async execute(sql: string, debug?: boolean) {\n return this.xansql.execute(sql, debug)\n }\n\n async find<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null> {\n try {\n const build = new BuildFindArgs(args as any, this)\n const results = await build.results()\n return results as any\n } catch (error) {\n throw error\n }\n }\n\n async findOne<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null> {\n try {\n const results: any = await this.find(args)\n if (results?.length) {\n return results[0]\n }\n return null\n } catch (error) {\n throw error\n }\n }\n\n async aggregate<T extends AggregateArgs<S, any>>(args: ExactArgs<T, AggregateArgs<S, T>>): Promise<AggregateResult<T, S>[] | null> {\n try {\n await this.xansql.XansqlTransaction.begin()\n const build = new BuildAggregateArgs(args as any, this)\n const results = await build.results()\n await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async create<T extends CreateArgs<S>>(args: ExactArgs<T, CreateArgs<S>>): Promise<CreateResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildCreateArgs(args as any, this)\n const results = await build.results() as any\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async update<T extends UpdateArgs<S>>(args: ExactArgs<T, UpdateArgs<S>>): Promise<UpdateResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildUpdateArgs(args as any, this)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async upsert<T extends UpsertArgs<S>>(args: ExactArgs<T, UpsertArgs<S>>): Promise<UpsertResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildUpsertArgs(args as any, this)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async delete<T extends DeleteArgs<S>>(args: ExactArgs<T, DeleteArgs<S>>): Promise<DeleteResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildDeleteArgs(args as any, this as any)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n // Helper Methods\n async paginate(args: PaginateArgs<S>) {\n const page = args.page\n const perpage = args?.perpage || 20;\n const skip = (page - 1) * perpage;\n const results = await this.find({\n ...args as any,\n limit: {\n take: perpage,\n skip\n }\n })\n const total = await this.count(args?.where || {} as WhereArgs<S>, args.debug)\n return {\n total,\n page,\n perpage,\n pages: Math.ceil(total / perpage),\n results,\n }\n }\n\n async exists(where: WhereArgs<S>, debug?: boolean): Promise<boolean> {\n return !!(await this.count(where, debug))\n }\n\n // Aggregate Methods\n async count(where: WhereArgs<S>, debug?: boolean): Promise<number> {\n const res: any = await this.aggregate({\n where,\n select: {\n [this.IDColumn]: {\n count: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`count_${this.IDColumn}`] : 0\n }\n\n async min(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n min: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`min_${column}`] : 0\n }\n\n async max(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n max: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`max_${column}`] : 0\n }\n\n async sum(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n sum: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`sum_${column}`] : 0\n }\n\n async avg(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n avg: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`avg_${column}`] : 0\n }\n}\n\nexport default Model"],"names":[],"mappings":";;;;;;;;;;;;;;;AAmBA,MAAe,KAAK,CAAA;AAMjB,IAAA,IAAI,KAAK,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACpD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QAC9G,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG;AACtE,QAAA,OAAO,KAAK;IACf;AAEA,IAAA,WAAA,CAAY,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAE5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,UAAU,CAAC,IAAI,EAAE;AAC9F,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,EAAiC,IAAI,CAAC,KAAK,CAAA,yDAAA,CAA2D,CAAC;QAC1H;;QAGA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAA8B,EAAE,IAAW,CAAC;AACnE,QAAA,KAAK,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,IAAI,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACjF,gBAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE;QAEzD,IAAI,iBAAiB,GAAG,EAAE;QAC1B,IAAI,UAAU,GAAG,EAAE;AACnB,QAAA,KAAK,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACnC,MAAM,IAAI,WAAW,CAAC;AACnB,oBAAA,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,wBAAwB,MAAM,CAAA,YAAA,EAAe,IAAI,CAAC,KAAK,CAAA,IAAA,EAAO,MAAM,CAAA,wBAAA,CAA0B;oBACvG,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,oBAAA,KAAK,EAAE;AACT,iBAAA,CAAC;YACL;AAEA,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;;YAG5B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC9B,MAAM,IAAI,WAAW,CAAC;AACnB,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;AAC5B,oBAAA,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,+BAA+B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA;AACzE,iBAAA,CAAC;YACL;AAEA,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,YAAA,KAAK,CAAC,WAAW,GAAG,MAAM;YAC1B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;YAEpC,IAAI,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE;AAC9C,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY;AACvC,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK;gBAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7C,IAAI,CAAC,WAAW,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,EAA6B,MAAM,CAAA,WAAA,EAAc,MAAM,CAAC,KAAK,CAAA,yEAAA,CAA2E,CAAC;gBAC5J;AACA,gBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAyB;;AAG/D,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE;AACjC,oBAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE;AAClF,wBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,YAAY,iBAAiB,MAAM,CAAA,WAAA,EAAc,MAAM,CAAC,KAAK,CAAA,4BAAA,EAA+B,WAAW,CAAC,KAAK,CAAA,uDAAA,CAAyD,CAAC;oBAC3M;gBACH;AAAO,qBAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE;AAMvC,gBAAA,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,EAAE;oBAC/B,KAAK,CAAC,YAAY,GAAG;AAClB,wBAAA,IAAI,EAAE;4BACH,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,MAAM,EAAE,MAAM;AAChB,yBAAA;AACD,wBAAA,MAAM,EAAE;4BACL,KAAK,EAAE,WAAW,CAAC,KAAK;4BACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC9B,4BAAA,MAAM,EAAE,YAAY;AACtB,yBAAA;AACD,wBAAA,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,MAAM,CAAA,GAAA,EAAM,WAAW,CAAC,KAAK,CAAA,CAAA,EAAI,WAAW,CAAC,QAAQ,CAAA;qBAC7E;gBACJ;AAAO,qBAAA,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,EAAE;oBACvC,KAAK,CAAC,YAAY,GAAG;AAClB,wBAAA,IAAI,EAAE;4BACH,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,4BAAA,MAAM,EAAE,MAAM;AAChB,yBAAA;AACD,wBAAA,MAAM,EAAE;4BACL,KAAK,EAAE,WAAW,CAAC,KAAK;AACxB,4BAAA,QAAQ,EAAE,YAAY;AACtB,4BAAA,MAAM,EAAE,YAAY;AACtB,yBAAA;AACD,wBAAA,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,MAAM,WAAW,CAAC,KAAK,CAAA,CAAA,EAAI,YAAY,CAAA;qBAC5E;gBACJ;YACH;YAEA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;gBACvB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACvC,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACxB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;gBACzC;YACH;QACH;AAEA,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;IAC1C;IAEA,KAAK,CAAC,QAAgB,EAAE,KAAoB,EAAA;QACzC,OAAO,IAAI,UAAU,CAAI,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IAClD;AAEA,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAe,EAAA;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;IACzC;IAEA,MAAM,IAAI,CAAwB,IAA+B,EAAA;AAC9D,QAAA,IAAI;YACD,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,IAAW,EAAE,IAAI,CAAC;AAClD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;AACrC,YAAA,OAAO,OAAc;QACxB;QAAE,OAAO,KAAK,EAAE;AACb,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,OAAO,CAAwB,IAA+B,EAAA;AACjE,QAAA,IAAI;YACD,MAAM,OAAO,GAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,IAAI,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,EAAE;AAClB,gBAAA,OAAO,OAAO,CAAC,CAAC,CAAC;YACpB;AACA,YAAA,OAAO,IAAI;QACd;QAAE,OAAO,KAAK,EAAE;AACb,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,SAAS,CAAkC,IAAuC,EAAA;AACrF,QAAA,IAAI;YACD,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,IAAW,EAAE,IAAI,CAAC;AACvD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACrC,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC5C,YAAA,OAAO,OAAc;QACxB;QAAE,OAAO,KAAK,EAAE;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAC9C,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,MAAM,CAA0B,IAAiC,EAAA;;QACpE,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAClD,QAAA,IAAI;YACD,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,IAAW,EAAE,IAAI,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAS;YAC5C,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,OAAO;QACjB;QAAE,OAAO,KAAK,EAAE;YACb,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,MAAM,CAA0B,IAAiC,EAAA;;QACpE,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAClD,QAAA,IAAI;YACD,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,IAAW,EAAE,IAAI,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACrC,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,OAAc;QACxB;QAAE,OAAO,KAAK,EAAE;YACb,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,MAAM,CAA0B,IAAiC,EAAA;;QACpE,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAClD,QAAA,IAAI;YACD,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,IAAW,EAAE,IAAI,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACrC,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,OAAO;QACjB;QAAE,OAAO,KAAK,EAAE;YACb,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK;QACd;IACH;IAEA,MAAM,MAAM,CAA0B,IAAiC,EAAA;;QACpE,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAClD,QAAA,IAAI;YACD,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,IAAW,EAAE,IAAW,CAAC;AAC3D,YAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACrC,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,OAAc;QACxB;QAAE,OAAO,KAAK,EAAE;YACb,cAAc,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK;QACd;IACH;;IAGA,MAAM,QAAQ,CAAC,IAAqB,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,OAAO,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,OAAO,KAAI,EAAE;QACnC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACzB,IAAW,CAAA,EAAA,EACd,KAAK,EAAE;AACJ,gBAAA,IAAI,EAAE,OAAO;gBACb;AACF,aAAA,EAAA,CAAA,CACF;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KAAI,EAAkB,EAAE,IAAI,CAAC,KAAK,CAAC;QAC7E,OAAO;YACJ,KAAK;YACL,IAAI;YACJ,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACjC,OAAO;SACT;IACJ;AAEA,IAAA,MAAM,MAAM,CAAC,KAAmB,EAAE,KAAe,EAAA;AAC9C,QAAA,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C;;AAGA,IAAA,MAAM,KAAK,CAAC,KAAmB,EAAE,KAAe,EAAA;AAC7C,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;AACL,gBAAA,CAAC,IAAI,CAAC,QAAQ,GAAG;AACd,oBAAA,KAAK,EAAE;AACT;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC,GAAG,CAAC;IAC5D;AAEA,IAAA,MAAM,GAAG,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAe,EAAA;QAC3D,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,OAAO,EAAE,CAAA,QAAA,EAAW,MAAM,8BAA8B,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG;gBACrE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;AACT,aAAA,CAAC;QACL;AACA,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;gBACL,CAAC,MAAM,GAAG;AACP,oBAAA,GAAG,EAAE;AACP;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,GAAG,CAAC;IACnD;AAEA,IAAA,MAAM,GAAG,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAe,EAAA;QAC3D,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,OAAO,EAAE,CAAA,QAAA,EAAW,MAAM,8BAA8B,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG;gBACrE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;AACT,aAAA,CAAC;QACL;AACA,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;gBACL,CAAC,MAAM,GAAG;AACP,oBAAA,GAAG,EAAE;AACP;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,GAAG,CAAC;IACnD;AAEA,IAAA,MAAM,GAAG,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAe,EAAA;QAC3D,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,OAAO,EAAE,CAAA,QAAA,EAAW,MAAM,8BAA8B,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG;gBACrE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;AACT,aAAA,CAAC;QACL;AACA,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;gBACL,CAAC,MAAM,GAAG;AACP,oBAAA,GAAG,EAAE;AACP;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,GAAG,CAAC;IACnD;AAEA,IAAA,MAAM,GAAG,CAAC,MAAc,EAAE,KAAmB,EAAE,KAAe,EAAA;QAC3D,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,OAAO,EAAE,CAAA,QAAA,EAAW,MAAM,8BAA8B,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG;gBACrE,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE;AACT,aAAA,CAAC;QACL;AACA,QAAA,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK;AACL,YAAA,MAAM,EAAE;gBACL,CAAC,MAAM,GAAG;AACP,oBAAA,GAAG,EAAE;AACP;AACI,aAAA;YACR;AACF,SAAA,CAAC;QACF,OAAO,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,MAAM,IAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC,GAAG,CAAC;IACnD;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/model/index.ts"],"sourcesContent":["import Xansql from \"../core/Xansql\";\nimport { iof } from \"../utils\";\nimport XqlIDField from \"../xt/fields/IDField\";\nimport XqlRelationMany from \"../xt/fields/RelationMany\";\nimport XqlRelationOne from \"../xt/fields/RelationOne\";\nimport { AggregateArgs, AggregateResult, CreateArgs, CreateResult, DeleteArgs, DeleteResult, ExactArgs, FindArgs, FindResult, ModelClass, PaginateArgs, SchemaShape, UpdateArgs, UpdateResult, UpsertArgs, UpsertResult, WhereArgs } from \"./types\";\nimport XansqlError from \"../core/XansqlError\";\nimport BuildFindArgs from \"./Build/FindArgs\";\nimport BuildCreateArgs from \"./Build/CreateArgs\";\nimport xt from \"../xt\";\nimport BuildAggregateArgs from \"./Build/AggregateArgs\";\nimport BuildUpdateArgs from \"./Build/UpdateArgs\";\nimport BuildDeleteArgs from \"./Build/DeleteArgs\";\nimport ModelWhere from \"./ModelWhere\";\nimport ReserveKeywords from \"./ReserveKeywords\";\nimport BuildUpsertArgs from \"./Build/UpsertArgs\";\nimport { AliasGenerate } from \"./AliasGenerate\";\n\n\nabstract class Model<S extends SchemaShape = SchemaShape> {\n abstract schema(): S\n readonly xansql: Xansql\n readonly IDColumn: string\n readonly alias: string\n\n get table() {\n const name = this.constructor.name.replace(/_/g, \"\");\n let table = name.split(/(?=[A-Z])/).filter((l: string) => l.toLowerCase() !== 'model').join(\"_\").toLowerCase()\n table = table.endsWith(\"y\") ? table.slice(0, -1) + \"ies\" : table + \"s\"\n return table\n }\n\n constructor(xansql: Xansql) {\n this.xansql = xansql\n const fields = this.schema()\n\n this.IDColumn = Object.keys(fields).find(column => fields[column] instanceof XqlIDField) || ''\n if (!this.IDColumn) {\n throw new Error(`ID Column not found in schema ${this.table}. Please define an ID column using xt.id() in the schema.`)\n }\n\n // build model registry in xansql for relations\n xansql.models.set(this.constructor as ModelClass<any>, this as any)\n for (let column in fields) {\n const field = fields[column]\n if (iof(field, XqlRelationMany, XqlRelationOne) && !xansql.models.has(field.model)) {\n xansql.model(field.model)\n }\n }\n\n this.alias = (new AliasGenerate(xansql, this)).generate();\n\n let migration_columns = []\n let index_sqls = []\n for (let column in fields) {\n if (ReserveKeywords.includes(column)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Invalid column name \"${column}\" in table \"${this.table}\". \"${column}\" is a reserved keyword.`,\n model: this.table,\n field: column\n })\n }\n\n const field = fields[column]\n\n // check field is valid XqlField\n if (!field.meta || !field.parse) {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n model: this.constructor.name,\n field: column,\n message: `Invalid field type in model ${this.constructor.name}:${column}`\n })\n }\n\n field.table = this.table\n field.column_name = column\n field.engine = xansql.dialect.engine\n\n if (iof(field, XqlRelationMany, XqlRelationOne)) {\n const targetColumn = field.targetColumn\n const TModel = field.model\n const targetModel = xansql.models.get(TModel)\n if (!targetModel) {\n throw new Error(`Target model for relation ${column} in schema ${fields.table} not found. Please define the target schema before defining the relation.`)\n }\n const targetShape = targetModel.schema() as Record<string, any>\n\n // check if relation target exists\n if (field.type === 'relation-many') {\n if (!targetShape[targetColumn] || targetShape[targetColumn].type !== \"relation-one\") {\n throw new Error(`Target column ${targetColumn} for relation ${column} in schema ${fields.table} not found in target schema ${targetModel.table}. Please define the target column in the target schema.`)\n }\n } else if (!targetShape[targetColumn]) {\n // const tschema = targetModel.schema()\n // tschema[targetColumn] = xt.many(this.constructor as any, column)\n // targetModel.schema = (() => tschema).bind(targetModel)\n }\n\n if (field.type == 'relation-one') {\n field.relationInfo = {\n self: {\n table: this.table,\n relation: column,\n column: column,\n },\n target: {\n table: targetModel.table,\n relation: targetModel.IDColumn,\n column: targetColumn,\n },\n sql: `${this.table}.${column} = ${targetModel.table}.${targetModel.IDColumn}`\n }\n } else if (field.type == 'relation-many') {\n field.relationInfo = {\n self: {\n table: this.table,\n relation: this.IDColumn,\n column: column,\n },\n target: {\n table: targetModel.table,\n relation: targetColumn,\n column: targetColumn,\n },\n sql: `${this.table}.${this.IDColumn} = ${targetModel.table}.${targetColumn}`\n }\n }\n }\n\n if (!iof(field, XqlRelationMany)) {\n const info = field.info\n migration_columns.push(info.sql.column)\n if (info.sql.create_index) {\n index_sqls.push(info.sql.create_index)\n }\n }\n }\n\n this.schema = (() => fields).bind(this)\n }\n\n where(inColumn: string, where?: WhereArgs<S>) {\n return new ModelWhere<S>(this, inColumn, where)\n }\n\n async execute(sql: string, debug?: boolean) {\n return this.xansql.execute(sql, debug)\n }\n\n async find<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S>[] | null> {\n try {\n const build = new BuildFindArgs(args as any, this)\n const results = await build.results()\n return results as any\n } catch (error) {\n throw error\n }\n }\n\n async findOne<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null> {\n try {\n const results: any = await this.find(args)\n if (results?.length) {\n return results[0]\n }\n return null\n } catch (error) {\n throw error\n }\n }\n\n async aggregate<T extends AggregateArgs<S, any>>(args: ExactArgs<T, AggregateArgs<S, T>>): Promise<AggregateResult<T, S>[] | null> {\n try {\n await this.xansql.XansqlTransaction.begin()\n const build = new BuildAggregateArgs(args as any, this)\n const results = await build.results()\n await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async create<T extends CreateArgs<S>>(args: ExactArgs<T, CreateArgs<S>>): Promise<CreateResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildCreateArgs(args as any, this)\n const results = await build.results() as any\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async update<T extends UpdateArgs<S>>(args: ExactArgs<T, UpdateArgs<S>>): Promise<UpdateResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildUpdateArgs(args as any, this)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async upsert<T extends UpsertArgs<S>>(args: ExactArgs<T, UpsertArgs<S>>): Promise<UpsertResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildUpsertArgs(args as any, this)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n async delete<T extends DeleteArgs<S>>(args: ExactArgs<T, DeleteArgs<S>>): Promise<DeleteResult<T, S>[] | null> {\n const useTransection = args.useTransection ?? true\n try {\n useTransection && await this.xansql.XansqlTransaction.begin()\n const build = new BuildDeleteArgs(args as any, this as any)\n const results = await build.results()\n useTransection && await this.xansql.XansqlTransaction.commit()\n return results as any\n } catch (error) {\n useTransection && await this.xansql.XansqlTransaction.rollback()\n throw error\n }\n }\n\n // Helper Methods\n async paginate(args: PaginateArgs<S>) {\n const page = args.page\n const perpage = args?.perpage || 20;\n const skip = (page - 1) * perpage;\n const results = await this.find({\n ...args as any,\n limit: {\n take: perpage,\n skip\n }\n })\n const total = await this.count(args?.where || {} as WhereArgs<S>, args.debug)\n return {\n total,\n page,\n perpage,\n pages: Math.ceil(total / perpage),\n results,\n }\n }\n\n async exists(where: WhereArgs<S>, debug?: boolean): Promise<boolean> {\n return !!(await this.count(where, debug))\n }\n\n // Aggregate Methods\n async count(where: WhereArgs<S>, debug?: boolean): Promise<number> {\n const res: any = await this.aggregate({\n where,\n select: {\n [this.IDColumn]: {\n count: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`count_${this.IDColumn}`] : 0\n }\n\n async min(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n min: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`min_${column}`] : 0\n }\n\n async max(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n max: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`max_${column}`] : 0\n }\n\n async sum(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n sum: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`sum_${column}`] : 0\n }\n\n async avg(column: string, where: WhereArgs<S>, debug?: boolean): Promise<number> {\n if (!(column in this.schema)) {\n throw new XansqlError({\n code: \"INVALID_ARGUMENTS\",\n message: `Column \"${column}\" does not exist in table \"${this.table}\"`,\n model: this.table,\n field: column\n });\n }\n const res: any = await this.aggregate({\n where,\n select: {\n [column]: {\n avg: true\n }\n } as any,\n debug\n })\n return res?.length ? res[0][`avg_${column}`] : 0\n }\n}\n\nexport default Model"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xansql",
3
- "version": "1.1.20",
3
+ "version": "1.1.21",
4
4
  "main": "./index.cjs",
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",