vona-module-a-orm 5.0.37

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 (116) hide show
  1. package/LICENSE +21 -0
  2. package/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +4 -0
  3. package/cli/entity/boilerplate/{{beanName}}.ts_ +7 -0
  4. package/cli/entity/metadata/generate.ts +52 -0
  5. package/cli/model/boilerplate/{{beanName}}.ts_ +8 -0
  6. package/cli/model/metadata/generate.ts +285 -0
  7. package/dist/.metadata/index.d.ts +246 -0
  8. package/dist/.metadata/this.d.ts +2 -0
  9. package/dist/bean/aopMethod.transaction.d.ts +9 -0
  10. package/dist/bean/bean.database.d.ts +12 -0
  11. package/dist/bean/bean.databaseDialectBase.d.ts +20 -0
  12. package/dist/bean/bean.model/bean.model_cache.d.ts +56 -0
  13. package/dist/bean/bean.model/bean.model_crud.d.ts +13 -0
  14. package/dist/bean/bean.model/bean.model_crud_inner.d.ts +15 -0
  15. package/dist/bean/bean.model/bean.model_crud_table.d.ts +13 -0
  16. package/dist/bean/bean.model/bean.model_knex.d.ts +15 -0
  17. package/dist/bean/bean.model/bean.model_meta.d.ts +40 -0
  18. package/dist/bean/bean.model/bean.model_utils.d.ts +39 -0
  19. package/dist/bean/bean.model/bean.model_view.d.ts +14 -0
  20. package/dist/bean/bean.model.d.ts +3 -0
  21. package/dist/bean/bean.modelBase.d.ts +3 -0
  22. package/dist/bean/broadcast.columnsClear.d.ts +10 -0
  23. package/dist/bean/broadcast.databaseClientReload.d.ts +12 -0
  24. package/dist/bean/event.clientNameReal.d.ts +6 -0
  25. package/dist/bean/event.columnsClear.d.ts +9 -0
  26. package/dist/bean/event.databaseClientReload.d.ts +11 -0
  27. package/dist/bean/schedule.softDeletionPrune.d.ts +6 -0
  28. package/dist/common/buildWhere.d.ts +4 -0
  29. package/dist/common/checkWhere.d.ts +1 -0
  30. package/dist/common/index.d.ts +3 -0
  31. package/dist/common/utils.d.ts +10 -0
  32. package/dist/config/config.d.ts +72 -0
  33. package/dist/config/errors.d.ts +3 -0
  34. package/dist/config/locale/en-us.d.ts +9 -0
  35. package/dist/config/locale/zh-cn.d.ts +9 -0
  36. package/dist/extend/index.d.ts +4 -0
  37. package/dist/extend/schemaBuilder.d.ts +13 -0
  38. package/dist/extend/tableBuilder.d.ts +22 -0
  39. package/dist/index.d.ts +7 -0
  40. package/dist/index.js +4085 -0
  41. package/dist/lib/columns.d.ts +9 -0
  42. package/dist/lib/database.d.ts +6 -0
  43. package/dist/lib/databaseDialect.d.ts +1 -0
  44. package/dist/lib/dto/dto.d.ts +12 -0
  45. package/dist/lib/dto/dtoAggregate.d.ts +8 -0
  46. package/dist/lib/dto/dtoCreate.d.ts +5 -0
  47. package/dist/lib/dto/dtoGet.d.ts +8 -0
  48. package/dist/lib/dto/dtoGroup.d.ts +8 -0
  49. package/dist/lib/dto/dtoMutate.d.ts +8 -0
  50. package/dist/lib/dto/dtoUpdate.d.ts +5 -0
  51. package/dist/lib/dto/index.d.ts +1 -0
  52. package/dist/lib/entity.d.ts +3 -0
  53. package/dist/lib/index.d.ts +10 -0
  54. package/dist/lib/model.d.ts +2 -0
  55. package/dist/lib/modelCacheBase.d.ts +20 -0
  56. package/dist/lib/relations.d.ts +15 -0
  57. package/dist/lib/relationsDynamic.d.ts +15 -0
  58. package/dist/lib/relationsMutate.d.ts +14 -0
  59. package/dist/lib/relationsStatic.d.ts +9 -0
  60. package/dist/main.d.ts +9 -0
  61. package/dist/service/cacheEntity_.d.ts +10 -0
  62. package/dist/service/cacheQuery_.d.ts +7 -0
  63. package/dist/service/columnsCache_.d.ts +22 -0
  64. package/dist/service/columns_.d.ts +13 -0
  65. package/dist/service/database.d.ts +17 -0
  66. package/dist/service/databaseAsyncLocalStorage_.d.ts +10 -0
  67. package/dist/service/databaseClient_.d.ts +30 -0
  68. package/dist/service/db_.d.ts +26 -0
  69. package/dist/service/entityResolver_.d.ts +9 -0
  70. package/dist/service/modelResolver_.d.ts +8 -0
  71. package/dist/service/relations_.d.ts +19 -0
  72. package/dist/service/transactionAsyncLocalStorage_.d.ts +10 -0
  73. package/dist/service/transactionConsistency/342/200/214_.d.ts +10 -0
  74. package/dist/service/transactionFiber_.d.ts +13 -0
  75. package/dist/service/transactionState_.d.ts +11 -0
  76. package/dist/service/transaction_.d.ts +18 -0
  77. package/dist/types/columns.d.ts +6 -0
  78. package/dist/types/config.d.ts +14 -0
  79. package/dist/types/database.d.ts +47 -0
  80. package/dist/types/dialect.d.ts +6 -0
  81. package/dist/types/dto/dtoAggregate.d.ts +2 -0
  82. package/dist/types/dto/dtoGet.d.ts +12 -0
  83. package/dist/types/dto/dtoGroup.d.ts +2 -0
  84. package/dist/types/dto/dtoMutate.d.ts +14 -0
  85. package/dist/types/dto/index.d.ts +4 -0
  86. package/dist/types/entity.d.ts +15 -0
  87. package/dist/types/entityBase.d.ts +5 -0
  88. package/dist/types/entityBaseEmpty.d.ts +2 -0
  89. package/dist/types/entityBaseInner.d.ts +7 -0
  90. package/dist/types/entityBaseSimple.d.ts +4 -0
  91. package/dist/types/extra.d.ts +11 -0
  92. package/dist/types/index.d.ts +30 -0
  93. package/dist/types/logger.d.ts +7 -0
  94. package/dist/types/model.d.ts +79 -0
  95. package/dist/types/modelAggr.d.ts +26 -0
  96. package/dist/types/modelCount.d.ts +15 -0
  97. package/dist/types/modelGeneral.d.ts +23 -0
  98. package/dist/types/modelGroup.d.ts +23 -0
  99. package/dist/types/modelWhere.d.ts +86 -0
  100. package/dist/types/onion/databaseDialect.d.ts +17 -0
  101. package/dist/types/onion/entity.d.ts +26 -0
  102. package/dist/types/onion/index.d.ts +4 -0
  103. package/dist/types/onion/model.d.ts +55 -0
  104. package/dist/types/onion/table.d.ts +2 -0
  105. package/dist/types/relations.d.ts +102 -0
  106. package/dist/types/relationsAggr.d.ts +16 -0
  107. package/dist/types/relationsColumns.d.ts +45 -0
  108. package/dist/types/relationsDef.d.ts +59 -0
  109. package/dist/types/relationsDefDynamic.d.ts +56 -0
  110. package/dist/types/relationsDefMutate.d.ts +9 -0
  111. package/dist/types/relationsGroup.d.ts +21 -0
  112. package/dist/types/relationsMutate.d.ts +25 -0
  113. package/dist/types/relationsTables.d.ts +15 -0
  114. package/dist/types/tableIdentity.d.ts +1 -0
  115. package/dist/types/transaction.d.ts +18 -0
  116. package/package.json +74 -0
