vona-module-a-orm 5.1.23 → 5.1.25

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.
Files changed (55) hide show
  1. package/cli/model/metadata/generate.ts +5 -11
  2. package/dist/bean/bean.database.d.ts +1 -1
  3. package/dist/bean/bean.database.d.ts.map +1 -1
  4. package/dist/index.js +45 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/bean.model/bean.model_cache.d.ts +3 -0
  7. package/dist/lib/bean.model/bean.model_cache.d.ts.map +1 -1
  8. package/dist/lib/bean.model/bean.model_meta.d.ts +1 -1
  9. package/dist/lib/bean.model/bean.model_meta.d.ts.map +1 -1
  10. package/dist/lib/dto/dtoAggregate.d.ts +1 -1
  11. package/dist/lib/dto/dtoAggregate.d.ts.map +1 -1
  12. package/dist/lib/dto/dtoCreate.d.ts +1 -1
  13. package/dist/lib/dto/dtoCreate.d.ts.map +1 -1
  14. package/dist/lib/dto/dtoGet.d.ts.map +1 -1
  15. package/dist/lib/dto/dtoGroup.d.ts +1 -1
  16. package/dist/lib/dto/dtoGroup.d.ts.map +1 -1
  17. package/dist/lib/dto/dtoSelectAndCount.d.ts +1 -1
  18. package/dist/lib/dto/dtoSelectAndCount.d.ts.map +1 -1
  19. package/dist/lib/dto/dtoUpdate.d.ts +1 -1
  20. package/dist/lib/dto/dtoUpdate.d.ts.map +1 -1
  21. package/dist/lib/modelCacheBase.d.ts +1 -1
  22. package/dist/lib/modelCacheBase.d.ts.map +1 -1
  23. package/dist/lib/relations.d.ts +1 -1
  24. package/dist/lib/relations.d.ts.map +1 -1
  25. package/dist/lib/relationsDynamic.d.ts +1 -1
  26. package/dist/lib/relationsDynamic.d.ts.map +1 -1
  27. package/dist/lib/relationsMutate.d.ts +1 -1
  28. package/dist/lib/relationsMutate.d.ts.map +1 -1
  29. package/dist/lib/relationsStatic.d.ts +1 -1
  30. package/dist/lib/relationsStatic.d.ts.map +1 -1
  31. package/dist/service/database.d.ts +1 -1
  32. package/dist/service/database.d.ts.map +1 -1
  33. package/dist/service/databaseDialectBase_.d.ts.map +1 -1
  34. package/dist/service/db_.d.ts +1 -1
  35. package/dist/service/db_.d.ts.map +1 -1
  36. package/dist-cli/model/metadata/generate.js +5 -13
  37. package/package.json +2 -2
  38. package/src/bean/bean.database.ts +1 -1
  39. package/src/bean/schedule.softDeletionPrune.ts +1 -1
  40. package/src/lib/bean.model/bean.model_cache.ts +52 -0
  41. package/src/lib/bean.model/bean.model_meta.ts +1 -1
  42. package/src/lib/dto/dtoAggregate.ts +1 -1
  43. package/src/lib/dto/dtoCreate.ts +1 -1
  44. package/src/lib/dto/dtoGet.ts +4 -10
  45. package/src/lib/dto/dtoGroup.ts +1 -1
  46. package/src/lib/dto/dtoSelectAndCount.ts +1 -1
  47. package/src/lib/dto/dtoUpdate.ts +1 -1
  48. package/src/lib/modelCacheBase.ts +1 -1
  49. package/src/lib/relations.ts +1 -1
  50. package/src/lib/relationsDynamic.ts +1 -1
  51. package/src/lib/relationsMutate.ts +1 -1
  52. package/src/lib/relationsStatic.ts +1 -1
  53. package/src/service/database.ts +1 -1
  54. package/src/service/databaseDialectBase_.ts +10 -3
  55. package/src/service/db_.ts +1 -1
@@ -32,6 +32,8 @@ export default async function (options: IMetadataCustomGenerateOptions): Promise
32
32
  [SymbolKeyEntityMeta]: ${entityMetaName};
33
33
  [SymbolKeyModelOptions]: ${opionsName};
