xansql 1.1.25 → 1.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -2,6 +2,6 @@ export { default as Xansql } from './core/Xansql.js';
2
2
  export { default as Model } from './model/index.js';
3
3
  export { default as XansqlError } from './core/XansqlError.js';
4
4
  export { default as xt } from './xt/index.js';
5
- export { AggregateArgs, AggregateArgsValue, AggregateFunctions, AggregateGroupByArgs, AggregateOrderBy, AggregateResult, AggregateResultGroupBy, AggregateSelectArgs, CreateArgs, CreateDataArgs, CreateDataValue, CreateResult, DeleteArgs, DeleteResult, ExactArgs, FindAggregateArgs, FindArgs, FindDistinctArgs, FindResult, FindResultColumnMap, FindResultFullSchema, FindResultMap, IsRelationField, IsRelationMany, IsRelationOne, LimitArgs, ModelClass, ModelHooks, ModelOptions, ModelRowObject, Normalize, OrderByArgs, PaginateArgs, SchemaAllColumns, SchemaShape, SelectArgs, UpdateArgs, UpdateDataArgs, UpdateDataValue, UpdateRelationArgs, UpdateResult, UpsertArgs, UpsertResult, WhereArgs, WhereSubConditionArgs } from './model/types.js';
5
+ export { AggregateArgs, AggregateArgsValue, AggregateFunctions, AggregateGroupByArgs, AggregateOrderBy, AggregateResult, AggregateResultGroupBy, AggregateSelectArgs, CreateArgs, CreateDataArgs, CreateDataValue, CreateResult, DeleteArgs, DeleteResult, ExactArgs, FindAggregateArgs, FindArgs, FindDistinctArgs, FindOneArgs, FindResult, FindResultColumnMap, FindResultFullSchema, FindResultMap, IsRelationField, IsRelationMany, IsRelationOne, LimitArgs, ModelClass, ModelHooks, ModelOptions, ModelRowObject, Normalize, OrderByArgs, PaginateArgs, SchemaAllColumns, SchemaShape, SelectArgs, UpdateArgs, UpdateDataArgs, UpdateDataValue, UpdateRelationArgs, UpdateResult, UpsertArgs, UpsertResult, WhereArgs, WhereSubConditionArgs } from './model/types.js';
6
6
  export { ExecuterResult, ResultData, RowObject, XansqlCache, XansqlConfigType, XansqlConfigTypeRequired, XansqlDialect, XansqlDialectEngine, XansqlFileConfig, XansqlFileMeta, XansqlFileUploadArgs, XansqlHooks, XansqlSocket } from './core/types.js';
7
7
  export { XqlField } from './xt/types.js';
package/model/index.cjs CHANGED
@@ -135,8 +135,12 @@ class Model {
135
135
  }
136
136
  }