@@ -0,0 +1,15 @@
1
+ export type TypeEntityMeta<T, N = string> = Required<{
2
+ [key in keyof T]: key;
3
+ }> & {
4
+ $table: N;
5
+ $comment: Required<{
6
+ [key in keyof T]: string;
7
+ }> & {
8
+ $table: string;
9
+ };
10
+ $default: Required<{
11
+ [key in keyof T]: any;
12
+ }>;
13
+ };
14
+ export declare const SymbolKeyFieldsMore: unique symbol;
15
+ export type TypeSymbolKeyFieldsMore = typeof SymbolKeyFieldsMore;
@@ -0,0 +1,5 @@
1
+ import type { TableIdentity } from './tableIdentity.ts';
2
+ import { EntityBaseInner } from './entityBaseInner.ts';
3
+ export declare class EntityBase extends EntityBaseInner {
4
+ id: TableIdentity;
5
+ }
@@ -0,0 +1,2 @@
1
+ export declare class EntityBaseEmpty {
2
+ }
@@ -0,0 +1,7 @@
1
+ import { EntityBaseEmpty } from './entityBaseEmpty.ts';
2
+ export declare class EntityBaseInner extends EntityBaseEmpty {
3
+ createdAt: Date;
4
+ updatedAt: Date;
5
+ deleted: boolean;
6
+ iid: number;
7
+ }
@@ -0,0 +1,4 @@
1
+ import { EntityBaseInner } from './entityBaseInner.ts';
2
+ export declare class EntityBaseSimple extends EntityBaseInner {
3
+ id: number;
4
+ }
@@ -0,0 +1,11 @@
1
+ declare module 'vona-module-a-orm' {
2
+ interface ServiceDb {
3
+ }
4
+ interface ServiceDatabaseClient {
5
+ }
6
+ interface ServiceColumns {
7
+ }
8
+ interface ServiceColumnsCache {
9
+ }
10
+ }
11
+ export {};
@@ -0,0 +1,30 @@
1
+ export * from './columns.ts';
2
+ export * from './config.ts';
3
+ export * from './database.ts';
4
+ export * from './dialect.ts';
5
+ export * from './dto/index.ts';
6
+ export * from './entity.ts';
7
+ export * from './entityBase.ts';
8
+ export * from './entityBaseEmpty.ts';
9
+ export * from './entityBaseInner.ts';
10
+ export * from './entityBaseSimple.ts';
11
+ export * from './extra.ts';
12
+ export * from './logger.ts';
13
+ export * from './model.ts';
14
+ export * from './modelAggr.ts';
15
+ export * from './modelCount.ts';
16
+ export * from './modelGeneral.ts';
17
+ export * from './modelGroup.ts';
18
+ export * from './modelWhere.ts';
19
+ export * from './onion/index.ts';
20
+ export * from './relations.ts';
21
+ export * from './relationsAggr.ts';
22
+ export * from './relationsColumns.ts';
23
+ export * from './relationsDef.ts';
24
+ export * from './relationsDefDynamic.ts';
25
+ export * from './relationsDefMutate.ts';
26
+ export * from './relationsGroup.ts';
27
+ export * from './relationsMutate.ts';
28
+ export * from './relationsTables.ts';
29
+ export * from './tableIdentity.ts';
30
+ export * from './transaction.ts';
@@ -0,0 +1,7 @@
1
+ declare module 'vona' {
2
+ interface ILoggerClientChildRecord {
3
+ database: never;
4
+ model: never;
5
+ }
6
+ }
7
+ export {};
@@ -0,0 +1,79 @@
1
+ import type { Knex } from 'knex';
2
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
3
+ import type { TypeModelColumn, TypeModelColumns, TypeModelColumnsPatch, TypeModelWhere } from './modelWhere.ts';
4
+ import type { TypeModelParamsInclude, TypeModelsClassLikeGeneral } from './relations.ts';
5
+ import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGeneral } from './relationsColumns.ts';
6
+ import type { TypeModelMutateParamsInclude } from './relationsMutate.ts';
7
+ import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
8
+ export type TypeModelCacheType = 'query' | 'entity';
9
+ export type IModelSelectParamsJoinType = 'join' | 'innerJoin' | 'leftJoin' | 'leftOuterJoin' | 'rightJoin' | 'rightOuterJoin' | 'fullOuterJoin' | 'crossJoin';
10
+ export type IModelSelectParamsJoin<TRecord, TableNames = undefined, ColumnNames = keyof TRecord> = [
11
+ IModelSelectParamsJoinType,
12
+ TableNames,
13
+ [
14
+ ColumnNames,
15
+ ColumnNames
16
+ ] | Knex.JoinCallback
17
+ ];
18
+ export type IModelSelectParamsOrderDirection = 'asc' | 'desc';
19
+ export type IModelSelectParamsOrderNulls = 'first' | 'last';
20
+ export type IModelSelectParamsOrder<ColumnNames> = [ColumnNames, IModelSelectParamsOrderDirection?, IModelSelectParamsOrderNulls?];
21
+ export interface IBuildModelSelectParams<TRecord, Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> extends IModelRelationIncludeWrapper<Model>, IBuildModelSelectParamsBasic<TRecord, TypeModelColumn<TRecord>, TableNames, ColumnNames, Columns> {
22
+ }
23
+ export interface IBuildModelSelectParamsBasic<TRecord, COLUMNS extends TypeModelColumn<TRecord> = TypeModelColumn<TRecord>, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> {
24
+ distinct?: boolean | (keyof TRecord) | (keyof TRecord)[];
25
+ columns?: TypeModelColumnsPatch<TRecord, COLUMNS>;
26
+ where?: TypeModelWhere<TRecord, Columns>;
27
+ joins?: IModelSelectParamsJoin<TRecord, TableNames, ColumnNames>[];
28
+ orders?: IModelSelectParamsOrder<ColumnNames>[];
29
+ limit?: number;
30
+ offset?: number;
31
+ }
32
+ export type IModelSelectParams<TRecord, Model extends BeanModelMeta = BeanModelMeta, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined> = IBuildModelSelectParams<TRecord, Model, TypeEntityTableNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnsOfGeneral<ModelJoins, Model>>;
33
+ export interface IBuildModelCountParams<TRecord, _Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> {
34
+ distinct?: boolean | (keyof TRecord) | (keyof TRecord)[];
35
+ column?: TypeModelColumn<TRecord>;
36
+ where?: TypeModelWhere<TRecord, Columns>;
37
+ joins?: IModelSelectParamsJoin<TRecord, TableNames, ColumnNames>[];
38
+ }
39
+ export type IModelCountParams<TRecord, Model extends BeanModelMeta = BeanModelMeta, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined> = IBuildModelCountParams<TRecord, Model, TypeEntityTableNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnsOfGeneral<ModelJoins, Model>>;
40
+ export type IModelMethodOptions = Omit<IModelMethodOptionsGeneral, 'disableInstance'>;
41
+ export type IModelInsertOptions<TRecord, Model extends BeanModelMeta | undefined = undefined> = Omit<IModelInsertOptionsGeneral<TRecord, Model>, 'disableInstance'>;
42
+ export type IModelUpdateOptions<TRecord, Model extends BeanModelMeta | undefined = undefined> = Omit<IModelUpdateOptionsGeneral<TRecord, Model>, 'disableInstance'>;
43
+ export type IModelDeleteOptions<TRecord, Model extends BeanModelMeta | undefined = undefined> = Omit<IModelDeleteOptionsGeneral<TRecord, Model>, 'disableInstance'>;
44
+ export type IModelGetOptions<TRecord, Model extends BeanModelMeta | undefined = undefined> = Omit<IModelGetOptionsGeneral<TRecord, Model>, 'disableInstance'>;
45
+ export type IModelMutateOptions<TRecord, Model extends BeanModelMeta | undefined = undefined> = Omit<IModelMutateOptionsGeneral<TRecord, Model>, 'disableInstance'>;
46
+ export interface IModelMethodOptionsGeneral {
47
+ disableDeleted?: boolean;
48
+ disableInstance?: boolean;
49
+ disableCreateTime?: boolean;
50
+ disableUpdateTime?: boolean;
51
+ disableCacheQuery?: boolean;
52
+ disableCacheEntity?: boolean;
53
+ iid?: number;
54
+ deleted?: boolean;
55
+ }
56
+ export interface IModelInsertOptionsGeneral<_TRecord, Model extends BeanModelMeta | undefined = undefined> extends IModelMethodOptionsGeneral, IModelMutateRelationIncludeWrapper<Model> {
57
+ }
58
+ export interface IModelUpdateOptionsGeneral<TRecord, Model extends BeanModelMeta | undefined = undefined> extends IModelMethodOptionsGeneral, IModelMutateRelationIncludeWrapper<Model> {
59
+ where?: TypeModelWhere<TRecord>;
60
+ }
61
+ export interface IModelDeleteOptionsGeneral<_TRecord, Model extends BeanModelMeta | undefined = undefined> extends IModelMethodOptionsGeneral, IModelMutateRelationIncludeWrapper<Model> {
62
+ }
63
+ export interface IModelGetOptionsGeneral<TRecord, Model extends BeanModelMeta | undefined = undefined> extends IModelMethodOptionsGeneral, IModelRelationIncludeWrapper<Model> {
64
+ columns?: TypeModelColumns<TRecord>;
65
+ }
66
+ export interface IModelMutateOptionsGeneral<_TRecord, Model extends BeanModelMeta | undefined = undefined> extends IModelMethodOptionsGeneral, IModelMutateRelationIncludeWrapper<Model> {
67
+ }
68
+ export interface IModelSelectParamsPage {
69
+ index?: number;
70
+ size?: number;
71
+ }
72
+ export interface IModelRelationIncludeWrapper<Model extends BeanModelMeta | undefined = undefined> {
73
+ include?: TypeModelParamsInclude<Model>;
74
+ with?: Record<string, unknown>;
75
+ }
76
+ export interface IModelMutateRelationIncludeWrapper<Model extends BeanModelMeta | undefined = undefined> {
77
+ include?: TypeModelMutateParamsInclude<Model>;
78
+ with?: Record<string, unknown>;
79
+ }
@@ -0,0 +1,26 @@
1
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
2
+ import type { IModelSelectParamsJoin } from './model.ts';
3
+ import type { TypeModelColumns, TypeModelWhere } from './modelWhere.ts';
4
+ import type { TypeModelsClassLikeGeneral } from './relations.ts';
5
+ import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGeneral } from './relationsColumns.ts';
6
+ import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
7
+ export interface TypeModelSelectAggrParamsAggrs<TRecord> {
8
+ count?: TypeModelColumns<TRecord>;
9
+ sum?: TypeEntityTableColumnNamesForAggrs<TRecord> | Array<TypeEntityTableColumnNamesForAggrs<TRecord>>;
10
+ avg?: TypeEntityTableColumnNamesForAggrs<TRecord> | Array<TypeEntityTableColumnNamesForAggrs<TRecord>>;
11
+ max?: TypeEntityTableColumnNamesForAggrs<TRecord> | Array<TypeEntityTableColumnNamesForAggrs<TRecord>>;
12
+ min?: TypeEntityTableColumnNamesForAggrs<TRecord> | Array<TypeEntityTableColumnNamesForAggrs<TRecord>>;
13
+ }
14
+ export type TypeEntityTableColumnNamesForAggrs<Entity> = keyof TypeEntityTableColumnsForAggrs<Entity>;
15
+ export type TypeEntityTableColumnsForAggrs<Entity> = Omit<{
16
+ [K in keyof Entity as Entity[K] extends number | undefined ? K : never]: Entity[K];
17
+ }, 'id' | 'iid'>;
18
+ export interface IBuildModelSelectAggrParams<TRecord, Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> extends IBuildModelSelectAggrParamsBasic<TRecord, Model, TableNames, ColumnNames, Columns> {
19
+ }
20
+ export interface IBuildModelSelectAggrParamsBasic<TRecord, _Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> {
21
+ distinct?: boolean | (keyof TRecord) | (keyof TRecord)[];
22
+ aggrs: TypeModelSelectAggrParamsAggrs<TRecord>;
23
+ where?: TypeModelWhere<TRecord, Columns>;
24
+ joins?: IModelSelectParamsJoin<TRecord, TableNames, ColumnNames>[];
25
+ }
26
+ export type IModelSelectAggrParams<TRecord, Model extends BeanModelMeta = BeanModelMeta, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined> = IBuildModelSelectAggrParams<TRecord, Model, TypeEntityTableNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnsOfGeneral<ModelJoins, Model>>;
@@ -0,0 +1,15 @@
1
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
2
+ import type { IModelSelectParamsJoin } from './model.ts';
3
+ import type { TypeModelColumn, TypeModelWhere } from './modelWhere.ts';
4
+ import type { TypeModelsClassLikeGeneral } from './relations.ts';
5
+ import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGeneral } from './relationsColumns.ts';
6
+ import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
7
+ export interface IBuildModelSelectCountParams<TRecord, Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> extends IBuildModelSelectCountParamsBasic<TRecord, Model, TableNames, ColumnNames, Columns> {
8
+ }
9
+ export interface IBuildModelSelectCountParamsBasic<TRecord, _Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> {
10
+ distinct?: boolean | (keyof TRecord) | (keyof TRecord)[];
11
+ column?: TypeModelColumn<TRecord>;
12
+ where?: TypeModelWhere<TRecord, Columns>;
13
+ joins?: IModelSelectParamsJoin<TRecord, TableNames, ColumnNames>[];
14
+ }
15
+ export type IModelSelectCountParams<TRecord, Model extends BeanModelMeta = BeanModelMeta, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined> = IBuildModelSelectCountParams<TRecord, Model, TypeEntityTableNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnsOfGeneral<ModelJoins, Model>>;
@@ -0,0 +1,23 @@
1
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
2
+ import type { IModelRelationIncludeWrapper, IModelSelectParamsJoin, IModelSelectParamsOrder } from './model.ts';
3
+ import type { TypeModelSelectAggrParamsAggrs } from './modelAggr.ts';
4
+ import type { TypeModelColumn, TypeModelColumnsPatch, TypeModelColumnsStrict, TypeModelWhere } from './modelWhere.ts';
5
+ import type { TypeModelsClassLikeGeneral } from './relations.ts';
6
+ import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGeneral } from './relationsColumns.ts';
7
+ import type { TypeModelSelectGroupParamsColumnNames, TypeModelSelectGroupParamsColumns } from './relationsGroup.ts';
8
+ import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
9
+ export interface IBuildModelSelectGeneralParams<TRecord, Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> extends IModelRelationIncludeWrapper<Model>, IBuildModelSelectGeneralParamsBasic<TRecord, TypeModelColumn<TRecord>, TableNames, ColumnNames, Columns> {
10
+ }
11
+ export interface IBuildModelSelectGeneralParamsBasic<TRecord, TColumn extends TypeModelColumn<TRecord> | undefined = TypeModelColumn<TRecord>, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined, Aggrs extends TypeModelSelectAggrParamsAggrs<TRecord> | undefined = undefined, Groups extends TypeModelColumnsStrict<TRecord> | undefined = undefined> {
12
+ distinct?: boolean | (keyof TRecord) | (keyof TRecord)[];
13
+ columns?: Groups extends TypeModelColumnsStrict<TRecord> ? (TColumn extends string ? (TColumn | Array<TColumn>) : TColumn) : TypeModelColumnsPatch<TRecord, TColumn>;
14
+ aggrs?: Aggrs;
15
+ groups?: Groups;
16
+ having?: TypeModelWhere<TRecord, TypeModelSelectGroupParamsColumns<TRecord, Groups, Aggrs>>;
17
+ where?: TypeModelWhere<TRecord, Columns>;
18
+ joins?: IModelSelectParamsJoin<TRecord, TableNames, ColumnNames>[];
19
+ orders?: Groups extends TypeModelColumnsStrict<TRecord> ? IModelSelectParamsOrder<TypeModelSelectGroupParamsColumnNames<TRecord, Groups, Aggrs>>[] : (Aggrs extends TypeModelSelectAggrParamsAggrs<TRecord> ? never : IModelSelectParamsOrder<ColumnNames>[]);
20
+ limit?: number;
21
+ offset?: number;
22
+ }
23
+ export type IModelSelectGeneralParams<TRecord, Model extends BeanModelMeta = BeanModelMeta, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined> = IBuildModelSelectGeneralParams<TRecord, Model, TypeEntityTableNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnsOfGeneral<ModelJoins, Model>>;
@@ -0,0 +1,23 @@
1
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
2
+ import type { IModelSelectParamsJoin, IModelSelectParamsOrder } from './model.ts';
3
+ import type { TypeModelSelectAggrParamsAggrs } from './modelAggr.ts';
4
+ import type { TypeModelColumnsStrict, TypeModelWhere } from './modelWhere.ts';
5
+ import type { TypeModelsClassLikeGeneral } from './relations.ts';
6
+ import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGeneral } from './relationsColumns.ts';
7
+ import type { TypeModelSelectGroupParamsColumnNames, TypeModelSelectGroupParamsColumns } from './relationsGroup.ts';
8
+ import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
9
+ export interface IBuildModelSelectGroupParams<TRecord, Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> extends IBuildModelSelectGroupParamsBasic<TRecord, Model, TableNames, ColumnNames, Columns> {
10
+ }
11
+ export interface IBuildModelSelectGroupParamsBasic<TRecord, _Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> {
12
+ distinct?: boolean | (keyof TRecord) | (keyof TRecord)[];
13
+ aggrs?: TypeModelSelectAggrParamsAggrs<TRecord>;
14
+ groups: TypeModelColumnsStrict<TRecord>;
15
+ columns?: TypeModelColumnsStrict<TRecord>;
16
+ where?: TypeModelWhere<TRecord, Columns>;
17
+ joins?: IModelSelectParamsJoin<TRecord, TableNames, ColumnNames>[];
18
+ having?: TypeModelWhere<TRecord, TypeModelSelectGroupParamsColumns<TRecord>>;
19
+ orders?: IModelSelectParamsOrder<TypeModelSelectGroupParamsColumnNames<TRecord>>[];
20
+ limit?: number;
21
+ offset?: number;
22
+ }
23
+ export type IModelSelectGroupParams<TRecord, Model extends BeanModelMeta = BeanModelMeta, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined> = IBuildModelSelectGroupParams<TRecord, Model, TypeEntityTableNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnNamesOfGeneral<ModelJoins, Model>, TypeEntityTableColumnsOfGeneral<ModelJoins, Model>>;
@@ -0,0 +1,86 @@
1
+ import type { TypeRecordValues } from 'vona';
2
+ export declare const OpAggrs: string[];
3
+ export declare const OpJoint: {
4
+ readonly and: "_and_";
5
+ readonly or: "_or_";
6
+ readonly not: "_not_";
7
+ readonly exists: "_exists_";
8
+ readonly notExists: "_notExists_";
9
+ };
10
+ export declare const OpNormal: {
11
+ readonly eq: "_eq_";
12
+ readonly notEq: "_notEq_";
13
+ readonly gt: "_gt_";
14
+ readonly gte: "_gte_";
15
+ readonly lt: "_lt_";
16
+ readonly lte: "_lte_";
17
+ readonly in: "_in_";
18
+ readonly notIn: "_notIn_";
19
+ readonly is: "_is_";
20
+ readonly isNot: "_isNot_";
21
+ readonly between: "_between_";
22
+ readonly notBetween: "_notBetween_";
23
+ readonly startsWith: "_startsWith_";
24
+ readonly endsWith: "_endsWith_";
25
+ readonly includes: "_includes_";
26
+ readonly startsWithI: "_startsWithI_";
27
+ readonly endsWithI: "_endsWithI_";
28
+ readonly includesI: "_includesI_";
29
+ readonly ref: "_ref_";
30
+ };
31
+ export declare const Op: {
32
+ readonly eq: "_eq_";
33
+ readonly notEq: "_notEq_";
34
+ readonly gt: "_gt_";
35
+ readonly gte: "_gte_";
36
+ readonly lt: "_lt_";
37
+ readonly lte: "_lte_";
38
+ readonly in: "_in_";
39
+ readonly notIn: "_notIn_";
40
+ readonly is: "_is_";
41
+ readonly isNot: "_isNot_";
42
+ readonly between: "_between_";
43
+ readonly notBetween: "_notBetween_";
44
+ readonly startsWith: "_startsWith_";
45
+ readonly endsWith: "_endsWith_";
46
+ readonly includes: "_includes_";
47
+ readonly startsWithI: "_startsWithI_";
48
+ readonly endsWithI: "_endsWithI_";
49
+ readonly includesI: "_includesI_";
50
+ readonly ref: "_ref_";
51
+ readonly and: "_and_";
52
+ readonly or: "_or_";
53
+ readonly not: "_not_";
54
+ readonly exists: "_exists_";
55
+ readonly notExists: "_notExists_";
56
+ readonly skip: "_skip_";
57
+ };
58
+ export declare const OpJointValues: ("_and_" | "_or_" | "_not_" | "_exists_" | "_notExists_")[];
59
+ export declare const OpNormalValues: ("_eq_" | "_notEq_" | "_gt_" | "_gte_" | "_lt_" | "_lte_" | "_in_" | "_notIn_" | "_is_" | "_isNot_" | "_between_" | "_notBetween_" | "_startsWith_" | "_endsWith_" | "_includes_" | "_startsWithI_" | "_endsWithI_" | "_includesI_" | "_ref_")[];
60
+ export declare const OpValues: ("_and_" | "_or_" | "_not_" | "_exists_" | "_notExists_" | "_skip_" | "_eq_" | "_notEq_" | "_gt_" | "_gte_" | "_lt_" | "_lte_" | "_in_" | "_notIn_" | "_is_" | "_isNot_" | "_between_" | "_notBetween_" | "_startsWith_" | "_endsWith_" | "_includes_" | "_startsWithI_" | "_endsWithI_" | "_includesI_" | "_ref_")[];
61
+ export type TypeOpsJointPostfix<Op> = {
62
+ [KEY in keyof Op]: Op[KEY] | (KEY extends string ? `_${KEY}_${number}` : never);
63
+ };
64
+ export type TypeOpsJoint = TypeRecordValues<typeof OpJoint>;
65
+ export type TypeOpsNormal = TypeRecordValues<typeof OpNormal>;
66
+ export type TypeOpsAll = TypeRecordValues<typeof Op>;
67
+ export type TypeModelColumnValue<TRecord, Column> = keyof TRecord | Column | Column[] | null | '_skip_';
68
+ export type TypeModelWhere<TRecord, Columns extends {} | undefined = undefined> = Columns extends {} ? TypeModelWhereInner<Columns> : TypeModelWhereInner<TRecord>;
69
+ export type TypeModelWhereInner<TRecord> = {
70
+ [prop in keyof TRecord]?: TypeModelColumnValue<TRecord, TRecord[prop]> | TypeModelWhereFieldAll<TRecord, TRecord[prop]>;
71
+ } & {
72
+ [key in TypeOpsJoint]?: TypeModelWhereInner<TRecord>;
73
+ };
74
+ export type TypeModelWhereFieldAll<TRecord, Column> = {
75
+ [key in TypeOpsJoint]?: TypeModelWhereFieldAll<TRecord, Column>;
76
+ } & {
77
+ [key in TypeOpsNormal]?: TypeModelColumnValue<TRecord, Column>;
78
+ };
79
+ export type TypeModelWhereFieldJoint<TRecord, Column> = {
80
+ [key in TypeOpsJoint]?: TypeModelWhereFieldAll<TRecord, Column>;
81
+ };
82
+ export type TypeModelColumn<TRecord> = keyof TRecord | '*';
83
+ export type TypeModelColumns<TRecord> = TypeModelColumn<TRecord> | Array<TypeModelColumn<TRecord>>;
84
+ export type TypeModelColumnPatch<TRecord, TColumn> = TColumn extends '*' ? TypeModelColumn<TRecord> : TColumn;
85
+ export type TypeModelColumnsPatch<TRecord, TColumn> = [TColumn] extends [string] ? (TypeModelColumnPatch<TRecord, TColumn> | Array<TypeModelColumnPatch<TRecord, TColumn>>) : TColumn;
86
+ export type TypeModelColumnsStrict<TRecord> = keyof TRecord | Array<keyof TRecord>;
@@ -0,0 +1,17 @@
1
+ import type { ServiceOnion } from 'vona-module-a-onion';
2
+ export interface IDatabaseDialectRecord {
3
+ }
4
+ export interface IDecoratorDatabaseDialectOptions {
5
+ }
6
+ declare module 'vona-module-a-onion' {
7
+ interface BeanOnion {
8
+ databaseDialect: ServiceOnion<IDecoratorDatabaseDialectOptions, keyof IDatabaseDialectRecord>;
9
+ }
10
+ }
11
+ declare module 'vona' {
12
+ interface ConfigOnions {
13
+ }
14
+ interface IBeanSceneRecord {
15
+ databaseDialect: never;
16
+ }
17
+ }
@@ -0,0 +1,26 @@
1
+ import type { OmitNever } from 'vona';
2
+ import type { ServiceOnion } from 'vona-module-a-onion';
3
+ import type { TypeOpenapiMetadata } from 'vona-module-a-openapi';
4
+ import type { SymbolKeyFieldsMore } from '../entity.ts';
5
+ import type { ITableRecord } from './table.ts';
6
+ export interface IEntityRecord {
7
+ }
8
+ export interface IDecoratorEntityOptions<FieldsMore = never> {
9
+ [SymbolKeyFieldsMore]?: FieldsMore;
10
+ table?: keyof ITableRecord;
11
+ independent?: boolean;
12
+ openapi?: TypeOpenapiMetadata;
13
+ }
14
+ declare module 'vona-module-a-onion' {
15
+ interface BeanOnion {
16
+ entity: ServiceOnion<IDecoratorEntityOptions, keyof IEntityRecord>;
17
+ }
18
+ }
19
+ declare module 'vona' {
20
+ interface ConfigOnions {
21
+ entity: OmitNever<IEntityRecord>;
22
+ }
23
+ interface IBeanSceneRecord {
24
+ entity: never;
25
+ }
26
+ }
@@ -0,0 +1,4 @@
1
+ export * from './databaseDialect.ts';
2
+ export * from './entity.ts';
3
+ export * from './model.ts';
4
+ export * from './table.ts';
@@ -0,0 +1,55 @@
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
+ import type { IDatabaseClientRecord } from '../database.ts';
5
+ import type { EntityBaseEmpty } from '../entityBaseEmpty.ts';
6
+ import type { TypeModelColumnsStrict } from '../modelWhere.ts';
7
+ import type { TypeModelClassLikeGeneral } from '../relations.ts';
8
+ import type { ITableRecord } from './table.ts';
9
+ export interface IModelRecord {
10
+ }
11
+ export interface IModelClassRecord {
12
+ }
13
+ export type TypeDynamicTableName = (ctx: VonaContext, defaultTable: keyof ITableRecord, modelInstance: any) => string;
14
+ export type TypeDynamicClientName = (ctx: VonaContext, modelInstance: any) => keyof IDatabaseClientRecord;
15
+ export type TypeModelsClearedByFn = (ctx: VonaContext, modelInstance: any) => Promise<void>;
16
+ export type TypeSoftDeletionPruneHandler = (ctx: VonaContext, modelInstance: any, options: ISoftDeletionPruneHandlerOptions) => Promise<void>;
17
+ export interface ISoftDeletionPruneHandlerOptions {
18
+ expired: number;
19
+ }
20
+ export interface ISoftDeletionPrune {
21
+ handler?: TypeSoftDeletionPruneHandler;
22
+ expired?: number;
23
+ }
24
+ export interface IDecoratorModelOptions<TRecord extends EntityBaseEmpty = any> {
25
+ entity?: Constructable<TRecord>;
26
+ table?: TypeDynamicTableName | keyof ITableRecord;
27
+ disableDeleted?: boolean;
28
+ disableInstance?: boolean;
29
+ disableCreateTime?: boolean;
30
+ disableUpdateTime?: boolean;
31
+ softDeletionPrune?: ISoftDeletionPrune | boolean;
32
+ cache?: {
33
+ query?: IDecoratorSummerCacheOptions | false;
34
+ entity?: IDecoratorSummerCacheOptions | false;
35
+ keysAux?: TypeModelColumnsStrict<TRecord>;
36
+ modelsClear?: TypeModelClassLikeGeneral | TypeModelClassLikeGeneral[];
37
+ modelsClearedBy?: keyof IModelClassRecord | (keyof IModelClassRecord)[];
38
+ modelsClearedByFn?: TypeModelsClearedByFn;
39
+ };
40
+ client?: TypeDynamicClientName | keyof IDatabaseClientRecord;
41
+ relations?: Record<never, never>;
42
+ }
43
+ declare module 'vona-module-a-onion' {
44
+ interface BeanOnion {
45
+ model: ServiceOnion<IDecoratorModelOptions, keyof IModelRecord>;
46
+ }
47
+ }
48
+ declare module 'vona' {
49
+ interface ConfigOnions {
50
+ model: OmitNever<IModelRecord>;
51
+ }
52
+ interface IBeanSceneRecord {
53
+ model: never;
54
+ }
55
+ }
@@ -0,0 +1,2 @@
1
+ export interface ITableRecord {
2
+ }
@@ -0,0 +1,102 @@
1
+ import type { Constructable, OmitNever } from 'vona';
2
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
3
+ import type { IDecoratorModelOptions, IModelClassRecord } from './onion/model.ts';
4
+ import type { TypeModelAggrRelationResultAggrs, TypeUtilGetAggrsFromRelationAndIncludeWrapper } from './relationsAggr.ts';
5
+ import type { TypeModelGroupRelationResultGroups, TypeUtilGetGroupsFromRelationAndIncludeWrapper } from './relationsGroup.ts';
6
+ export declare const SymbolKeyEntity: unique symbol;
7
+ export declare const SymbolKeyEntityMeta: unique symbol;
8
+ export declare const SymbolKeyModelOptions: unique symbol;
9
+ export type TypeSymbolKeyEntity = typeof SymbolKeyEntity;
10
+ export type TypeSymbolKeyEntityMeta = typeof SymbolKeyEntityMeta;
11
+ export type TypeSymbolKeyModelOptions = typeof SymbolKeyModelOptions;
12
+ export type TypeModelOfModelLike<ModelLike extends (() => Constructable<BeanModelMeta>) | Constructable<BeanModelMeta> | (() => BeanModelMeta) | BeanModelMeta | (keyof IModelClassRecord)> = ModelLike extends (keyof IModelClassRecord) ? IModelClassRecord[ModelLike] : ModelLike extends () => Constructable<infer MODEL> ? MODEL : ModelLike extends Constructable<infer MODEL> ? MODEL : ModelLike extends () => infer MODEL ? MODEL : ModelLike;
13
+ export type TypeModelClassLike<MODEL extends BeanModelMeta | (keyof IModelClassRecord)> = MODEL extends BeanModelMeta ? ((() => Constructable<MODEL>) | Constructable<MODEL>) : MODEL;
14
+ export type TypeModelClassLikeGeneral<MODEL extends BeanModelMeta = BeanModelMeta> = (() => Constructable<MODEL>) | Constructable<MODEL> | (() => BeanModelMeta) | BeanModelMeta | keyof IModelClassRecord;
15
+ export type TypeModelsClassLikeGeneral<MODEL extends BeanModelMeta = BeanModelMeta> = TypeModelClassLikeGeneral<MODEL> | Array<TypeModelClassLikeGeneral<MODEL>>;
16
+ export type TypeModelParamsInclude<MODEL extends BeanModelMeta | undefined> = TypeModelParamsIncludeByModelOptions<TypeUtilGetModelOptions<MODEL>>;
17
+ export type TypeModelParamsIncludeByModelOptions<ModelOptions extends IDecoratorModelOptions | undefined> = ModelOptions extends IDecoratorModelOptions ? {
18
+ [relationName in keyof ModelOptions['relations']]?: TypeModelParamsRelationOptions<ModelOptions['relations'][relationName]>;
19
+ } : never;
20
+ export type TypeModelParamsRelationOptions<Relation> = boolean | (Omit<TypeUtilGetRelationOptions<Relation>, 'autoload'> & {
21
+ include?: TypeModelParamsInclude<TypeUtilGetRelationModel<Relation>>;
22
+ with?: Record<string, unknown>;
23
+ });
24
+ export type TypeUtilGetRelationType<Relation> = Relation extends {
25
+ type?: infer TYPE;
26
+ } ? TYPE : undefined;
27
+ export type TypeUtilGetRelationModel<Relation> = Relation extends {
28
+ model?: ((() => Constructable<infer MODEL extends BeanModelMeta>) | Constructable<infer MODEL extends BeanModelMeta>);
29
+ } ? MODEL : Relation extends {
30
+ model?: ((() => infer MODEL extends BeanModelMeta) | infer MODEL extends BeanModelMeta);
31
+ } ? MODEL : Relation extends {
32
+ model?: () => Constructable<infer MODEL extends BeanModelMeta>;
33
+ } ? MODEL : Relation extends {
34
+ model?: () => infer MODEL extends BeanModelMeta;
35
+ } ? MODEL : Relation extends {
36
+ model?: Constructable<infer MODEL extends BeanModelMeta>;
37
+ } ? MODEL : Relation extends {
38
+ model?: infer MODEL extends BeanModelMeta;
39
+ } ? MODEL : Relation extends {
40
+ model?: infer MODELNAME extends keyof IModelClassRecord;
41
+ } ? IModelClassRecord[MODELNAME] : undefined;
42
+ export type TypeUtilGetRelationModelOptions<Relation> = TypeUtilGetModelOptions<TypeUtilGetRelationModel<Relation>>;
43
+ export type TypeUtilGetRelationEntity<Relation> = TypeUtilGetModelEntity<TypeUtilGetRelationModel<Relation>>;
44
+ export type TypeUtilGetRelationEntityMeta<Relation> = TypeUtilGetModelEntityMeta<TypeUtilGetRelationModel<Relation>>;
45
+ export type TypeUtilGetRelationOptions<Relation> = Relation extends {
46
+ options?: infer OPTIONS extends {};
47
+ } ? OPTIONS : undefined;
48
+ export type TypeUtilGetRelationOptionsAutoload<Relation> = Relation extends {
49
+ options?: {
50
+ autoload?: infer AUTOLOAD;
51
+ };
52
+ } ? AUTOLOAD : undefined;
53
+ export type TypeUtilGetRelationOptionsColumns<Relation> = Relation extends {
54
+ options?: {
55
+ columns?: infer COLUMNS;
56
+ };
57
+ } ? COLUMNS : undefined;
58
+ export type TypeUtilGetRelationOptionsAggrs<Relation> = Relation extends {
59
+ options?: {
60
+ aggrs?: infer Aggrs;
61
+ };
62
+ } ? Aggrs : undefined;
63
+ export type TypeUtilGetRelationOptionsGroups<Relation> = Relation extends {
64
+ options?: {
65
+ groups?: infer Groups;
66
+ };
67
+ } ? Groups : undefined;
68
+ export type TypeUtilGetModelOptions<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model[TypeSymbolKeyModelOptions] : undefined;
69
+ export type TypeUtilGetModelEntity<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model[TypeSymbolKeyEntity] : undefined;
70
+ export type TypeUtilGetModelEntityMeta<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model[TypeSymbolKeyEntityMeta] : undefined;
71
+ export type TypeUtilGetModelOnionName<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model['$onionName'] : undefined;
72
+ export type TypeUtilGetRelationEntityByType<Relation, IncludeWrapper extends {} | undefined> = TypeUtilGetEntityByType<TypeUtilGetRelationEntity<Relation>, TypeUtilGetRelationType<Relation>, TypeUtilGetRelationModel<Relation>, IncludeWrapper, TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>, TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>, TypeUtilGetGroupsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>>;
73
+ export type TypeUtilGetEntityByType<TRecord, TYPE, TModel extends BeanModelMeta | undefined, IncludeWrapper extends {} | undefined, Columns, Aggrs, Groups> = TYPE extends 'hasMany' | 'belongsToMany' ? Groups extends string | string[] ? Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs, Groups>> : (Aggrs extends {} ? TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs> | undefined : Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns>>) : TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns> | undefined;
74
+ export type TypeUtilGetParamsAggrs<TParams> = TParams extends {
75
+ aggrs?: infer Aggrs extends {};
76
+ } ? Aggrs : undefined;
77
+ export type TypeUtilGetParamsGroups<TParams> = TParams extends {
78
+ groups?: infer Groups extends string | string[];
79
+ } ? Groups : undefined;
80
+ export type TypeUtilGetParamsInlcude<TParams> = TParams extends {
81
+ include?: infer INCLUDE extends {};
82
+ } ? INCLUDE : undefined;
83
+ export type TypeUtilGetParamsWith<TParams> = TParams extends {
84
+ with?: infer WITH extends {};
85
+ } ? WITH : undefined;
86
+ export type TypeUtilGetParamsColumns<TParams> = TParams extends {
87
+ columns?: infer COLUMNS;
88
+ } ? COLUMNS : undefined;
89
+ export type TypeUtilPrepareColumns<TColumns> = TColumns extends '*' | ['*'] ? undefined : TColumns extends string[] ? TColumns[number] : TColumns extends string ? TColumns : undefined;
90
+ export type TypeUtilEntitySelector<TRecord, TColumns> = [TColumns] extends [keyof TRecord] ? Pick<TRecord, TColumns> : TRecord;
91
+ export type TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined> = TypeUtilGetParamsColumns<IncludeWrapper> extends string | string[] ? TypeUtilGetParamsColumns<IncludeWrapper> : TypeUtilGetRelationOptionsColumns<Relation>;
92
+ export type TypeModelRelationResult<TRecord, TModel extends BeanModelMeta | undefined, TOptionsRelation, TColumns = undefined, Aggrs = undefined, Groups = undefined> = Groups extends string | string[] ? TypeModelGroupRelationResultGroups<TRecord, Aggrs, Groups, TColumns> : Aggrs extends {} ? TypeModelAggrRelationResultAggrs<Aggrs> : TypeModelRelationResult_Normal<TRecord, TModel, TOptionsRelation, TColumns>;
93
+ export type TypeModelRelationResult_Normal<TRecord, TModel extends BeanModelMeta | undefined, TOptionsRelation, TColumns = undefined> = TypeUtilEntitySelector<TRecord, TypeUtilPrepareColumns<TColumns extends string | string[] ? TColumns : TypeUtilGetParamsColumns<TOptionsRelation>>> & (TModel extends BeanModelMeta ? (OmitNever<TypeModelRelationResultMergeInclude<TypeUtilGetModelOptions<TModel>, TypeUtilGetParamsInlcude<TOptionsRelation>>> & OmitNever<TypeModelRelationResultMergeWith<TypeUtilGetParamsWith<TOptionsRelation>>>) : {});
94
+ export type TypeModelRelationResultMergeInclude<TModelOptions extends IDecoratorModelOptions, TInclude extends {} | undefined> = {
95
+ [RelationName in (keyof TModelOptions['relations'])]: TInclude[RelationName] extends {} | boolean ? TypeModelRelationResultMergeIncludeWrapper<TModelOptions['relations'][RelationName], TInclude[RelationName]> : TypeModelRelationResultMergeAutoload<TModelOptions['relations'][RelationName]>;
96
+ };
97
+ export type TypeModelRelationResultMergeWith<TWith extends {} | undefined> = TWith extends {} ? {
98
+ [RelationName in (keyof TWith)]: TypeModelRelationResultMergeWithRelation<TWith[RelationName]>;
99
+ } : {};
100
+ export type TypeModelRelationResultMergeAutoload<Relation> = TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilGetRelationEntityByType<Relation, undefined> : never;
101
+ export type TypeModelRelationResultMergeIncludeWrapper<Relation, IncludeWrapper> = IncludeWrapper extends false ? never : IncludeWrapper extends true ? TypeUtilGetRelationEntityByType<Relation, undefined> : IncludeWrapper extends {} ? TypeUtilGetRelationEntityByType<Relation, IncludeWrapper> : never;
102
+ export type TypeModelRelationResultMergeWithRelation<WithRelation> = WithRelation extends false ? never : WithRelation extends true ? never : WithRelation extends {} ? TypeUtilGetRelationEntityByType<WithRelation, TypeUtilGetRelationOptions<WithRelation>> : never;
@@ -0,0 +1,16 @@
1
+ import type BigNumber from 'bignumber.js';
2
+ import type { TypeUtilGetParamsAggrs, TypeUtilGetRelationOptionsAggrs } from './relations.ts';
3
+ export type TypeModelAggrRelationResult<TOptions> = TypeUtilGetParamsAggrs<TOptions> extends {} ? TypeModelAggrRelationResultAggrs<TypeUtilGetParamsAggrs<TOptions>> : {};
4
+ export type TypeModelAggrRelationResultAggrs<Aggrs> = Aggrs extends {} ? TypeRecordAggrsValuesToObject<TypeRecordAggrsValues<{
5
+ [K in keyof Aggrs]: K extends string ? TypeModelAggrRelationResultAggr<K, TypeUtilAggrPrepareColumns<Aggrs[K]>> : never;
6
+ }>> : {};
7
+ export type TypeModelAggrRelationResultAggr<Aggr extends string, Columns extends string | number | symbol | undefined> = Columns extends string ? `${Aggr}_${Columns extends '*' ? 'all' : Columns}` : never;
8
+ export type TypeUtilAggrPrepareColumns<TColumns> = TColumns extends string[] ? TColumns[number] : TColumns extends string ? TColumns : undefined;
9
+ export type TypeRecordAggrsValues<TRecord extends Record<string, any>> = TRecord[keyof TRecord];
10
+ export type TypeRecordAggrsValuesToObject<AggrValues extends string> = {
11
+ [K in AggrValues]: BigNumber | undefined;
12
+ };
13
+ export type TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined> = TypeUtilGetRelationOptionsAggrs<Relation> extends {} ? TypeUtilGetParamsAggrs<IncludeWrapper> extends {} ? TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<TypeUtilGetRelationOptionsAggrs<Relation>, TypeUtilGetParamsAggrs<IncludeWrapper>> : TypeUtilGetRelationOptionsAggrs<Relation> : undefined;
14
+ export type TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<RelationAggrs extends {}, IncludeWrapperAggrs extends {}> = {
15
+ [K in keyof RelationAggrs]: K extends string ? K extends keyof IncludeWrapperAggrs ? IncludeWrapperAggrs[K] : RelationAggrs[K] : undefined;
16
+ };