34
34
  get<T extends IModelGetOptions<${entityName},${className}>>(where: TypeModelWhere<${entityName}>, options?: T): Promise<TypeModelRelationResult<${entityName}, ${className}, T> | undefined>;
35
+ getForUpdate<T extends IModelGetOptions<${entityName},${className}>>(where: TypeModelWhere<${entityName}>, options?: T): Promise<TypeModelRelationResult<${entityName}, ${className}, T> | undefined>;
36
+ getByIdForUpdate<T extends IModelGetOptions<${entityName},${className}>>(id: TableIdentity, options?: T): Promise<TypeModelRelationResult<${entityName}, ${className}, T> | undefined>;
35
37
  mget<T extends IModelGetOptions<${entityName},${className}>>(ids: TableIdentity[], options?: T): Promise<TypeModelRelationResult<${entityName}, ${className}, T>[]>;
36
38
  selectAndCount<T extends IModelSelectParams<${entityName},${className},ModelJoins>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined>(params?: T, options?: IModelMethodOptions, modelJoins?: ModelJoins): Promise<TypeModelSelectAndCount<${entityName}, ${className}, T>>;
37
39
  select<T extends IModelSelectParams<${entityName},${className},ModelJoins>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined>(params?: T, options?: IModelMethodOptions, modelJoins?: ModelJoins): Promise<TypeModelRelationResult<${entityName}, ${className}, T>[]>;
@@ -245,18 +247,10 @@ function __parseRelation_options(node: t.Node) {
245
247
  aggrs = options?.aggrs;
246
248
  }
247
249
  // columns
248
- if (!options?.columns) {
249
- if (options?.groups) {
250
- columns = 'undefined';
251
- } else {
252
- columns = 'undefined'; // '\'*\'';
253
- }
250
+ if (!options?.columns || options.columns.includes('*')) {
251
+ columns = "'*'";
254
252
  } else {
255
- if (options?.columns.includes('*')) {
256
- columns = "'*'";
257
- } else {
258
- columns = __joinColumnsType(options?.columns, false);
259
- }
253
+ columns = __joinColumnsType(options.columns, false);
260
254
  }
261
255
  return { autoload, columns, groups, aggrs };
262
256
  }
@@ -1,8 +1,8 @@
1
1
  import type { FunctionAsync } from 'vona';
2
2
  import { BeanBase } from 'vona';
3
+ import type { ServiceDatabaseDialectBase } from '../service/databaseDialectBase_.ts';
3
4
  import type { ConfigDatabaseClient } from '../types/config.ts';
4
5
  import type { IDatabaseClientDialectRecord, IDatabaseClientRecord, IDbInfo } from '../types/database.ts';
5
- import type { ServiceDatabaseDialectBase } from '../service/databaseDialectBase_.ts';
6
6
  import { ServiceDatabaseClient } from '../service/databaseClient_.ts';