137
137
  async findOne(args) {
138
+ var _a;
138
139
  try {
139
- const results = await this.find(args);
140
+ const results = await this.find(Object.assign(Object.assign({}, args), { limit: {
141
+ take: 1,
142
+ skip: ((_a = args === null || args === void 0 ? void 0 : args.limit) === null || _a === void 0 ? void 0 : _a.skip) || 0
143
+ } }));
140
144
  if (results === null || results === void 0 ? void 0 : results.length) {
141
145
  return results[0];
142
146
  }
@@ -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 any, 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, FindOneArgs, 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, FindOneArgs<S>>): Promise<FindResult<T, S> | null> {\n try {\n const results: any = await this.find({\n ...args,\n limit: {\n take: 1,\n skip: args?.limit?.skip || 0\n }\n })\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 any, 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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"}
package/model/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { SchemaShape, WhereArgs, FindArgs, ExactArgs, FindResult, AggregateArgs, AggregateResult, CreateArgs, CreateResult, UpdateArgs, UpdateResult, UpsertArgs, UpsertResult, DeleteArgs, DeleteResult, PaginateArgs, Normalize, FindResultFullSchema } from './types.js';
1
+ import { SchemaShape, WhereArgs, FindArgs, ExactArgs, FindResult, FindOneArgs, AggregateArgs, AggregateResult, CreateArgs, CreateResult, UpdateArgs, UpdateResult, UpsertArgs, UpsertResult, DeleteArgs, DeleteResult, PaginateArgs, Normalize, FindResultFullSchema } from './types.js';
2
2
  import { ExecuterResult } from '../core/types.js';
3
3
  import Xansql from '../core/Xansql.js';
4
4
  import ModelWhere from './ModelWhere.js';
@@ -13,7 +13,7 @@ declare abstract class Model<S extends SchemaShape = SchemaShape> {
13
13
  where(inColumn: string, where?: WhereArgs<S>): ModelWhere<S>;
14
14
  execute(sql: string, debug?: boolean): Promise<ExecuterResult>;
15
15
  find<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S>[] | null>;
16
- findOne<T extends FindArgs<S>>(args: ExactArgs<T, FindArgs<S>>): Promise<FindResult<T, S> | null>;
16
+ findOne<T extends FindArgs<S>>(args: ExactArgs<T, FindOneArgs<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>;
19
19
  update<T extends UpdateArgs<S>>(args: ExactArgs<T, UpdateArgs<S>>): Promise<UpdateResult<T, S>[] | null>;
package/model/index.js CHANGED
@@ -133,8 +133,12 @@ class Model {
133
133
  }
134
134
  }
135
135
  async findOne(args) {
136
+ var _a;
136
137
  try {
137
- const results = await this.find(args);
138
+ const results = await this.find(Object.assign(Object.assign({}, args), { limit: {
139
+ take: 1,
140
+ skip: ((_a = args === null || args === void 0 ? void 0 : args.limit) === null || _a === void 0 ? void 0 : _a.skip) || 0
141
+ } }));
138
142
  if (results === null || results === void 0 ? void 0 : results.length) {
139
143
  return results[0];
140
144
  }
@@ -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 any, 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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"}
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, FindOneArgs, 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, FindOneArgs<S>>): Promise<FindResult<T, S> | null> {\n try {\n const results: any = await this.find({\n ...args,\n limit: {\n take: 1,\n skip: args?.limit?.skip || 0\n }\n })\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 any, 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/model/types.d.ts CHANGED
@@ -135,14 +135,25 @@ type FindAggregateArgs<S extends SchemaShape> = Normalize<{
135
135
  } ? Normalize<AggregateSelectArgs<S[K]["schema"]>> : never;
136
136
  }>;
137
137
  type FindDistinctArgs<S extends SchemaShape> = (keyof SchemaAllColumns<S>)[];
138
- type FindArgs<S extends SchemaShape> = {
139
- distinct?: FindDistinctArgs<S>;
138
+ type FindArgs<S extends SchemaShape> = Normalize<{
139
+ distinct?: Normalize<FindDistinctArgs<S>>;
140
140
  where?: Normalize<WhereArgs<S>>;
141
- select?: SelectArgs<S>;
141
+ select?: Normalize<SelectArgs<S>>;
142
142
  limit?: LimitArgs;
143
143
  orderBy?: OrderByArgs<S>;
144
144
  aggregate?: FindAggregateArgs<S>;
145
145
  debug?: boolean;
146
+ }>;
147
+ type FindOneArgs<S extends SchemaShape> = {
148
+ distinct?: Normalize<FindDistinctArgs<S>>;
149
+ where?: Normalize<WhereArgs<S>>;
150
+ select?: SelectArgs<S>;
151
+ limit?: {
152
+ skip: number;
153
+ };
154
+ orderBy?: OrderByArgs<S>;
155
+ aggregate?: FindAggregateArgs<S>;
156
+ debug?: boolean;
146
157
  };
147
158
  type CreateDataValue<F extends XqlField> = F extends XqlRelationOne<any> ? (F extends {
148
159
  meta: {
@@ -274,4 +285,4 @@ type AggregateResult<T extends AggregateArgs<any, any>, S extends SchemaShape> =
274
285
  [RF in keyof T['select'] as keyof T['select'][RF] extends never ? never : `${keyof T['select'][RF] & string}_${RF & string}`]: number;
275
286
  }>;
276
287
 
277
- export type { AggregateArgs, AggregateArgsValue, AggregateFunctions, AggregateGroupByArgs, AggregateOrderBy, AggregateResult, AggregateResultGroupBy, AggregateSelectArgs, CreateArgs, CreateDataArgs, CreateDataValue, CreateResult, DeleteArgs, DeleteResult, ExactArgs, FindAggregateArgs, FindArgs, FindDistinctArgs, FindResult, FindResultColumnMap, FindResultFullSchema, FindResultMap, IsRelationField, IsRelationMany, IsRelationOne, LimitArgs, ModelClass, ModelHooks, ModelOptions, ModelRowObject, Normalize, OrderByArgs, PaginateArgs, SchemaAllColumns, SchemaShape, SelectArgs, UpdateArgs, UpdateDataArgs, UpdateDataValue, UpdateRelationArgs, UpdateResult, UpsertArgs, UpsertResult, WhereArgs, WhereSubConditionArgs };
288
+ export type { AggregateArgs, AggregateArgsValue, AggregateFunctions, AggregateGroupByArgs, AggregateOrderBy, AggregateResult, AggregateResultGroupBy, AggregateSelectArgs, CreateArgs, CreateDataArgs, CreateDataValue, CreateResult, DeleteArgs, DeleteResult, ExactArgs, FindAggregateArgs, FindArgs, FindDistinctArgs, FindOneArgs, FindResult, FindResultColumnMap, FindResultFullSchema, FindResultMap, IsRelationField, IsRelationMany, IsRelationOne, LimitArgs, ModelClass, ModelHooks, ModelOptions, ModelRowObject, Normalize, OrderByArgs, PaginateArgs, SchemaAllColumns, SchemaShape, SelectArgs, UpdateArgs, UpdateDataArgs, UpdateDataValue, UpdateRelationArgs, UpdateResult, UpsertArgs, UpsertResult, WhereArgs, WhereSubConditionArgs };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xansql",
3
- "version": "1.1.25",
3
+ "version": "1.1.26",
4
4
  "main": "./index.cjs",
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",