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.
- package/cli/model/metadata/generate.ts +5 -11
- package/dist/bean/bean.database.d.ts +1 -1
- package/dist/bean/bean.database.d.ts.map +1 -1
- package/dist/index.js +45 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/bean.model/bean.model_cache.d.ts +3 -0
- package/dist/lib/bean.model/bean.model_cache.d.ts.map +1 -1
- package/dist/lib/bean.model/bean.model_meta.d.ts +1 -1
- package/dist/lib/bean.model/bean.model_meta.d.ts.map +1 -1
- package/dist/lib/dto/dtoAggregate.d.ts +1 -1
- package/dist/lib/dto/dtoAggregate.d.ts.map +1 -1
- package/dist/lib/dto/dtoCreate.d.ts +1 -1
- package/dist/lib/dto/dtoCreate.d.ts.map +1 -1
- package/dist/lib/dto/dtoGet.d.ts.map +1 -1
- package/dist/lib/dto/dtoGroup.d.ts +1 -1
- package/dist/lib/dto/dtoGroup.d.ts.map +1 -1
- package/dist/lib/dto/dtoSelectAndCount.d.ts +1 -1
- package/dist/lib/dto/dtoSelectAndCount.d.ts.map +1 -1
- package/dist/lib/dto/dtoUpdate.d.ts +1 -1
- package/dist/lib/dto/dtoUpdate.d.ts.map +1 -1
- package/dist/lib/modelCacheBase.d.ts +1 -1
- package/dist/lib/modelCacheBase.d.ts.map +1 -1
- package/dist/lib/relations.d.ts +1 -1
- package/dist/lib/relations.d.ts.map +1 -1
- package/dist/lib/relationsDynamic.d.ts +1 -1
- package/dist/lib/relationsDynamic.d.ts.map +1 -1
- package/dist/lib/relationsMutate.d.ts +1 -1
- package/dist/lib/relationsMutate.d.ts.map +1 -1
- package/dist/lib/relationsStatic.d.ts +1 -1
- package/dist/lib/relationsStatic.d.ts.map +1 -1
- package/dist/service/database.d.ts +1 -1
- package/dist/service/database.d.ts.map +1 -1
- package/dist/service/databaseDialectBase_.d.ts.map +1 -1
- package/dist/service/db_.d.ts +1 -1
- package/dist/service/db_.d.ts.map +1 -1
- package/dist-cli/model/metadata/generate.js +5 -13
- package/package.json +2 -2
- package/src/bean/bean.database.ts +1 -1
- package/src/bean/schedule.softDeletionPrune.ts +1 -1
- package/src/lib/bean.model/bean.model_cache.ts +52 -0
- package/src/lib/bean.model/bean.model_meta.ts +1 -1
- package/src/lib/dto/dtoAggregate.ts +1 -1
- package/src/lib/dto/dtoCreate.ts +1 -1
- package/src/lib/dto/dtoGet.ts +4 -10
- package/src/lib/dto/dtoGroup.ts +1 -1
- package/src/lib/dto/dtoSelectAndCount.ts +1 -1
- package/src/lib/dto/dtoUpdate.ts +1 -1
- package/src/lib/modelCacheBase.ts +1 -1
- package/src/lib/relations.ts +1 -1
- package/src/lib/relationsDynamic.ts +1 -1
- package/src/lib/relationsMutate.ts +1 -1
- package/src/lib/relationsStatic.ts +1 -1
- package/src/service/database.ts +1 -1
- package/src/service/databaseDialectBase_.ts +10 -3
- 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
|
-
|
|
250
|
-
columns = 'undefined';
|
|
251
|
-
} else {
|
|
252
|
-
columns = 'undefined'; // '\'*\'';
|
|
253
|
-
}
|
|
250
|
+
if (!options?.columns || options.columns.includes('*')) {
|
|
251
|
+
columns = "'*'";
|
|
254
252
|
} else {
|
|
255
|
-
|
|
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;
|
|
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))
|
|
2255
|
-
|
|
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);
|