7
7
  export declare class BeanDatabase extends BeanBase {
8
8
  get current(): import("vona-module-a-orm").ServiceDb;
@@ -1 +1 @@
1
- {"version":3,"file":"bean.database.d.ts","sourceRoot":"","sources":["../../src/bean/bean.database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAA6B,MAAM,MAAM,CAAC;AAG3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EACV,4BAA4B,EAC5B,qBAAqB,EACrB,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,qBACa,YAAa,SAAQ,QAAQ;IACxC,IAAI,OAAO,0CAEV;IAED,SAAS,CACP,kBAAkB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,qBAAqB,EACnE,YAAY,CAAC,EAAE,oBAAoB;IAcrC,KAAK,CACH,kBAAkB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,qBAAqB,EACnE,YAAY,CAAC,EAAE,oBAAoB;IAKrC,UAAU,CAAC,MAAM,EAAE,MAAM,4BAA4B,GAAG,0BAA0B;IAW5E,eAAe,CAAC,MAAM,EAC1B,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,qBAAqB,GAClE,OAAO,CAAC,MAAM,CAAC;IAOZ,QAAQ,CAAC,MAAM,EACnB,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,qBAAqB,GAClE,OAAO,CAAC,MAAM,CAAC;CAWnB"}
1
+ {"version":3,"file":"bean.database.d.ts","sourceRoot":"","sources":["../../src/bean/bean.database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAA6B,MAAM,MAAM,CAAC;AAG3D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EACV,4BAA4B,EAC5B,qBAAqB,EACrB,OAAO,EACR,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,qBACa,YAAa,SAAQ,QAAQ;IACxC,IAAI,OAAO,0CAEV;IAED,SAAS,CACP,kBAAkB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,qBAAqB,EACnE,YAAY,CAAC,EAAE,oBAAoB;IAcrC,KAAK,CACH,kBAAkB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,qBAAqB,EACnE,YAAY,CAAC,EAAE,oBAAoB;IAKrC,UAAU,CAAC,MAAM,EAAE,MAAM,4BAA4B,GAAG,0BAA0B;IAW5E,eAAe,CAAC,MAAM,EAC1B,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,qBAAqB,GAClE,OAAO,CAAC,MAAM,CAAC;IAOZ,QAAQ,CAAC,MAAM,EACnB,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,qBAAqB,GAClE,OAAO,CAAC,MAAM,CAAC;CAWnB"}
package/dist/index.js CHANGED
@@ -2251,8 +2251,12 @@ let ServiceDatabaseDialectBase = class ServiceDatabaseDialectBase extends BeanBa
2251
2251
  if (this._columnTypePrefixes(type, TIMESTAMP_COLUMN_TYPE_PREFIXES) && value === 'CURRENT_TIMESTAMP') {
2252
2252
  return undefined; // new Date();
2253
2253
  }
2254
- if (this._columnTypePrefixes(type, FLOAT_COLUMN_TYPE_PREFIXES)) return this._safeNumber(value);
2255
- if (this._columnTypePrefixes(type, INTEGER_COLUMN_TYPE_PREFIXES)) return this._safeNumber(value);
2254
+ if (this._columnTypePrefixes(type, FLOAT_COLUMN_TYPE_PREFIXES)) {
2255
+ return this._safeNumber(value);
2256
+ }
2257
+ if (this._columnTypePrefixes(type, INTEGER_COLUMN_TYPE_PREFIXES)) {
2258
+ return this._safeNumber(value);
2259
+ }
2256
2260
  // pg: NULL::character varying
2257
2261
  if (value.indexOf('NULL::') === 0) return undefined;
2258
2262
  return value;
@@ -3874,6 +3878,45 @@ class BeanModelCache extends BeanModelCrud {
3874
3878
  }
3875
3879
  return item;
3876
3880
  }
3881
+ async getForUpdate(where, options) {
3882
+ if (!this.db.inTransaction) {
3883
+ throw new Error('model error: getForUpdate requires an active transaction');
3884
+ }
3885
+ const optionsLock = Object.assign({}, options, {
3886
+ disableCacheEntity: true,
3887
+ disableCacheQuery: true
3888
+ });
3889
+ const relations = this.relations.handleRelationsCollection(optionsLock);
3890
+ const [options2, refKeys] = this.relations.prepareColumnsByRelations(relations, optionsLock);
3891
+ let item = await this.__getForUpdate_raw(undefined, where, options2);
3892
+ if (!item) return item;
3893
+ item = await this.relations.handleRelationsOne(relations, item, optionsLock, optionsLock);
3894
+ if (refKeys) {
3895
+ for (const refKey of refKeys) {
3896
+ delete item[refKey];
3897
+ }
3898
+ }
3899
+ return item;
3900
+ }
3901
+ async getByIdForUpdate(id, options) {
3902
+ return await this.getForUpdate({
3903
+ id
3904
+ }, options);
3905
+ }
3906
+ async __getForUpdate_raw(table, where, options) {
3907
+ table = table || this.getTable(where);
3908
+ if (!table) return this.scopeOrm.error.ShouldSpecifyTable.throw();
3909
+ const params = {
3910
+ where,
3911
+ limit: 1
3912
+ };
3913
+ if (options?.columns) {
3914
+ params.columns = options.columns;
3915
+ }
3916
+ const builder = this._select_buildParams(table, params, options).forUpdate();
3917
+ const items = await super._select(table, params, options, builder);
3918
+ return items[0];
3919
+ }
3877
3920
  async __get_raw(table, where, options) {
3878
3921
  // table
3879
3922
  table = table || this.getTable(where);