vona-module-a-orm 5.0.96 → 5.1.2
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/LICENSE +0 -0
- package/cli/entity/metadata/generate.ts +2 -1
- package/cli/model/metadata/generate.ts +6 -2
- package/cli/model/metadata/magic.ts +15 -6
- package/dist/.metadata/index.d.ts +1 -0
- package/dist/.metadata/index.d.ts.map +1 -0
- package/dist/.metadata/locales.d.ts +1 -0
- package/dist/.metadata/locales.d.ts.map +1 -0
- package/dist/.metadata/this.d.ts +1 -0
- package/dist/.metadata/this.d.ts.map +1 -0
- package/dist/bean/aopMethod.transaction.d.ts +2 -1
- package/dist/bean/aopMethod.transaction.d.ts.map +1 -0
- package/dist/bean/bean.database.d.ts +2 -1
- package/dist/bean/bean.database.d.ts.map +1 -0
- package/dist/bean/bean.databaseDialectBase.d.ts +2 -1
- package/dist/bean/bean.databaseDialectBase.d.ts.map +1 -0
- package/dist/bean/bean.model/bean.model_cache.d.ts +5 -1
- package/dist/bean/bean.model/bean.model_cache.d.ts.map +1 -0
- package/dist/bean/bean.model/bean.model_crud.d.ts +1 -0
- package/dist/bean/bean.model/bean.model_crud.d.ts.map +1 -0
- package/dist/bean/bean.model/bean.model_crud_inner.d.ts +3 -1
- package/dist/bean/bean.model/bean.model_crud_inner.d.ts.map +1 -0
- package/dist/bean/bean.model/bean.model_crud_table.d.ts +1 -0
- package/dist/bean/bean.model/bean.model_crud_table.d.ts.map +1 -0
- package/dist/bean/bean.model/bean.model_knex.d.ts +1 -0
- package/dist/bean/bean.model/bean.model_knex.d.ts.map +1 -0
- package/dist/bean/bean.model/bean.model_meta.d.ts +3 -2
- package/dist/bean/bean.model/bean.model_meta.d.ts.map +1 -0
- package/dist/bean/bean.model/bean.model_utils.d.ts +5 -3
- package/dist/bean/bean.model/bean.model_utils.d.ts.map +1 -0
- package/dist/bean/bean.model/bean.model_view.d.ts +1 -0
- package/dist/bean/bean.model/bean.model_view.d.ts.map +1 -0
- package/dist/bean/bean.model.d.ts +1 -0
- package/dist/bean/bean.model.d.ts.map +1 -0
- package/dist/bean/bean.modelBase.d.ts +1 -0
- package/dist/bean/bean.modelBase.d.ts.map +1 -0
- package/dist/bean/broadcast.columnsClear.d.ts +2 -1
- package/dist/bean/broadcast.columnsClear.d.ts.map +1 -0
- package/dist/bean/event.clientNameReal.d.ts +2 -1
- package/dist/bean/event.clientNameReal.d.ts.map +1 -0
- package/dist/bean/event.columnsClear.d.ts +2 -1
- package/dist/bean/event.columnsClear.d.ts.map +1 -0
- package/dist/bean/hmr.entity.d.ts +1 -0
- package/dist/bean/hmr.entity.d.ts.map +1 -0
- package/dist/bean/hmr.model.d.ts +1 -0
- package/dist/bean/hmr.model.d.ts.map +1 -0
- package/dist/bean/queue.doubleDelete.d.ts +2 -1
- package/dist/bean/queue.doubleDelete.d.ts.map +1 -0
- package/dist/bean/schedule.softDeletionPrune.d.ts +1 -0
- package/dist/bean/schedule.softDeletionPrune.d.ts.map +1 -0
- package/dist/common/buildWhere.d.ts +1 -0
- package/dist/common/buildWhere.d.ts.map +1 -0
- package/dist/common/checkWhere.d.ts +1 -0
- package/dist/common/checkWhere.d.ts.map +1 -0
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/utils.d.ts +2 -1
- package/dist/common/utils.d.ts.map +1 -0
- package/dist/config/config.d.ts +1 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/errors.d.ts +1 -0
- package/dist/config/errors.d.ts.map +1 -0
- package/dist/config/locale/en-us.d.ts +1 -0
- package/dist/config/locale/en-us.d.ts.map +1 -0
- package/dist/config/locale/zh-cn.d.ts +1 -0
- package/dist/config/locale/zh-cn.d.ts.map +1 -0
- package/dist/extend/index.d.ts +1 -0
- package/dist/extend/index.d.ts.map +1 -0
- package/dist/extend/schemaBuilder.d.ts +1 -0
- package/dist/extend/schemaBuilder.d.ts.map +1 -0
- package/dist/extend/tableBuilder.d.ts +1 -0
- package/dist/extend/tableBuilder.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +94 -15
- package/dist/index.js.map +1 -0
- package/dist/lib/const.d.ts +1 -0
- package/dist/lib/const.d.ts.map +1 -0
- package/dist/lib/databaseDialect.d.ts +1 -0
- package/dist/lib/databaseDialect.d.ts.map +1 -0
- package/dist/lib/dto/dto.d.ts +3 -0
- package/dist/lib/dto/dto.d.ts.map +1 -0
- package/dist/lib/dto/dtoAggregate.d.ts +3 -2
- package/dist/lib/dto/dtoAggregate.d.ts.map +1 -0
- package/dist/lib/dto/dtoCreate.d.ts +2 -1
- package/dist/lib/dto/dtoCreate.d.ts.map +1 -0
- package/dist/lib/dto/dtoGet.d.ts +2 -1
- package/dist/lib/dto/dtoGet.d.ts.map +1 -0
- package/dist/lib/dto/dtoGroup.d.ts +2 -1
- package/dist/lib/dto/dtoGroup.d.ts.map +1 -0
- package/dist/lib/dto/dtoListAndCount.d.ts +4 -0
- package/dist/lib/dto/dtoListAndCount.d.ts.map +1 -0
- package/dist/lib/dto/dtoMutate.d.ts +3 -2
- package/dist/lib/dto/dtoMutate.d.ts.map +1 -0
- package/dist/lib/dto/dtoQuery.d.ts +1 -0
- package/dist/lib/dto/dtoQuery.d.ts.map +1 -0
- package/dist/lib/dto/dtoQueryPage.d.ts +1 -0
- package/dist/lib/dto/dtoQueryPage.d.ts.map +1 -0
- package/dist/lib/dto/dtoSelectAndCount.d.ts +2 -1
- package/dist/lib/dto/dtoSelectAndCount.d.ts.map +1 -0
- package/dist/lib/dto/dtoUpdate.d.ts +2 -1
- package/dist/lib/dto/dtoUpdate.d.ts.map +1 -0
- package/dist/lib/dto/index.d.ts +1 -0
- package/dist/lib/dto/index.d.ts.map +1 -0
- package/dist/lib/entity.d.ts +1 -0
- package/dist/lib/entity.d.ts.map +1 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/model.d.ts +1 -0
- package/dist/lib/model.d.ts.map +1 -0
- package/dist/lib/modelCacheBase.d.ts +2 -1
- package/dist/lib/modelCacheBase.d.ts.map +1 -0
- package/dist/lib/relations.d.ts +5 -4
- package/dist/lib/relations.d.ts.map +1 -0
- package/dist/lib/relationsDynamic.d.ts +5 -4
- package/dist/lib/relationsDynamic.d.ts.map +1 -0
- package/dist/lib/relationsMutate.d.ts +4 -3
- package/dist/lib/relationsMutate.d.ts.map +1 -0
- package/dist/lib/relationsStatic.d.ts +1 -0
- package/dist/lib/relationsStatic.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/main.d.ts +2 -1
- package/dist/main.d.ts.map +1 -0
- package/dist/service/cacheEntity_.d.ts +1 -0
- package/dist/service/cacheEntity_.d.ts.map +1 -0
- package/dist/service/cacheQuery_.d.ts +1 -0
- package/dist/service/cacheQuery_.d.ts.map +1 -0
- package/dist/service/columnsCache_.d.ts +2 -1
- package/dist/service/columnsCache_.d.ts.map +1 -0
- package/dist/service/columns_.d.ts +2 -1
- package/dist/service/columns_.d.ts.map +1 -0
- package/dist/service/database.d.ts +2 -1
- package/dist/service/database.d.ts.map +1 -0
- package/dist/service/databaseAsyncLocalStorage_.d.ts +1 -0
- package/dist/service/databaseAsyncLocalStorage_.d.ts.map +1 -0
- package/dist/service/databaseClient_.d.ts +2 -1
- package/dist/service/databaseClient_.d.ts.map +1 -0
- package/dist/service/db_.d.ts +2 -1
- package/dist/service/db_.d.ts.map +1 -0
- package/dist/service/entityResolver_.d.ts +1 -0
- package/dist/service/entityResolver_.d.ts.map +1 -0
- package/dist/service/modelResolver_.d.ts +1 -0
- package/dist/service/modelResolver_.d.ts.map +1 -0
- package/dist/service/relations_.d.ts +2 -1
- package/dist/service/relations_.d.ts.map +1 -0
- package/dist/service/transactionAsyncLocalStorage_.d.ts +1 -0
- package/dist/service/transactionAsyncLocalStorage_.d.ts.map +1 -0
- package/dist/service/transactionConsistency/342/200/214_.d.ts +1 -0
- package/dist/service/transactionConsistency/342/200/214_.d.ts.map +1 -0
- package/dist/service/transactionFiber_.d.ts +1 -0
- package/dist/service/transactionFiber_.d.ts.map +1 -0
- package/dist/service/transactionState_.d.ts +2 -1
- package/dist/service/transactionState_.d.ts.map +1 -0
- package/dist/service/transaction_.d.ts +2 -1
- package/dist/service/transaction_.d.ts.map +1 -0
- package/dist/types/columns.d.ts +1 -0
- package/dist/types/columns.d.ts.map +1 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/database.d.ts +1 -0
- package/dist/types/database.d.ts.map +1 -0
- package/dist/types/depth.d.ts +1 -0
- package/dist/types/depth.d.ts.map +1 -0
- package/dist/types/dialect.d.ts +1 -0
- package/dist/types/dialect.d.ts.map +1 -0
- package/dist/types/dto/dtoAggregate.d.ts +1 -0
- package/dist/types/dto/dtoAggregate.d.ts.map +1 -0
- package/dist/types/dto/dtoGet.d.ts +3 -2
- package/dist/types/dto/dtoGet.d.ts.map +1 -0
- package/dist/types/dto/dtoGroup.d.ts +1 -0
- package/dist/types/dto/dtoGroup.d.ts.map +1 -0
- package/dist/types/dto/dtoListAndCount.d.ts +8 -0
- package/dist/types/dto/dtoListAndCount.d.ts.map +1 -0
- package/dist/types/dto/dtoMutate.d.ts +8 -9
- package/dist/types/dto/dtoMutate.d.ts.map +1 -0
- package/dist/types/dto/dtoQueryBase.d.ts +1 -0
- package/dist/types/dto/dtoQueryBase.d.ts.map +1 -0
- package/dist/types/dto/dtoQueryPageBase.d.ts +1 -0
- package/dist/types/dto/dtoQueryPageBase.d.ts.map +1 -0
- package/dist/types/dto/dtoSelectAndCount.d.ts +2 -1
- package/dist/types/dto/dtoSelectAndCount.d.ts.map +1 -0
- package/dist/types/dto/index.d.ts +2 -0
- package/dist/types/dto/index.d.ts.map +1 -0
- package/dist/types/entity.d.ts +1 -0
- package/dist/types/entity.d.ts.map +1 -0
- package/dist/types/entityBase.d.ts +1 -0
- package/dist/types/entityBase.d.ts.map +1 -0
- package/dist/types/entityBaseEmpty.d.ts +1 -0
- package/dist/types/entityBaseEmpty.d.ts.map +1 -0
- package/dist/types/entityBaseInner.d.ts +1 -0
- package/dist/types/entityBaseInner.d.ts.map +1 -0
- package/dist/types/entityBaseSimple.d.ts +1 -0
- package/dist/types/entityBaseSimple.d.ts.map +1 -0
- package/dist/types/extra.d.ts +1 -0
- package/dist/types/extra.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/logger.d.ts +1 -0
- package/dist/types/logger.d.ts.map +1 -0
- package/dist/types/model.d.ts +3 -2
- package/dist/types/model.d.ts.map +1 -0
- package/dist/types/modelAggr.d.ts +2 -1
- package/dist/types/modelAggr.d.ts.map +1 -0
- package/dist/types/modelCount.d.ts +2 -1
- package/dist/types/modelCount.d.ts.map +1 -0
- package/dist/types/modelGeneral.d.ts +4 -3
- package/dist/types/modelGeneral.d.ts.map +1 -0
- package/dist/types/modelGroup.d.ts +2 -1
- package/dist/types/modelGroup.d.ts.map +1 -0
- package/dist/types/modelIncrement.d.ts +19 -0
- package/dist/types/modelIncrement.d.ts.map +1 -0
- package/dist/types/modelWhere.d.ts +2 -1
- package/dist/types/modelWhere.d.ts.map +1 -0
- package/dist/types/onion/databaseDialect.d.ts +1 -0
- package/dist/types/onion/databaseDialect.d.ts.map +1 -0
- package/dist/types/onion/entity.d.ts +1 -0
- package/dist/types/onion/entity.d.ts.map +1 -0
- package/dist/types/onion/index.d.ts +1 -0
- package/dist/types/onion/index.d.ts.map +1 -0
- package/dist/types/onion/model.d.ts +1 -0
- package/dist/types/onion/model.d.ts.map +1 -0
- package/dist/types/onion/table.d.ts +1 -0
- package/dist/types/onion/table.d.ts.map +1 -0
- package/dist/types/relations.d.ts +10 -11
- package/dist/types/relations.d.ts.map +1 -0
- package/dist/types/relationsAggr.d.ts +2 -1
- package/dist/types/relationsAggr.d.ts.map +1 -0
- package/dist/types/relationsColumns.d.ts +5 -4
- package/dist/types/relationsColumns.d.ts.map +1 -0
- package/dist/types/relationsDef.d.ts +5 -4
- package/dist/types/relationsDef.d.ts.map +1 -0
- package/dist/types/relationsDefDynamic.d.ts +6 -5
- package/dist/types/relationsDefDynamic.d.ts.map +1 -0
- package/dist/types/relationsDefMutate.d.ts +1 -0
- package/dist/types/relationsDefMutate.d.ts.map +1 -0
- package/dist/types/relationsGroup.d.ts +1 -0
- package/dist/types/relationsGroup.d.ts.map +1 -0
- package/dist/types/relationsMutate.d.ts +4 -3
- package/dist/types/relationsMutate.d.ts.map +1 -0
- package/dist/types/relationsTables.d.ts +1 -0
- package/dist/types/relationsTables.d.ts.map +1 -0
- package/dist/types/transaction.d.ts +1 -0
- package/dist/types/transaction.d.ts.map +1 -0
- package/dist-cli/entity/metadata/generate.js +1 -1
- package/dist-cli/model/metadata/generate.js +4 -2
- package/dist-cli/model/metadata/magic.js +2 -2
- package/package.json +40 -36
- package/src/.metadata/index.ts +348 -0
- package/src/.metadata/locales.ts +13 -0
- package/src/.metadata/this.ts +2 -0
- package/src/bean/aopMethod.transaction.ts +18 -0
- package/src/bean/bean.database.ts +57 -0
- package/src/bean/bean.databaseDialectBase.ts +149 -0
- package/src/bean/bean.model/bean.model_cache.ts +815 -0
- package/src/bean/bean.model/bean.model_crud.ts +46 -0
- package/src/bean/bean.model/bean.model_crud_inner.ts +281 -0
- package/src/bean/bean.model/bean.model_crud_table.ts +59 -0
- package/src/bean/bean.model/bean.model_knex.ts +60 -0
- package/src/bean/bean.model/bean.model_meta.ts +204 -0
- package/src/bean/bean.model/bean.model_utils.ts +275 -0
- package/src/bean/bean.model/bean.model_view.ts +129 -0
- package/src/bean/bean.model.ts +8 -0
- package/src/bean/bean.modelBase.ts +8 -0
- package/src/bean/broadcast.columnsClear.ts +24 -0
- package/src/bean/event.clientNameReal.ts +10 -0
- package/src/bean/event.columnsClear.ts +13 -0
- package/src/bean/hmr.entity.ts +12 -0
- package/src/bean/hmr.model.ts +16 -0
- package/src/bean/queue.doubleDelete.ts +29 -0
- package/src/bean/schedule.softDeletionPrune.ts +45 -0
- package/src/common/buildWhere.ts +238 -0
- package/src/common/checkWhere.ts +128 -0
- package/src/common/index.ts +3 -0
- package/src/common/utils.ts +74 -0
- package/src/config/config.ts +60 -0
- package/src/config/errors.ts +3 -0
- package/src/config/locale/en-us.ts +8 -0
- package/src/config/locale/zh-cn.ts +8 -0
- package/src/extend/index.ts +12 -0
- package/src/extend/schemaBuilder.ts +29 -0
- package/src/extend/tableBuilder.ts +87 -0
- package/src/index.ts +10 -0
- package/src/lib/const.ts +58 -0
- package/src/lib/databaseDialect.ts +7 -0
- package/src/lib/dto/dto.ts +21 -0
- package/src/lib/dto/dtoAggregate.ts +51 -0
- package/src/lib/dto/dtoCreate.ts +14 -0
- package/src/lib/dto/dtoGet.ts +159 -0
- package/src/lib/dto/dtoGroup.ts +57 -0
- package/src/lib/dto/dtoListAndCount.ts +16 -0
- package/src/lib/dto/dtoMutate.ts +82 -0
- package/src/lib/dto/dtoQuery.ts +9 -0
- package/src/lib/dto/dtoQueryPage.ts +9 -0
- package/src/lib/dto/dtoSelectAndCount.ts +20 -0
- package/src/lib/dto/dtoUpdate.ts +16 -0
- package/src/lib/dto/index.ts +1 -0
- package/src/lib/entity.ts +25 -0
- package/src/lib/index.ts +9 -0
- package/src/lib/model.ts +7 -0
- package/src/lib/modelCacheBase.ts +98 -0
- package/src/lib/relations.ts +118 -0
- package/src/lib/relationsDynamic.ts +75 -0
- package/src/lib/relationsMutate.ts +60 -0
- package/src/lib/relationsStatic.ts +18 -0
- package/src/lib/utils.ts +45 -0
- package/src/main.ts +79 -0
- package/src/service/cacheEntity_.ts +37 -0
- package/src/service/cacheQuery_.ts +20 -0
- package/src/service/columnsCache_.ts +69 -0
- package/src/service/columns_.ts +64 -0
- package/src/service/database.ts +126 -0
- package/src/service/databaseAsyncLocalStorage_.ts +29 -0
- package/src/service/databaseClient_.ts +124 -0
- package/src/service/db_.ts +77 -0
- package/src/service/entityResolver_.ts +25 -0
- package/src/service/modelResolver_.ts +19 -0
- package/src/service/relations_.ts +444 -0
- package/src/service/transactionAsyncLocalStorage_.ts +31 -0
- package/src/service/transactionConsistency/342/200/214_.ts +37 -0
- package/src/service/transactionFiber_.ts +42 -0
- package/src/service/transactionState_.ts +35 -0
- package/src/service/transaction_.ts +147 -0
- package/src/types/columns.ts +8 -0
- package/src/types/config.ts +23 -0
- package/src/types/database.ts +64 -0
- package/src/types/depth.ts +55 -0
- package/src/types/dialect.ts +17 -0
- package/src/types/dto/dtoAggregate.ts +3 -0
- package/src/types/dto/dtoGet.ts +23 -0
- package/src/types/dto/dtoGroup.ts +3 -0
- package/src/types/dto/dtoListAndCount.ts +7 -0
- package/src/types/dto/dtoMutate.ts +231 -0
- package/src/types/dto/dtoQueryBase.ts +18 -0
- package/src/types/dto/dtoQueryPageBase.ts +18 -0
- package/src/types/dto/dtoSelectAndCount.ts +11 -0
- package/src/types/dto/index.ts +8 -0
- package/src/types/entity.ts +15 -0
- package/src/types/entityBase.ts +11 -0
- package/src/types/entityBaseEmpty.ts +1 -0
- package/src/types/entityBaseInner.ts +18 -0
- package/src/types/entityBaseSimple.ts +9 -0
- package/src/types/extra.ts +23 -0
- package/src/types/index.ts +30 -0
- package/src/types/logger.ts +6 -0
- package/src/types/model.ts +152 -0
- package/src/types/modelAggr.ts +69 -0
- package/src/types/modelCount.ts +40 -0
- package/src/types/modelGeneral.ts +61 -0
- package/src/types/modelGroup.ts +48 -0
- package/src/types/modelIncrement.ts +50 -0
- package/src/types/modelWhere.ts +85 -0
- package/src/types/onion/databaseDialect.ts +22 -0
- package/src/types/onion/entity.ts +33 -0
- package/src/types/onion/index.ts +4 -0
- package/src/types/onion/model.ts +68 -0
- package/src/types/onion/table.ts +1 -0
- package/src/types/relations.ts +243 -0
- package/src/types/relationsAggr.ts +31 -0
- package/src/types/relationsColumns.ts +116 -0
- package/src/types/relationsDef.ts +152 -0
- package/src/types/relationsDefDynamic.ts +128 -0
- package/src/types/relationsDefMutate.ts +11 -0
- package/src/types/relationsGroup.ts +58 -0
- package/src/types/relationsMutate.ts +118 -0
- package/src/types/relationsTables.ts +38 -0
- package/src/types/transaction.ts +23 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Constructable, OmitNever, VonaContext } from 'vona';
|
|
2
|
+
import type { ServiceOnion } from 'vona-module-a-onion';
|
|
3
|
+
import type { IDecoratorSummerCacheOptions } from 'vona-module-a-summer';
|
|
4
|
+
|
|
5
|
+
import type { IDatabaseClientRecord } from '../database.ts';
|
|
6
|
+
import type { EntityBaseEmpty } from '../entityBaseEmpty.ts';
|
|
7
|
+
import type { TypeModelColumnsStrict } from '../modelWhere.ts';
|
|
8
|
+
import type { TypeModelClassLikeGeneral } from '../relations.ts';
|
|
9
|
+
import type { ITableRecord } from './table.ts';
|
|
10
|
+
|
|
11
|
+
export interface IModelRecord {}
|
|
12
|
+
export interface IModelClassRecord {}
|
|
13
|
+
|
|
14
|
+
export type TypeDynamicTableName = (ctx: VonaContext, where: any | undefined, defaultTable: keyof ITableRecord, modelInstance: any) => string;
|
|
15
|
+
|
|
16
|
+
export type TypeDynamicClientName = (ctx: VonaContext, modelInstance: any) => keyof IDatabaseClientRecord;
|
|
17
|
+
|
|
18
|
+
export type TypeModelsClearedByFn = (ctx: VonaContext, modelTarget: any, modelSource: any) => Promise<void>;
|
|
19
|
+
|
|
20
|
+
export type TypeSoftDeletionPruneHandler = (ctx: VonaContext, modelInstance: any, options: ISoftDeletionPruneHandlerOptions) => Promise<void>;
|
|
21
|
+
|
|
22
|
+
export interface ISoftDeletionPruneHandlerOptions {
|
|
23
|
+
expired: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface ISoftDeletionPrune {
|
|
27
|
+
handler?: TypeSoftDeletionPruneHandler;
|
|
28
|
+
expired?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type TypeModelOptionsTable = TypeDynamicTableName | keyof ITableRecord;
|
|
32
|
+
|
|
33
|
+
export interface IDecoratorModelOptions<TRecord extends EntityBaseEmpty = any> {
|
|
34
|
+
entity?: Constructable<TRecord>;
|
|
35
|
+
table?: TypeModelOptionsTable;
|
|
36
|
+
disableDeleted?: boolean;
|
|
37
|
+
disableInstance?: boolean;
|
|
38
|
+
disableCreateTime?: boolean;
|
|
39
|
+
disableUpdateTime?: boolean;
|
|
40
|
+
softDeletionPrune?: ISoftDeletionPrune | boolean;
|
|
41
|
+
cache?: {
|
|
42
|
+
query?: IDecoratorSummerCacheOptions | false;
|
|
43
|
+
entity?: IDecoratorSummerCacheOptions | false;
|
|
44
|
+
keysAux?: TypeModelColumnsStrict<TRecord>;
|
|
45
|
+
modelsClear?: TypeModelClassLikeGeneral | TypeModelClassLikeGeneral[];
|
|
46
|
+
modelsClearedBy?: keyof IModelClassRecord | (keyof IModelClassRecord)[]; // TypeModelClassLikeGeneral | TypeModelClassLikeGeneral[];
|
|
47
|
+
modelsClearedByFn?: TypeModelsClearedByFn;
|
|
48
|
+
};
|
|
49
|
+
client?: TypeDynamicClientName | keyof IDatabaseClientRecord;
|
|
50
|
+
// should not use TypeModelRelations or {}
|
|
51
|
+
relations?: Record<never, never>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
declare module 'vona-module-a-onion' {
|
|
55
|
+
export interface BeanOnion {
|
|
56
|
+
model: ServiceOnion<IModelRecord>;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
declare module 'vona' {
|
|
61
|
+
export interface ConfigOnions {
|
|
62
|
+
model: OmitNever<IModelRecord>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface IBeanSceneRecord {
|
|
66
|
+
model: never;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export interface ITableRecord {}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import type { Constructable, OmitNever } from 'vona';
|
|
2
|
+
|
|
3
|
+
import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
4
|
+
import type { TypeDepthPrev, TypeDepthPrevMax } from './depth.ts';
|
|
5
|
+
import type { IDecoratorModelOptions, IModelClassRecord } from './onion/model.ts';
|
|
6
|
+
import type { TypeModelAggrRelationResultAggrs, TypeUtilGetAggrsFromRelationAndIncludeWrapper } from './relationsAggr.ts';
|
|
7
|
+
import type { TypeModelGroupRelationResultGroups, TypeUtilGetGroupsFromRelationAndIncludeWrapper } from './relationsGroup.ts';
|
|
8
|
+
|
|
9
|
+
export const SymbolKeyEntity = Symbol('$entity');
|
|
10
|
+
export const SymbolKeyEntityMeta = Symbol('$entityMeta');
|
|
11
|
+
export const SymbolKeyModelOptions = Symbol('$modelOptions');
|
|
12
|
+
export type TypeSymbolKeyEntity = typeof SymbolKeyEntity;
|
|
13
|
+
export type TypeSymbolKeyEntityMeta = typeof SymbolKeyEntityMeta;
|
|
14
|
+
export type TypeSymbolKeyModelOptions = typeof SymbolKeyModelOptions;
|
|
15
|
+
|
|
16
|
+
export type TypeModelOfModelLike<
|
|
17
|
+
ModelLike extends
|
|
18
|
+
| (() => Constructable<BeanModelMeta>)
|
|
19
|
+
| Constructable<BeanModelMeta>
|
|
20
|
+
| (() => BeanModelMeta)
|
|
21
|
+
| BeanModelMeta
|
|
22
|
+
| keyof IModelClassRecord,
|
|
23
|
+
> = ModelLike extends keyof IModelClassRecord
|
|
24
|
+
? IModelClassRecord[ModelLike]
|
|
25
|
+
: ModelLike extends () => Constructable<infer MODEL>
|
|
26
|
+
? MODEL
|
|
27
|
+
: ModelLike extends Constructable<infer MODEL>
|
|
28
|
+
? MODEL
|
|
29
|
+
: ModelLike extends () => infer MODEL
|
|
30
|
+
? MODEL
|
|
31
|
+
: ModelLike;
|
|
32
|
+
|
|
33
|
+
export type TypeModelClassLike<MODEL extends BeanModelMeta | keyof IModelClassRecord> = MODEL extends BeanModelMeta
|
|
34
|
+
? (() => Constructable<MODEL>) | Constructable<MODEL>
|
|
35
|
+
: MODEL;
|
|
36
|
+
|
|
37
|
+
export type TypeModelClassLikeGeneral<MODEL extends BeanModelMeta = BeanModelMeta> =
|
|
38
|
+
| (() => Constructable<MODEL>)
|
|
39
|
+
| Constructable<MODEL>
|
|
40
|
+
| (() => BeanModelMeta)
|
|
41
|
+
| BeanModelMeta
|
|
42
|
+
| keyof IModelClassRecord;
|
|
43
|
+
|
|
44
|
+
export type TypeModelsClassLikeGeneral<MODEL extends BeanModelMeta = BeanModelMeta> =
|
|
45
|
+
| TypeModelClassLikeGeneral<MODEL>
|
|
46
|
+
| Array<TypeModelClassLikeGeneral<MODEL>>;
|
|
47
|
+
|
|
48
|
+
export type TypeModelParamsInclude<MODEL extends BeanModelMeta | undefined> = TypeModelParamsIncludeByModelOptions<TypeUtilGetModelOptions<MODEL>>;
|
|
49
|
+
|
|
50
|
+
export type TypeModelParamsIncludeByModelOptions<ModelOptions extends IDecoratorModelOptions | undefined> =
|
|
51
|
+
ModelOptions extends IDecoratorModelOptions
|
|
52
|
+
? {
|
|
53
|
+
[relationName in keyof ModelOptions['relations']]?: TypeModelParamsRelationOptions<ModelOptions['relations'][relationName]>;
|
|
54
|
+
}
|
|
55
|
+
: never;
|
|
56
|
+
|
|
57
|
+
export type TypeModelParamsRelationOptions<Relation> =
|
|
58
|
+
| boolean
|
|
59
|
+
| (Omit<TypeUtilGetRelationOptions<Relation>, 'autoload'> & {
|
|
60
|
+
include?: TypeModelParamsInclude<TypeUtilGetRelationModel<Relation>>;
|
|
61
|
+
with?: Record<string, unknown>;
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export type TypeUtilGetRelationType<Relation> = Relation extends { type?: infer TYPE } ? TYPE : undefined;
|
|
65
|
+
export type TypeUtilGetRelationKey<Relation> = Relation extends { key?: infer KEY } ? KEY : undefined;
|
|
66
|
+
export type TypeUtilGetRelationModel<Relation> = Relation extends {
|
|
67
|
+
model?: (() => Constructable<infer MODEL extends BeanModelMeta>) | Constructable<infer MODEL extends BeanModelMeta>;
|
|
68
|
+
}
|
|
69
|
+
? MODEL
|
|
70
|
+
: Relation extends { model?: (() => infer MODEL extends BeanModelMeta) | (infer MODEL extends BeanModelMeta) }
|
|
71
|
+
? MODEL
|
|
72
|
+
: Relation extends { model?: () => Constructable<infer MODEL extends BeanModelMeta> }
|
|
73
|
+
? MODEL
|
|
74
|
+
: Relation extends { model?: () => infer MODEL extends BeanModelMeta }
|
|
75
|
+
? MODEL
|
|
76
|
+
: Relation extends { model?: Constructable<infer MODEL extends BeanModelMeta> }
|
|
77
|
+
? MODEL
|
|
78
|
+
: Relation extends { model?: infer MODEL extends BeanModelMeta }
|
|
79
|
+
? MODEL
|
|
80
|
+
: Relation extends { model?: infer MODELNAME extends keyof IModelClassRecord }
|
|
81
|
+
? IModelClassRecord[MODELNAME]
|
|
82
|
+
: undefined;
|
|
83
|
+
|
|
84
|
+
export type TypeUtilGetRelationModelOptions<Relation> = TypeUtilGetModelOptions<TypeUtilGetRelationModel<Relation>>;
|
|
85
|
+
export type TypeUtilGetRelationEntity<Relation> = TypeUtilGetModelEntity<TypeUtilGetRelationModel<Relation>>;
|
|
86
|
+
export type TypeUtilGetRelationEntityMeta<Relation> = TypeUtilGetModelEntityMeta<TypeUtilGetRelationModel<Relation>>;
|
|
87
|
+
export type TypeUtilGetRelationOptions<Relation> = Relation extends { options?: infer OPTIONS } ? OPTIONS : undefined;
|
|
88
|
+
export type TypeUtilGetRelationOptionsAutoload<Relation> = Relation extends { options?: { autoload?: infer AUTOLOAD } } ? AUTOLOAD : undefined;
|
|
89
|
+
export type TypeUtilGetRelationOptionsColumns<Relation> = Relation extends { options?: { columns?: infer COLUMNS } } ? COLUMNS : undefined;
|
|
90
|
+
export type TypeUtilGetRelationOptionsAggrs<Relation> = Relation extends { options?: { aggrs?: infer Aggrs } } ? Aggrs : undefined;
|
|
91
|
+
export type TypeUtilGetRelationOptionsGroups<Relation> = Relation extends { options?: { groups?: infer Groups } } ? Groups : undefined;
|
|
92
|
+
export type TypeUtilGetModelOptions<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta
|
|
93
|
+
? Model[TypeSymbolKeyModelOptions]
|
|
94
|
+
: undefined;
|
|
95
|
+
export type TypeUtilGetModelEntity<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model[TypeSymbolKeyEntity] : undefined;
|
|
96
|
+
export type TypeUtilGetModelEntityMeta<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta
|
|
97
|
+
? Model[TypeSymbolKeyEntityMeta]
|
|
98
|
+
: undefined;
|
|
99
|
+
export type TypeUtilGetModelOnionName<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model['$onionName'] : undefined;
|
|
100
|
+
|
|
101
|
+
export type TypeUtilGetRelationEntityByType<
|
|
102
|
+
Relation,
|
|
103
|
+
IncludeWrapper extends {} | undefined | unknown,
|
|
104
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
105
|
+
> = TypeUtilGetEntityByType<
|
|
106
|
+
TypeUtilGetRelationEntity<Relation>,
|
|
107
|
+
TypeUtilGetRelationType<Relation>,
|
|
108
|
+
TypeUtilGetRelationModel<Relation>,
|
|
109
|
+
IncludeWrapper,
|
|
110
|
+
TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>,
|
|
111
|
+
TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>,
|
|
112
|
+
TypeUtilGetGroupsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>,
|
|
113
|
+
Depth
|
|
114
|
+
>;
|
|
115
|
+
|
|
116
|
+
export type TypeUtilGetEntityByType<
|
|
117
|
+
TRecord,
|
|
118
|
+
TYPE,
|
|
119
|
+
TModel extends BeanModelMeta | undefined,
|
|
120
|
+
IncludeWrapper extends {} | undefined | unknown,
|
|
121
|
+
Columns,
|
|
122
|
+
Aggrs,
|
|
123
|
+
Groups,
|
|
124
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
125
|
+
> = TYPE extends 'hasMany' | 'belongsToMany'
|
|
126
|
+
? Groups extends string | string[]
|
|
127
|
+
? Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs, Groups>>
|
|
128
|
+
: Aggrs extends {}
|
|
129
|
+
? TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs> | undefined
|
|
130
|
+
: Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns>>
|
|
131
|
+
: [Depth] extends [never]
|
|
132
|
+
? undefined
|
|
133
|
+
: TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, undefined, undefined, TypeDepthPrev[Depth]> | undefined;
|
|
134
|
+
|
|
135
|
+
export type TypeUtilGetParamsAggrs<TParams> = TParams extends { aggrs?: infer Aggrs } ? Aggrs : undefined;
|
|
136
|
+
export type TypeUtilGetParamsGroups<TParams> = TParams extends { groups?: infer Groups } ? Groups : undefined; // not use Groups extends string |string[]
|
|
137
|
+
export type TypeUtilGetParamsInlcude<TParams> = TParams extends { include?: infer INCLUDE } ? INCLUDE : undefined;
|
|
138
|
+
export type TypeUtilGetParamsWith<TParams> = TParams extends { with?: infer WITH } ? WITH : undefined;
|
|
139
|
+
export type TypeUtilGetParamsColumns<TParams> = TParams extends { columns?: infer COLUMNS } ? COLUMNS : undefined;
|
|
140
|
+
export type TypeUtilPrepareColumns<TColumns> = TColumns extends '*' | ['*']
|
|
141
|
+
? undefined
|
|
142
|
+
: TColumns extends string[]
|
|
143
|
+
? TColumns[number]
|
|
144
|
+
: TColumns extends string
|
|
145
|
+
? TColumns
|
|
146
|
+
: undefined;
|
|
147
|
+
export type TypeUtilEntitySelector<TRecord, TColumns> = [TColumns] extends [keyof TRecord] ? Pick<TRecord, TColumns> : TRecord;
|
|
148
|
+
export type TypeUtilEntityOmit<TRecord, TColumns> = [TColumns] extends [keyof TRecord] ? Omit<TRecord, TColumns> : TRecord;
|
|
149
|
+
export type TypeUtilEntityPartial<TRecord, TColumns> = [TColumns] extends [keyof TRecord]
|
|
150
|
+
? Partial<Pick<TRecord, TColumns>> & Omit<TRecord, TColumns>
|
|
151
|
+
: TRecord;
|
|
152
|
+
export type TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined | unknown> =
|
|
153
|
+
TypeUtilGetParamsColumns<IncludeWrapper> extends string | string[]
|
|
154
|
+
? TypeUtilGetParamsColumns<IncludeWrapper>
|
|
155
|
+
: TypeUtilGetRelationOptionsColumns<Relation>;
|
|
156
|
+
|
|
157
|
+
export interface TypeModelSelectAndCount<
|
|
158
|
+
TRecord,
|
|
159
|
+
TModel extends BeanModelMeta | undefined,
|
|
160
|
+
TOptionsRelation,
|
|
161
|
+
TColumns = undefined,
|
|
162
|
+
Aggrs = undefined,
|
|
163
|
+
Groups = undefined,
|
|
164
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
165
|
+
> {
|
|
166
|
+
list: TypeModelRelationResult<TRecord, TModel, TOptionsRelation, TColumns, Aggrs, Groups, Depth>[];
|
|
167
|
+
total: string;
|
|
168
|
+
pageCount: number;
|
|
169
|
+
pageSize: number;
|
|
170
|
+
pageNo: number;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export type TypeModelRelationResult<
|
|
174
|
+
TRecord,
|
|
175
|
+
TModel extends BeanModelMeta | undefined,
|
|
176
|
+
TOptionsRelation,
|
|
177
|
+
TColumns = undefined,
|
|
178
|
+
Aggrs = undefined,
|
|
179
|
+
Groups = undefined,
|
|
180
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
181
|
+
> = Groups extends string | string[]
|
|
182
|
+
? TypeModelGroupRelationResultGroups<TRecord, Aggrs, Groups, TColumns>
|
|
183
|
+
: Aggrs extends {}
|
|
184
|
+
? TypeModelAggrRelationResultAggrs<Aggrs>
|
|
185
|
+
: TypeModelRelationResult_Normal<TRecord, TModel, TOptionsRelation, TColumns, Depth>;
|
|
186
|
+
|
|
187
|
+
export type TypeModelRelationResult_Normal<
|
|
188
|
+
TRecord,
|
|
189
|
+
TModel extends BeanModelMeta | undefined,
|
|
190
|
+
TOptionsRelation,
|
|
191
|
+
TColumns = undefined,
|
|
192
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
193
|
+
> = TypeUtilEntitySelector<
|
|
194
|
+
TRecord,
|
|
195
|
+
TypeUtilPrepareColumns<TColumns extends string | string[] ? TColumns : TypeUtilGetParamsColumns<TOptionsRelation>>
|
|
196
|
+
> &
|
|
197
|
+
(TModel extends BeanModelMeta
|
|
198
|
+
? OmitNever<TypeModelRelationResultMergeInclude<TypeUtilGetModelOptions<TModel>, TypeUtilGetParamsInlcude<TOptionsRelation>, Depth>> &
|
|
199
|
+
OmitNever<TypeModelRelationResultMergeWith<TypeUtilGetParamsWith<TOptionsRelation>, Depth>>
|
|
200
|
+
: {});
|
|
201
|
+
|
|
202
|
+
export type TypeModelRelationResultMergeInclude<
|
|
203
|
+
TModelOptions extends IDecoratorModelOptions,
|
|
204
|
+
TInclude extends {} | undefined | unknown,
|
|
205
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
206
|
+
> = {
|
|
207
|
+
[RelationName in keyof TModelOptions['relations']]: TInclude extends {}
|
|
208
|
+
? TInclude[RelationName] extends {} | boolean
|
|
209
|
+
? TypeModelRelationResultMergeIncludeWrapper<TModelOptions['relations'][RelationName], TInclude[RelationName], Depth>
|
|
210
|
+
: TypeModelRelationResultMergeAutoload<TModelOptions['relations'][RelationName], Depth>
|
|
211
|
+
: TypeModelRelationResultMergeAutoload<TModelOptions['relations'][RelationName], Depth>;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
export type TypeModelRelationResultMergeWith<
|
|
215
|
+
TWith extends {} | undefined | unknown,
|
|
216
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
217
|
+
> = TWith extends {} ? { [RelationName in keyof TWith]: TypeModelRelationResultMergeWithRelation<TWith[RelationName], Depth> } : {};
|
|
218
|
+
|
|
219
|
+
export type TypeModelRelationResultMergeAutoload<Relation, Depth extends TypeDepthPrev[number] = TypeDepthPrevMax> =
|
|
220
|
+
TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilGetRelationEntityByType<Relation, undefined, Depth> : never;
|
|
221
|
+
|
|
222
|
+
export type TypeModelRelationResultMergeIncludeWrapper<
|
|
223
|
+
Relation,
|
|
224
|
+
IncludeWrapper,
|
|
225
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
226
|
+
> = IncludeWrapper extends false
|
|
227
|
+
? never
|
|
228
|
+
: IncludeWrapper extends true
|
|
229
|
+
? TypeUtilGetRelationEntityByType<Relation, undefined, Depth>
|
|
230
|
+
: IncludeWrapper extends {}
|
|
231
|
+
? TypeUtilGetRelationEntityByType<Relation, IncludeWrapper, Depth>
|
|
232
|
+
: never;
|
|
233
|
+
|
|
234
|
+
export type TypeModelRelationResultMergeWithRelation<
|
|
235
|
+
WithRelation,
|
|
236
|
+
Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
|
|
237
|
+
> = WithRelation extends false
|
|
238
|
+
? never
|
|
239
|
+
: WithRelation extends true
|
|
240
|
+
? never
|
|
241
|
+
: WithRelation extends {}
|
|
242
|
+
? TypeUtilGetRelationEntityByType<WithRelation, TypeUtilGetRelationOptions<WithRelation>, Depth>
|
|
243
|
+
: never;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { TypeUtilGetParamsAggrs, TypeUtilGetRelationOptionsAggrs } from './relations.ts';
|
|
2
|
+
|
|
3
|
+
export type TypeModelAggrRelationResult<TOptions> =
|
|
4
|
+
TypeUtilGetParamsAggrs<TOptions> extends {} ? TypeModelAggrRelationResultAggrs<TypeUtilGetParamsAggrs<TOptions>> : {}; // not use undefined
|
|
5
|
+
|
|
6
|
+
export type TypeModelAggrRelationResultAggrs<Aggrs> = Aggrs extends {}
|
|
7
|
+
? TypeRecordAggrsValuesToObject<
|
|
8
|
+
TypeRecordAggrsValues<{
|
|
9
|
+
[K in keyof Aggrs]: K extends string ? TypeModelAggrRelationResultAggr<K, TypeUtilAggrPrepareColumns<Aggrs[K]>> : never;
|
|
10
|
+
}>
|
|
11
|
+
>
|
|
12
|
+
: {};
|
|
13
|
+
|
|
14
|
+
export type TypeModelAggrRelationResultAggr<Aggr extends string, Columns extends string | number | symbol | undefined> = Columns extends string
|
|
15
|
+
? `${Aggr}_${Columns extends '*' ? 'all' : Columns}`
|
|
16
|
+
: never;
|
|
17
|
+
|
|
18
|
+
export type TypeUtilAggrPrepareColumns<TColumns> = TColumns extends string[] ? TColumns[number] : TColumns extends string ? TColumns : undefined;
|
|
19
|
+
export type TypeRecordAggrsValues<TRecord extends Record<string, any>> = TRecord[keyof TRecord];
|
|
20
|
+
export type TypeRecordAggrsValuesToObject<AggrValues extends string> = { [K in AggrValues]: string | undefined };
|
|
21
|
+
|
|
22
|
+
export type TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined | unknown> =
|
|
23
|
+
TypeUtilGetRelationOptionsAggrs<Relation> extends {}
|
|
24
|
+
? TypeUtilGetParamsAggrs<IncludeWrapper> extends {}
|
|
25
|
+
? TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<TypeUtilGetRelationOptionsAggrs<Relation>, TypeUtilGetParamsAggrs<IncludeWrapper>>
|
|
26
|
+
: TypeUtilGetRelationOptionsAggrs<Relation>
|
|
27
|
+
: undefined;
|
|
28
|
+
|
|
29
|
+
export type TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<RelationAggrs extends {}, IncludeWrapperAggrs extends {}> = {
|
|
30
|
+
[K in keyof RelationAggrs]: K extends string ? (K extends keyof IncludeWrapperAggrs ? IncludeWrapperAggrs[K] : RelationAggrs[K]) : undefined;
|
|
31
|
+
};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { TypeConfirmArray, TypeRecordValues } from 'vona';
|
|
2
|
+
|
|
3
|
+
import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
4
|
+
import type { IDecoratorModelOptions } from './onion/model.ts';
|
|
5
|
+
import type {
|
|
6
|
+
TypeModelOfModelLike,
|
|
7
|
+
TypeModelsClassLikeGeneral,
|
|
8
|
+
TypeSymbolKeyEntity,
|
|
9
|
+
TypeSymbolKeyEntityMeta,
|
|
10
|
+
TypeUtilGetModelOnionName,
|
|
11
|
+
TypeUtilGetModelOptions,
|
|
12
|
+
TypeUtilGetRelationEntityMeta,
|
|
13
|
+
TypeUtilGetRelationModel,
|
|
14
|
+
} from './relations.ts';
|
|
15
|
+
|
|
16
|
+
export type TypeEntityTableColumnNames<EntityMeta extends { $table: string } | undefined> = EntityMeta extends { $table: string }
|
|
17
|
+
? keyof {
|
|
18
|
+
[K in keyof EntityMeta as K extends '$table' | '$comment' | '$default'
|
|
19
|
+
? never
|
|
20
|
+
: K extends string
|
|
21
|
+
? `${EntityMeta['$table']}.${K}`
|
|
22
|
+
: never]: EntityMeta[K];
|
|
23
|
+
}
|
|
24
|
+
: never;
|
|
25
|
+
export type TypeEntityTableColumnNamesShort<Entity> = keyof Entity;
|
|
26
|
+
|
|
27
|
+
export type TypeEntityTableColumns<Entity extends {} | undefined, EntityMeta extends { $table: string } | undefined> = Entity extends {}
|
|
28
|
+
? EntityMeta extends { $table: string }
|
|
29
|
+
? { [K in keyof Entity as K extends string ? `${EntityMeta['$table']}.${K}` : never]: Entity[K] }
|
|
30
|
+
: {}
|
|
31
|
+
: {};
|
|
32
|
+
export type TypeEntityTableColumnsShort<Entity> = Entity;
|
|
33
|
+
|
|
34
|
+
export type TypeEntityTableColumnsOfModelDirect<TModel extends BeanModelMeta | undefined> = TModel extends BeanModelMeta
|
|
35
|
+
? TypeEntityTableColumns<TModel[TypeSymbolKeyEntity], TModel[TypeSymbolKeyEntityMeta]>
|
|
36
|
+
: {};
|
|
37
|
+
|
|
38
|
+
export type TypeEntityTableColumnNamesOfModels<A extends BeanModelMeta[]> = TypeEntityTableColumnNames<A[number][TypeSymbolKeyEntityMeta]>;
|
|
39
|
+
|
|
40
|
+
// export type TypeEntityTableColumnNamesOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TypeEntityTableColumnNames<TypeRecordValues<{
|
|
41
|
+
// [RelationName in keyof TModelOptions['relations']]: TypeUtilGetRelationEntityMeta<TModelOptions['relations'][RelationName]>;
|
|
42
|
+
// }>>;
|
|
43
|
+
export type TypeEntityTableColumnNamesOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TModelOptions['relations'] extends {}
|
|
44
|
+
? TypeRecordValues<{
|
|
45
|
+
[RelationName in keyof TModelOptions['relations']]: TypeEntityTableColumnNames<
|
|
46
|
+
TypeUtilGetRelationEntityMeta<TModelOptions['relations'][RelationName]>
|
|
47
|
+
>;
|
|
48
|
+
}>
|
|
49
|
+
: never;
|
|
50
|
+
|
|
51
|
+
export type TypeEntityTableColumnsOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TModelOptions['relations'] extends {}
|
|
52
|
+
? TypeEntityTableColumnsOfModelDirect<
|
|
53
|
+
TypeRecordModelValues<{
|
|
54
|
+
[RelationName in keyof TModelOptions['relations']]: TypeUtilGetRelationModel<TModelOptions['relations'][RelationName]>;
|
|
55
|
+
}>
|
|
56
|
+
>
|
|
57
|
+
: {};
|
|
58
|
+
|
|
59
|
+
export type TypeModelsOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TModelOptions['relations'] extends {}
|
|
60
|
+
? TypeRecordModelValues<{
|
|
61
|
+
[RelationName in keyof TModelOptions['relations']]: TypeUtilGetRelationModel<TModelOptions['relations'][RelationName]>;
|
|
62
|
+
}>
|
|
63
|
+
: never;
|
|
64
|
+
|
|
65
|
+
export type TypeModelOnionNamesOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TModelOptions['relations'] extends {}
|
|
66
|
+
? TypeRecordValues<{
|
|
67
|
+
[RelationName in keyof TModelOptions['relations']]: TypeUtilGetModelOnionName<
|
|
68
|
+
TypeUtilGetRelationModel<TModelOptions['relations'][RelationName]>
|
|
69
|
+
>;
|
|
70
|
+
}>
|
|
71
|
+
: undefined; // not use never
|
|
72
|
+
|
|
73
|
+
export type TypeRecordModelValues<TRecord extends Record<string, BeanModelMeta | undefined>> = TRecord[keyof TRecord];
|
|
74
|
+
|
|
75
|
+
export type TypeEntityTableColumnNamesOfModelClass<TModel extends BeanModelMeta> = TypeEntityTableColumnNamesOfModelOptions<
|
|
76
|
+
TypeUtilGetModelOptions<TModel>
|
|
77
|
+
>;
|
|
78
|
+
|
|
79
|
+
export type TypeEntityTableColumnsOfModelClass<TModel extends BeanModelMeta> = TypeEntityTableColumnsOfModelOptions<TypeUtilGetModelOptions<TModel>>;
|
|
80
|
+
|
|
81
|
+
export type TypeModelsOfModelClass<TModel extends BeanModelMeta> = TypeModelsOfModelOptions<TypeUtilGetModelOptions<TModel>>;
|
|
82
|
+
|
|
83
|
+
export type TypeModelOnionNamesOfModelClass<TModel extends BeanModelMeta> = TypeModelOnionNamesOfModelOptions<TypeUtilGetModelOptions<TModel>>;
|
|
84
|
+
|
|
85
|
+
export type TypeEntityTableColumnNamesOfModelJoins<TModelJoins extends TypeModelsClassLikeGeneral> = TypeEntityTableColumnNames<
|
|
86
|
+
TypeModelOfModelLike<TypeConfirmArray<TModelJoins>[number]>[TypeSymbolKeyEntityMeta]
|
|
87
|
+
>;
|
|
88
|
+
|
|
89
|
+
export type TypeEntityTableColumnsOfModelJoins<TModelJoins extends TypeModelsClassLikeGeneral> = TypeEntityTableColumnsOfModelDirect<
|
|
90
|
+
TypeModelOfModelLike<TypeConfirmArray<TModelJoins>[number]>
|
|
91
|
+
>;
|
|
92
|
+
|
|
93
|
+
export type TypeEntityTableColumnNamesOfModelSelf<TModel extends BeanModelMeta> =
|
|
94
|
+
| TypeEntityTableColumnNames<TModel[TypeSymbolKeyEntityMeta]>
|
|
95
|
+
| TypeEntityTableColumnNamesShort<TModel[TypeSymbolKeyEntity]>;
|
|
96
|
+
|
|
97
|
+
export type TypeEntityTableColumnsOfModelSelf<TModel extends BeanModelMeta> = TypeEntityTableColumnsOfModelDirect<TModel> &
|
|
98
|
+
TypeEntityTableColumnsShort<TModel[TypeSymbolKeyEntity]>;
|
|
99
|
+
|
|
100
|
+
export type TypeEntityTableColumnNamesOfGeneral<
|
|
101
|
+
TModelJoins extends TypeModelsClassLikeGeneral | undefined,
|
|
102
|
+
TModel extends BeanModelMeta | undefined,
|
|
103
|
+
> = TModel extends BeanModelMeta
|
|
104
|
+
? TModelJoins extends TypeModelsClassLikeGeneral
|
|
105
|
+
? TypeEntityTableColumnNamesOfModelJoins<TModelJoins> | TypeEntityTableColumnNamesOfModelSelf<TModel>
|
|
106
|
+
: TypeEntityTableColumnNamesOfModelClass<TModel> | TypeEntityTableColumnNamesOfModelSelf<TModel>
|
|
107
|
+
: undefined;
|
|
108
|
+
|
|
109
|
+
export type TypeEntityTableColumnsOfGeneral<
|
|
110
|
+
TModelJoins extends TypeModelsClassLikeGeneral | undefined,
|
|
111
|
+
TModel extends BeanModelMeta | undefined,
|
|
112
|
+
> = TModel extends BeanModelMeta
|
|
113
|
+
? TModelJoins extends TypeModelsClassLikeGeneral
|
|
114
|
+
? TypeEntityTableColumnsOfModelJoins<TModelJoins> & TypeEntityTableColumnsOfModelSelf<TModel>
|
|
115
|
+
: TypeEntityTableColumnsOfModelClass<TModel> & TypeEntityTableColumnsOfModelSelf<TModel>
|
|
116
|
+
: undefined;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
2
|
+
import type { ServiceDb } from '../service/db_.ts';
|
|
3
|
+
import type { IDatabaseClientRecord } from './database.ts';
|
|
4
|
+
import type { TypeModelSelectAggrParamsAggrs } from './modelAggr.ts';
|
|
5
|
+
import type { IBuildModelSelectGeneralParamsBasic } from './modelGeneral.ts';
|
|
6
|
+
import type { TypeModelColumn, TypeModelColumnsPatch, TypeModelColumnsStrict } from './modelWhere.ts';
|
|
7
|
+
import type { IModelClassRecord, TypeModelOptionsTable } from './onion/model.ts';
|
|
8
|
+
import type { TypeModelClassLike, TypeModelOfModelLike, TypeModelsClassLikeGeneral, TypeSymbolKeyEntity } from './relations.ts';
|
|
9
|
+
import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGeneral } from './relationsColumns.ts';
|
|
10
|
+
import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
|
|
11
|
+
|
|
12
|
+
export type TypeModelRelationType = 'hasOne' | 'belongsTo' | 'hasMany' | 'belongsToMany';
|
|
13
|
+
// export interface TypeModelRelations {
|
|
14
|
+
// [key: string]: TypeModelRelation<any, any>;
|
|
15
|
+
// }
|
|
16
|
+
|
|
17
|
+
// export type TypeModelRelation<MODELSelf extends BeanModelMeta | undefined, MODELTarget extends BeanModelMeta> =
|
|
18
|
+
// IModelRelationHasOne<MODELTarget> |
|
|
19
|
+
// IModelRelationBelongsTo<MODELSelf, MODELTarget> |
|
|
20
|
+
// IModelRelationHasMany<MODELTarget>;
|
|
21
|
+
|
|
22
|
+
// use optional ? for app config
|
|
23
|
+
export interface IModelRelationHasOne<
|
|
24
|
+
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
25
|
+
KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity] | undefined = keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
|
|
26
|
+
AUTOLOAD extends boolean = false,
|
|
27
|
+
COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<
|
|
28
|
+
TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]
|
|
29
|
+
>,
|
|
30
|
+
> {
|
|
31
|
+
type?: 'hasOne';
|
|
32
|
+
model?: TypeModelClassLike<MODEL>;
|
|
33
|
+
key?: KEY;
|
|
34
|
+
options?: IModelRelationOptionsOne<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface IModelRelationBelongsTo<
|
|
38
|
+
MODELSelf extends BeanModelMeta | keyof IModelClassRecord,
|
|
39
|
+
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
40
|
+
AUTOLOAD extends boolean = false,
|
|
41
|
+
COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<
|
|
42
|
+
TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]
|
|
43
|
+
>,
|
|
44
|
+
> {
|
|
45
|
+
type?: 'belongsTo';
|
|
46
|
+
model?: TypeModelClassLike<MODEL>;
|
|
47
|
+
key?: keyof TypeModelOfModelLike<MODELSelf>[TypeSymbolKeyEntity];
|
|
48
|
+
options?: IModelRelationOptionsOne<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface IModelRelationHasMany<
|
|
52
|
+
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
53
|
+
KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity] | undefined = keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
|
|
54
|
+
AUTOLOAD extends boolean = false,
|
|
55
|
+
COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<
|
|
56
|
+
TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]
|
|
57
|
+
>,
|
|
58
|
+
ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
|
|
59
|
+
Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined,
|
|
60
|
+
Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined,
|
|
61
|
+
> {
|
|
62
|
+
type?: 'hasMany';
|
|
63
|
+
model?: TypeModelClassLike<MODEL>;
|
|
64
|
+
key?: KEY;
|
|
65
|
+
options?: IModelRelationOptionsMany<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS, ModelJoins, Aggrs, Groups>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface IModelRelationBelongsToMany<
|
|
69
|
+
MODELMiddle extends BeanModelMeta | keyof IModelClassRecord,
|
|
70
|
+
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
71
|
+
AUTOLOAD extends boolean = false,
|
|
72
|
+
COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<
|
|
73
|
+
TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]
|
|
74
|
+
>,
|
|
75
|
+
ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
|
|
76
|
+
Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined,
|
|
77
|
+
Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined,
|
|
78
|
+
> {
|
|
79
|
+
type?: 'belongsToMany';
|
|
80
|
+
modelMiddle?: TypeModelClassLike<MODELMiddle>;
|
|
81
|
+
model?: TypeModelClassLike<MODEL>;
|
|
82
|
+
keyFrom?: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity];
|
|
83
|
+
keyTo?: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity];
|
|
84
|
+
options?: IModelRelationOptionsMany<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS, ModelJoins, Aggrs, Groups>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface IModelRelationOptionsOne<
|
|
88
|
+
MODEL extends BeanModelMeta,
|
|
89
|
+
AUTOLOAD extends boolean = false,
|
|
90
|
+
COLUMNS extends TypeModelColumn<MODEL[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<MODEL[TypeSymbolKeyEntity]>,
|
|
91
|
+
> extends IModelRelationOptionsMetaWrapper {
|
|
92
|
+
autoload?: AUTOLOAD;
|
|
93
|
+
columns?: TypeModelColumnsPatch<MODEL[TypeSymbolKeyEntity], COLUMNS>;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface IModelRelationOptionsMany<
|
|
97
|
+
MODEL extends BeanModelMeta,
|
|
98
|
+
AUTOLOAD extends boolean = false,
|
|
99
|
+
COLUMNS extends TypeModelColumn<MODEL[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<MODEL[TypeSymbolKeyEntity]>,
|
|
100
|
+
ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
|
|
101
|
+
Aggrs extends TypeModelSelectAggrParamsAggrs<MODEL[TypeSymbolKeyEntity]> | undefined = undefined,
|
|
102
|
+
Groups extends TypeModelColumnsStrict<MODEL[TypeSymbolKeyEntity]> | undefined = undefined,
|
|
103
|
+
>
|
|
104
|
+
extends IModelRelationOptionsMetaWrapper, IModelRelationOptionsMany_Raw<MODEL, AUTOLOAD, COLUMNS, ModelJoins, Aggrs, Groups> {}
|
|
105
|
+
|
|
106
|
+
export type IModelRelationOptionsMany_Raw<
|
|
107
|
+
MODEL extends BeanModelMeta,
|
|
108
|
+
AUTOLOAD extends boolean = false,
|
|
109
|
+
COLUMNS extends TypeModelColumn<MODEL[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<MODEL[TypeSymbolKeyEntity]>,
|
|
110
|
+
ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
|
|
111
|
+
Aggrs extends TypeModelSelectAggrParamsAggrs<MODEL[TypeSymbolKeyEntity]> | undefined = undefined,
|
|
112
|
+
Groups extends TypeModelColumnsStrict<MODEL[TypeSymbolKeyEntity]> | undefined = undefined,
|
|
113
|
+
> = IBuildModelRelationOptionsMany<
|
|
114
|
+
MODEL[TypeSymbolKeyEntity],
|
|
115
|
+
AUTOLOAD,
|
|
116
|
+
COLUMNS,
|
|
117
|
+
TypeEntityTableNamesOfGeneral<ModelJoins, MODEL>,
|
|
118
|
+
TypeEntityTableColumnNamesOfGeneral<ModelJoins, MODEL>,
|
|
119
|
+
TypeEntityTableColumnsOfGeneral<ModelJoins, MODEL>,
|
|
120
|
+
Aggrs,
|
|
121
|
+
Groups
|
|
122
|
+
>;
|
|
123
|
+
|
|
124
|
+
export interface IBuildModelRelationOptionsMany<
|
|
125
|
+
TRecord,
|
|
126
|
+
AUTOLOAD extends boolean = false,
|
|
127
|
+
COLUMNS extends TypeModelColumn<TRecord> | undefined = TypeModelColumn<TRecord>,
|
|
128
|
+
TableNames = undefined,
|
|
129
|
+
ColumnNames = keyof TRecord,
|
|
130
|
+
Columns extends {} | undefined = undefined,
|
|
131
|
+
Aggrs extends TypeModelSelectAggrParamsAggrs<TRecord> | undefined = undefined,
|
|
132
|
+
Groups extends TypeModelColumnsStrict<TRecord> | undefined = undefined,
|
|
133
|
+
> extends IBuildModelSelectGeneralParamsBasic<TRecord, COLUMNS, TableNames, ColumnNames, Columns, Aggrs, Groups> {
|
|
134
|
+
autoload?: AUTOLOAD;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface IModelRelationOptionsMetaBasic {
|
|
138
|
+
client?: TypeModelRelationOptionsMetaClient;
|
|
139
|
+
table?: TypeModelOptionsTable;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export interface IModelRelationOptionsMeta extends IModelRelationOptionsMetaBasic {
|
|
143
|
+
middle?: IModelRelationOptionsMetaBasic;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface IModelRelationOptionsMetaWrapper {
|
|
147
|
+
meta?: IModelRelationOptionsMeta;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export type TypeModelRelationOptionsMetaClient = '_auto_' | '_initial_' | '_inherit_' | keyof IDatabaseClientRecord | ServiceDb;
|
|
151
|
+
|
|
152
|
+
export type IRelationItem = [string, any, any, any, boolean];
|