@rvoh/dream 0.40.3 → 0.40.5

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 (229) hide show
  1. package/dist/cjs/src/Dream.js +64 -12
  2. package/dist/cjs/src/dream/DreamClassTransactionBuilder.js +46 -6
  3. package/dist/cjs/src/dream/DreamInstanceTransactionBuilder.js +2 -2
  4. package/dist/cjs/src/dream/LeftJoinLoadBuilder.js +3 -3
  5. package/dist/cjs/src/dream/LoadBuilder.js +3 -3
  6. package/dist/cjs/src/dream/internal/associations/createAssociation.js +1 -6
  7. package/dist/cjs/src/dream/internal/findOrCreateBy.js +16 -0
  8. package/dist/cjs/src/dream/internal/updateOrCreateBy.js +18 -0
  9. package/dist/cjs/src/errors/CreateOrUpdateByFailedToCreateAndUpdate.js +18 -0
  10. package/dist/cjs/src/types/associations/belongsTo.js +2 -0
  11. package/dist/cjs/src/types/associations/hasMany.js +2 -0
  12. package/dist/cjs/src/types/associations/hasOne.js +2 -0
  13. package/dist/cjs/src/types/associations/shared.js +2 -0
  14. package/dist/cjs/src/types/db.js +2 -0
  15. package/dist/cjs/src/types/dream.js +2 -0
  16. package/dist/cjs/src/types/lifecycle.js +2 -0
  17. package/dist/cjs/src/types/logger.js +2 -0
  18. package/dist/cjs/src/types/openapi.js +2 -0
  19. package/dist/cjs/src/types/query.js +2 -0
  20. package/dist/cjs/src/types/utils.js +2 -0
  21. package/dist/cjs/src/types/validation.js +2 -0
  22. package/dist/cjs/src/types/variadic.js +2 -0
  23. package/dist/esm/src/Dream.js +64 -12
  24. package/dist/esm/src/dream/DreamClassTransactionBuilder.js +46 -6
  25. package/dist/esm/src/dream/DreamInstanceTransactionBuilder.js +2 -2
  26. package/dist/esm/src/dream/LeftJoinLoadBuilder.js +3 -3
  27. package/dist/esm/src/dream/LoadBuilder.js +3 -3
  28. package/dist/esm/src/dream/internal/associations/createAssociation.js +1 -6
  29. package/dist/esm/src/dream/internal/findOrCreateBy.js +13 -0
  30. package/dist/esm/src/dream/internal/updateOrCreateBy.js +15 -0
  31. package/dist/esm/src/errors/CreateOrUpdateByFailedToCreateAndUpdate.js +15 -0
  32. package/dist/esm/src/types/associations/belongsTo.js +1 -0
  33. package/dist/esm/src/types/associations/hasMany.js +1 -0
  34. package/dist/esm/src/types/associations/hasOne.js +1 -0
  35. package/dist/esm/src/types/associations/shared.js +1 -0
  36. package/dist/esm/src/types/db.js +1 -0
  37. package/dist/esm/src/types/dream.js +1 -0
  38. package/dist/esm/src/types/lifecycle.js +1 -0
  39. package/dist/esm/src/types/logger.js +1 -0
  40. package/dist/esm/src/types/openapi.js +1 -0
  41. package/dist/esm/src/types/query.js +1 -0
  42. package/dist/esm/src/types/utils.js +1 -0
  43. package/dist/esm/src/types/validation.js +1 -0
  44. package/dist/esm/src/types/variadic.js +1 -0
  45. package/dist/types/src/Dream.d.ts +42 -9
  46. package/dist/types/src/dream/DreamClassTransactionBuilder.d.ts +72 -37
  47. package/dist/types/src/dream/DreamInstanceTransactionBuilder.d.ts +3 -3
  48. package/dist/types/src/dream/LeftJoinLoadBuilder.d.ts +2 -2
  49. package/dist/types/src/dream/LoadBuilder.d.ts +2 -2
  50. package/dist/types/src/dream/Query.d.ts +1 -1
  51. package/dist/types/src/dream/internal/findOrCreateBy.d.ts +4 -0
  52. package/dist/types/src/dream/internal/updateOrCreateBy.d.ts +4 -0
  53. package/dist/types/src/errors/CreateOrUpdateByFailedToCreateAndUpdate.d.ts +6 -0
  54. package/dist/types/src/types/associations/belongsTo.d.ts +28 -73
  55. package/dist/types/src/types/associations/belongsTo.ts +76 -0
  56. package/dist/types/src/types/associations/hasMany.d.ts +15 -79
  57. package/dist/types/src/types/associations/hasMany.ts +80 -0
  58. package/dist/types/src/types/associations/hasOne.d.ts +8 -26
  59. package/dist/types/src/types/associations/hasOne.ts +26 -0
  60. package/dist/types/src/types/associations/shared.d.ts +98 -444
  61. package/dist/types/src/types/associations/shared.ts +450 -0
  62. package/dist/types/src/types/db.d.ts +9 -14
  63. package/dist/types/src/types/db.ts +14 -0
  64. package/dist/types/src/types/dream.d.ts +130 -509
  65. package/dist/types/src/types/dream.ts +530 -0
  66. package/dist/types/src/types/lifecycle.d.ts +23 -42
  67. package/dist/types/src/types/lifecycle.ts +50 -0
  68. package/dist/types/src/types/logger.d.ts +6 -40
  69. package/dist/types/src/types/logger.ts +42 -0
  70. package/dist/types/src/types/openapi.d.ts +105 -222
  71. package/dist/types/src/types/openapi.ts +255 -0
  72. package/dist/types/src/types/query.d.ts +53 -161
  73. package/dist/types/src/types/query.ts +165 -0
  74. package/dist/types/src/types/utils.d.ts +83 -141
  75. package/dist/types/src/types/utils.ts +173 -0
  76. package/dist/types/src/types/validation.d.ts +17 -18
  77. package/dist/types/src/types/validation.ts +20 -0
  78. package/dist/types/src/types/variadic.d.ts +42 -444
  79. package/dist/types/src/types/variadic.ts +447 -0
  80. package/docs/assets/search.js +1 -1
  81. package/docs/classes/Benchmark.html +2 -2
  82. package/docs/classes/CalendarDate.html +2 -2
  83. package/docs/classes/CreateOrFindByFailedToCreateAndFind.html +3 -3
  84. package/docs/classes/Decorators.html +19 -19
  85. package/docs/classes/Dream.html +205 -185
  86. package/docs/classes/DreamApp.html +4 -4
  87. package/docs/classes/DreamBin.html +2 -2
  88. package/docs/classes/DreamCLI.html +4 -4
  89. package/docs/classes/DreamImporter.html +2 -2
  90. package/docs/classes/DreamLogos.html +2 -2
  91. package/docs/classes/DreamMigrationHelpers.html +7 -7
  92. package/docs/classes/DreamSerializer.html +2 -2
  93. package/docs/classes/DreamTransaction.html +2 -2
  94. package/docs/classes/Encrypt.html +2 -2
  95. package/docs/classes/Env.html +2 -2
  96. package/docs/classes/GlobalNameNotSet.html +3 -3
  97. package/docs/classes/NonLoadedAssociation.html +3 -3
  98. package/docs/classes/Query.html +53 -53
  99. package/docs/classes/Range.html +2 -2
  100. package/docs/classes/RecordNotFound.html +3 -3
  101. package/docs/classes/ValidationError.html +3 -3
  102. package/docs/functions/Attribute.html +1 -1
  103. package/docs/functions/RendersMany.html +1 -1
  104. package/docs/functions/RendersOne.html +1 -1
  105. package/docs/functions/ReplicaSafe.html +1 -1
  106. package/docs/functions/STI.html +1 -1
  107. package/docs/functions/SoftDelete.html +1 -1
  108. package/docs/functions/camelize.html +1 -1
  109. package/docs/functions/capitalize.html +1 -1
  110. package/docs/functions/closeAllDbConnections.html +1 -1
  111. package/docs/functions/compact.html +1 -1
  112. package/docs/functions/dreamDbConnections.html +1 -1
  113. package/docs/functions/dreamPath.html +1 -1
  114. package/docs/functions/generateDream.html +1 -1
  115. package/docs/functions/globalClassNameFromFullyQualifiedModelName.html +1 -1
  116. package/docs/functions/hyphenize.html +1 -1
  117. package/docs/functions/inferSerializerFromDreamClassOrViewModelClass.html +1 -1
  118. package/docs/functions/inferSerializerFromDreamOrViewModel.html +1 -1
  119. package/docs/functions/isEmpty.html +1 -1
  120. package/docs/functions/loadRepl.html +1 -1
  121. package/docs/functions/lookupClassByGlobalName.html +1 -1
  122. package/docs/functions/pascalize.html +1 -1
  123. package/docs/functions/pgErrorType.html +1 -1
  124. package/docs/functions/range-1.html +1 -1
  125. package/docs/functions/relativeDreamPath.html +1 -1
  126. package/docs/functions/round.html +1 -1
  127. package/docs/functions/serializerNameFromFullyQualifiedModelName.html +1 -1
  128. package/docs/functions/sharedPathPrefix.html +1 -1
  129. package/docs/functions/snakeify.html +1 -1
  130. package/docs/functions/sort.html +1 -1
  131. package/docs/functions/sortBy.html +1 -1
  132. package/docs/functions/standardizeFullyQualifiedModelName.html +1 -1
  133. package/docs/functions/uncapitalize.html +1 -1
  134. package/docs/functions/uniq.html +1 -1
  135. package/docs/functions/untypedDb.html +1 -1
  136. package/docs/functions/validateColumn.html +1 -1
  137. package/docs/functions/validateTable.html +1 -1
  138. package/docs/interfaces/AttributeStatement.html +2 -2
  139. package/docs/interfaces/DecoratorContext.html +2 -2
  140. package/docs/interfaces/DreamAppInitOptions.html +2 -2
  141. package/docs/interfaces/DreamAppOpts.html +2 -2
  142. package/docs/interfaces/DreamSerializerAssociationStatement.html +2 -2
  143. package/docs/interfaces/EncryptOptions.html +2 -2
  144. package/docs/interfaces/OpenapiSchemaProperties.html +1 -1
  145. package/docs/interfaces/OpenapiSchemaPropertiesShorthand.html +1 -1
  146. package/docs/interfaces/OpenapiTypeFieldObject.html +1 -1
  147. package/docs/types/Camelized.html +1 -1
  148. package/docs/types/CommonOpenapiSchemaObjectFields.html +1 -1
  149. package/docs/types/DateTime.html +1 -1
  150. package/docs/types/DbConnectionType.html +1 -1
  151. package/docs/types/DreamAssociationMetadata.html +1 -1
  152. package/docs/types/DreamAttributes.html +1 -1
  153. package/docs/types/DreamClassColumn.html +1 -1
  154. package/docs/types/DreamColumn.html +1 -1
  155. package/docs/types/DreamColumnNames.html +1 -1
  156. package/docs/types/DreamLogLevel.html +1 -1
  157. package/docs/types/DreamLogger.html +1 -1
  158. package/docs/types/DreamOrViewModelSerializerKey.html +1 -1
  159. package/docs/types/DreamParamSafeAttributes.html +1 -1
  160. package/docs/types/DreamParamSafeColumnNames.html +1 -1
  161. package/docs/types/DreamSerializerKey.html +1 -1
  162. package/docs/types/DreamSerializers.html +1 -1
  163. package/docs/types/DreamTableSchema.html +1 -1
  164. package/docs/types/DreamVirtualColumns.html +1 -1
  165. package/docs/types/EncryptAlgorithm.html +1 -1
  166. package/docs/types/Hyphenized.html +1 -1
  167. package/docs/types/IdType.html +1 -1
  168. package/docs/types/OpenapiAllTypes.html +1 -1
  169. package/docs/types/OpenapiFormats.html +1 -1
  170. package/docs/types/OpenapiNumberFormats.html +1 -1
  171. package/docs/types/OpenapiPrimitiveTypes.html +1 -1
  172. package/docs/types/OpenapiSchemaArray.html +1 -1
  173. package/docs/types/OpenapiSchemaArrayShorthand.html +1 -1
  174. package/docs/types/OpenapiSchemaBase.html +1 -1
  175. package/docs/types/OpenapiSchemaBody.html +1 -1
  176. package/docs/types/OpenapiSchemaBodyShorthand.html +1 -1
  177. package/docs/types/OpenapiSchemaCommonFields.html +1 -1
  178. package/docs/types/OpenapiSchemaExpressionAllOf.html +1 -1
  179. package/docs/types/OpenapiSchemaExpressionAnyOf.html +1 -1
  180. package/docs/types/OpenapiSchemaExpressionOneOf.html +1 -1
  181. package/docs/types/OpenapiSchemaExpressionRef.html +1 -1
  182. package/docs/types/OpenapiSchemaExpressionRefSchemaShorthand.html +1 -1
  183. package/docs/types/OpenapiSchemaInteger.html +1 -1
  184. package/docs/types/OpenapiSchemaNull.html +1 -1
  185. package/docs/types/OpenapiSchemaNumber.html +1 -1
  186. package/docs/types/OpenapiSchemaObject.html +1 -1
  187. package/docs/types/OpenapiSchemaObjectAllOf.html +1 -1
  188. package/docs/types/OpenapiSchemaObjectAllOfShorthand.html +1 -1
  189. package/docs/types/OpenapiSchemaObjectAnyOf.html +1 -1
  190. package/docs/types/OpenapiSchemaObjectAnyOfShorthand.html +1 -1
  191. package/docs/types/OpenapiSchemaObjectBase.html +1 -1
  192. package/docs/types/OpenapiSchemaObjectBaseShorthand.html +1 -1
  193. package/docs/types/OpenapiSchemaObjectOneOf.html +1 -1
  194. package/docs/types/OpenapiSchemaObjectOneOfShorthand.html +1 -1
  195. package/docs/types/OpenapiSchemaObjectShorthand.html +1 -1
  196. package/docs/types/OpenapiSchemaPrimitiveGeneric.html +1 -1
  197. package/docs/types/OpenapiSchemaShorthandExpressionAllOf.html +1 -1
  198. package/docs/types/OpenapiSchemaShorthandExpressionAnyOf.html +1 -1
  199. package/docs/types/OpenapiSchemaShorthandExpressionOneOf.html +1 -1
  200. package/docs/types/OpenapiSchemaShorthandExpressionSerializableRef.html +1 -1
  201. package/docs/types/OpenapiSchemaShorthandExpressionSerializerRef.html +1 -1
  202. package/docs/types/OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
  203. package/docs/types/OpenapiSchemaString.html +1 -1
  204. package/docs/types/OpenapiShorthandAllTypes.html +1 -1
  205. package/docs/types/OpenapiShorthandPrimitiveTypes.html +1 -1
  206. package/docs/types/OpenapiTypeField.html +1 -1
  207. package/docs/types/Pascalized.html +1 -1
  208. package/docs/types/PrimaryKeyType.html +1 -1
  209. package/docs/types/RoundingPrecision.html +1 -1
  210. package/docs/types/SerializableClassOrSerializerCallback.html +1 -1
  211. package/docs/types/SerializableDreamClassOrViewModelClass.html +1 -1
  212. package/docs/types/SerializableDreamOrViewModel.html +1 -1
  213. package/docs/types/SerializableTypes.html +1 -1
  214. package/docs/types/Snakeified.html +1 -1
  215. package/docs/types/Timestamp.html +1 -1
  216. package/docs/types/UpdateableAssociationProperties.html +1 -1
  217. package/docs/types/UpdateableProperties.html +1 -1
  218. package/docs/types/ValidationType.html +1 -1
  219. package/docs/types/ViewModelSerializerKey.html +1 -1
  220. package/docs/types/WhereStatementForDream.html +1 -1
  221. package/docs/types/WhereStatementForDreamClass.html +1 -1
  222. package/docs/variables/DateTime-1.html +1 -1
  223. package/docs/variables/DreamConst.html +1 -1
  224. package/docs/variables/TRIGRAM_OPERATORS.html +1 -1
  225. package/docs/variables/openapiPrimitiveTypes-1.html +1 -1
  226. package/docs/variables/openapiShorthandPrimitiveTypes-1.html +1 -1
  227. package/docs/variables/ops.html +1 -1
  228. package/docs/variables/primaryKeyTypes.html +1 -1
  229. package/package.json +1 -1
@@ -1,516 +1,137 @@
1
- import { ColumnType, Updateable } from 'kysely'
2
- import { STI_SCOPE_NAME } from '../decorators/class/STI.ts'
3
- import Dream from '../Dream.ts'
4
- import { primaryKeyTypes, TRIGRAM_OPERATORS } from '../dream/constants.ts'
5
- import CalendarDate from '../helpers/CalendarDate.ts'
6
- import { DateTime } from '../helpers/DateTime.ts'
7
- import OpsStatement from '../ops/ops-statement.ts'
8
- import DreamSerializer from '../serializer/index.ts'
9
- import { AssociatedModelParam, OnStatementForAssociation, WhereStatement } from './associations/shared.ts'
10
- import { AssociationTableNames } from './db.js'
11
- import { FindEachOpts } from './query.ts'
12
- import { FilterInterface, Inc } from './utils.ts'
13
- import { AliasedSchemaAssociation } from './variadic.ts'
14
-
15
- export type PrimaryKeyType = (typeof primaryKeyTypes)[number]
16
-
17
- export type IdType = string | number | bigint
18
- export type Timestamp = ColumnType<DateTime | CalendarDate>
19
-
20
- export type MAX_VARIADIC_DEPTH = 25
21
- export type TrigramOperator = (typeof TRIGRAM_OPERATORS)[number]
22
- export type OrderDir = 'asc' | 'desc'
23
-
1
+ import { ColumnType, Updateable } from 'kysely';
2
+ import { STI_SCOPE_NAME } from '../decorators/class/STI.js';
3
+ import Dream from '../Dream.js';
4
+ import { primaryKeyTypes, TRIGRAM_OPERATORS } from '../dream/constants.js';
5
+ import CalendarDate from '../helpers/CalendarDate.js';
6
+ import { DateTime } from '../helpers/DateTime.js';
7
+ import OpsStatement from '../ops/ops-statement.js';
8
+ import DreamSerializer from '../serializer/index.js';
9
+ import { AssociatedModelParam, AssociationStatement, OnStatementForAssociation, WhereStatement } from './associations/shared.js';
10
+ import { AssociationTableNames } from './db.js';
11
+ import { FindEachOpts } from './query.js';
12
+ import { FilterInterface, Inc } from './utils.js';
13
+ import { AliasedSchemaAssociation } from './variadic.js';
14
+ export type PrimaryKeyType = (typeof primaryKeyTypes)[number];
15
+ export type IdType = string | number | bigint;
16
+ export type Timestamp = ColumnType<DateTime | CalendarDate>;
17
+ export type MAX_VARIADIC_DEPTH = 25;
18
+ export type TrigramOperator = (typeof TRIGRAM_OPERATORS)[number];
19
+ export type OrderDir = 'asc' | 'desc';
24
20
  export interface SortableOptions<T extends Dream> {
25
- scope?:
26
- | keyof DreamBelongsToAssociationMetadata<T>
27
- | DreamColumnNames<T>
28
- | (keyof DreamBelongsToAssociationMetadata<T> | DreamColumnNames<T>)[]
21
+ scope?: keyof DreamBelongsToAssociationMetadata<T> | DreamColumnNames<T> | (keyof DreamBelongsToAssociationMetadata<T> | DreamColumnNames<T>)[];
29
22
  }
30
-
31
- export type PrimaryKeyForFind<
32
- I extends Dream,
33
- Schema extends I['schema'] = I['schema'],
34
- TableName extends keyof Schema = I['table'] & keyof Schema,
35
- > =
36
- | Schema[TableName]['columns'][I['primaryKey'] & keyof Schema[TableName]['columns']]['coercedType']
37
- | string
38
- | null
39
- | undefined
40
-
41
- export type DreamColumnNames<
42
- DreamInstance extends Dream,
43
- DB = DreamInstance['DB'],
44
- TableName extends keyof DB = DreamInstance['table'] & keyof DB,
45
- Table extends DB[keyof DB] = DB[TableName],
46
- > = keyof Table & string
47
-
48
- export type DreamParamSafeColumnNames<
49
- DreamInstance extends Dream,
50
- BelongsToForeignKeys = DreamBelongsToForeignKeys<DreamInstance>,
51
- Schema = DreamInstance['schema'],
52
- TableSchema = Schema[DreamInstance['table'] & keyof Schema],
53
- > = Exclude<
54
- DreamColumnNames<DreamInstance>,
55
- | BelongsToForeignKeys
56
- | DreamVirtualColumns<DreamInstance>
57
- | TableSchema['primaryKey' & keyof TableSchema]
58
- | TableSchema['createdAtField' & keyof TableSchema]
59
- | TableSchema['updatedAtField' & keyof TableSchema]
60
- | TableSchema['deletedAtField' & keyof TableSchema]
61
- >
62
-
63
- export type DreamBelongsToForeignKeys<
64
- DreamInstance extends Dream,
65
- Schema = DreamInstance['schema'],
66
- TableSchema = Schema[DreamInstance['table'] & keyof Schema],
67
- AssociationSchema = TableSchema['associations' & keyof TableSchema],
68
- BelongsToAssociationSchema = AssociationSchema[keyof DreamBelongsToAssociationMetadata<DreamInstance> &
69
- keyof AssociationSchema],
70
- BelongsToForeignKeys = Exclude<
71
- BelongsToAssociationSchema['foreignKey' & keyof BelongsToAssociationSchema],
72
- null
73
- >,
74
- > = BelongsToForeignKeys
75
-
76
- export type DreamClassColumnNames<
77
- DreamClass extends typeof Dream,
78
- DreamInstance extends InstanceType<DreamClass> = InstanceType<DreamClass>,
79
- DB = DreamInstance['DB'],
80
- TableName extends keyof DB = DreamInstance['table'] & keyof DB,
81
- Table extends DB[keyof DB] = DB[TableName],
82
- > = keyof Table & string
83
-
84
- export type TableColumnNames<
85
- DB,
86
- TableName extends keyof DB,
87
- Table extends DB[keyof DB] = DB[TableName],
88
- > = keyof Table & string
89
-
90
- export type DreamColumn<
91
- DreamInstance extends Dream,
92
- Column extends keyof Attrs,
93
- Attrs = DreamAttributes<DreamInstance>,
94
- > = Attrs[Column & keyof Attrs]
95
-
96
- export type DreamClassColumn<
97
- DreamClass extends typeof Dream,
98
- Column extends keyof DreamAttributes<DreamInstance>,
99
- DreamInstance extends InstanceType<DreamClass> = InstanceType<DreamClass>,
100
- > = DreamColumn<DreamInstance, Column>
101
-
102
- export type AssociationNameToDream<
103
- DreamInstance extends Dream,
104
- AssociationName extends DreamAssociationNames<DreamInstance>,
105
- PossibleArrayAssociationType = DreamInstance[AssociationName & keyof DreamInstance],
106
- AssociationType extends Dream = PossibleArrayAssociationType extends (infer ElementType)[]
107
- ? ElementType extends Dream
108
- ? ElementType
109
- : never
110
- : PossibleArrayAssociationType extends Dream
111
- ? PossibleArrayAssociationType
112
- : never,
113
- > = AssociationType
114
-
115
- export type DreamAssociationMetadata<
116
- DreamInstance extends Dream,
117
- Schema = DreamInstance['schema'],
118
- AssociationMetadata = Schema[DreamInstance['table'] & keyof Schema]['associations' &
119
- keyof Schema[DreamInstance['table'] & keyof Schema]],
120
- > = AssociationMetadata
121
-
122
- export type DreamAssociationNamesWithoutRequiredOnClauses<
123
- DreamInstance extends Dream,
124
- SchemaAssociations = DreamAssociationMetadata<DreamInstance>,
125
- SchemaTypeInterface = {
126
- [K in keyof SchemaAssociations]: SchemaAssociations[K]['requiredOnClauses' & keyof SchemaAssociations[K]]
127
- },
128
- RequiredOnClauses = keyof FilterInterface<SchemaTypeInterface, null> & string,
129
- > = RequiredOnClauses
130
-
131
- export type DreamAssociationNames<
132
- DreamInstance extends Dream,
133
- SchemaAssociations = DreamAssociationMetadata<DreamInstance>,
134
- > = keyof SchemaAssociations
135
-
136
- type VirtualColumnsForTable<
137
- Schema,
138
- TableName extends keyof Schema,
139
- TableSchema = Schema[TableName],
140
- > = TableSchema['virtualColumns' & keyof TableSchema]
141
-
142
- export type DreamVirtualColumns<
143
- DreamInstance extends Dream,
144
- Schema = DreamInstance['schema'],
145
- > = VirtualColumnsForTable<Schema, DreamInstance['table'] & keyof Schema>
146
-
147
- export type DreamBelongsToAssociationMetadata<
148
- DreamInstance extends Dream,
149
- SchemaAssociations = DreamAssociationMetadata<DreamInstance>,
150
- SchemaTypeInterface = {
151
- [K in keyof SchemaAssociations]: SchemaAssociations[K]['type' & keyof SchemaAssociations[K]]
152
- },
153
- BelongsToKeys = keyof FilterInterface<SchemaTypeInterface, 'BelongsTo'> & string,
154
- TypeRecord = { [K in BelongsToKeys & string]: SchemaAssociations[K & keyof SchemaAssociations] },
155
- > = TypeRecord
156
-
157
- export type DreamAttributes<
158
- DreamInstance extends Dream,
159
- Schema = DreamInstance['schema'],
160
- SchemaColumns = Schema[DreamInstance['table'] & keyof Schema]['columns' &
161
- keyof Schema[DreamInstance['table'] & keyof Schema]],
162
- > = {
163
- -readonly [K in keyof SchemaColumns]: SchemaColumns[K]['coercedType' & keyof SchemaColumns[K]]
164
- }
165
-
166
- export type DreamAttributeDbTypes<
167
- DreamInstance extends Dream,
168
- Schema = DreamInstance['schema'],
169
- SchemaColumns = Schema[DreamInstance['table'] & keyof Schema]['columns' &
170
- keyof Schema[DreamInstance['table'] & keyof Schema]],
171
- > = {
172
- -readonly [K in keyof SchemaColumns]: SchemaColumns[K]['dbType' & keyof SchemaColumns[K]]
173
- }
174
-
23
+ export type PrimaryKeyForFind<I extends Dream, Schema extends I['schema'] = I['schema'], TableName extends keyof Schema = I['table'] & keyof Schema> = Schema[TableName]['columns'][I['primaryKey'] & keyof Schema[TableName]['columns']]['coercedType'] | string | null | undefined;
24
+ export type DreamColumnNames<DreamInstance extends Dream, DB = DreamInstance['DB'], TableName extends keyof DB = DreamInstance['table'] & keyof DB, Table extends DB[keyof DB] = DB[TableName]> = keyof Table & string;
25
+ export type DreamParamSafeColumnNames<DreamInstance extends Dream, BelongsToForeignKeys = DreamBelongsToForeignKeys<DreamInstance>, Schema = DreamInstance['schema'], TableSchema = Schema[DreamInstance['table'] & keyof Schema]> = Exclude<DreamColumnNames<DreamInstance>, BelongsToForeignKeys | DreamVirtualColumns<DreamInstance> | TableSchema['primaryKey' & keyof TableSchema] | TableSchema['createdAtField' & keyof TableSchema] | TableSchema['updatedAtField' & keyof TableSchema] | TableSchema['deletedAtField' & keyof TableSchema]>;
26
+ export type DreamBelongsToForeignKeys<DreamInstance extends Dream, Schema = DreamInstance['schema'], TableSchema = Schema[DreamInstance['table'] & keyof Schema], AssociationSchema = TableSchema['associations' & keyof TableSchema], BelongsToAssociationSchema = AssociationSchema[keyof DreamBelongsToAssociationMetadata<DreamInstance> & keyof AssociationSchema], BelongsToForeignKeys = Exclude<BelongsToAssociationSchema['foreignKey' & keyof BelongsToAssociationSchema], null>> = BelongsToForeignKeys;
27
+ export type DreamClassColumnNames<DreamClass extends typeof Dream, DreamInstance extends InstanceType<DreamClass> = InstanceType<DreamClass>, DB = DreamInstance['DB'], TableName extends keyof DB = DreamInstance['table'] & keyof DB, Table extends DB[keyof DB] = DB[TableName]> = keyof Table & string;
28
+ export type TableColumnNames<DB, TableName extends keyof DB, Table extends DB[keyof DB] = DB[TableName]> = keyof Table & string;
29
+ export type DreamColumn<DreamInstance extends Dream, Column extends keyof Attrs, Attrs = DreamAttributes<DreamInstance>> = Attrs[Column & keyof Attrs];
30
+ export type DreamClassColumn<DreamClass extends typeof Dream, Column extends keyof DreamAttributes<DreamInstance>, DreamInstance extends InstanceType<DreamClass> = InstanceType<DreamClass>> = DreamColumn<DreamInstance, Column>;
31
+ export type AssociationNameToDream<DreamInstance extends Dream, AssociationName extends DreamAssociationNames<DreamInstance>, PossibleArrayAssociationType = DreamInstance[AssociationName & keyof DreamInstance], AssociationType extends Dream = PossibleArrayAssociationType extends (infer ElementType)[] ? ElementType extends Dream ? ElementType : never : PossibleArrayAssociationType extends Dream ? PossibleArrayAssociationType : never> = AssociationType;
32
+ export type DreamAssociationMetadata<DreamInstance extends Dream, Schema = DreamInstance['schema'], AssociationMetadata = Schema[DreamInstance['table'] & keyof Schema]['associations' & keyof Schema[DreamInstance['table'] & keyof Schema]]> = AssociationMetadata;
33
+ export type DreamAssociationNamesWithoutRequiredOnClauses<DreamInstance extends Dream, SchemaAssociations = DreamAssociationMetadata<DreamInstance>, SchemaTypeInterface = {
34
+ [K in keyof SchemaAssociations]: SchemaAssociations[K]['requiredOnClauses' & keyof SchemaAssociations[K]];
35
+ }, RequiredOnClauses = keyof FilterInterface<SchemaTypeInterface, null> & string> = RequiredOnClauses;
36
+ export type DreamAssociationNames<DreamInstance extends Dream, SchemaAssociations = DreamAssociationMetadata<DreamInstance>> = keyof SchemaAssociations;
37
+ type VirtualColumnsForTable<Schema, TableName extends keyof Schema, TableSchema = Schema[TableName]> = TableSchema['virtualColumns' & keyof TableSchema];
38
+ export type DreamVirtualColumns<DreamInstance extends Dream, Schema = DreamInstance['schema']> = VirtualColumnsForTable<Schema, DreamInstance['table'] & keyof Schema>;
39
+ export type DreamBelongsToAssociationMetadata<DreamInstance extends Dream, SchemaAssociations = DreamAssociationMetadata<DreamInstance>, SchemaTypeInterface = {
40
+ [K in keyof SchemaAssociations]: SchemaAssociations[K]['type' & keyof SchemaAssociations[K]];
41
+ }, BelongsToKeys = keyof FilterInterface<SchemaTypeInterface, 'BelongsTo'> & string, TypeRecord = {
42
+ [K in BelongsToKeys & string]: SchemaAssociations[K & keyof SchemaAssociations];
43
+ }> = TypeRecord;
44
+ export type DreamAttributes<DreamInstance extends Dream, Schema = DreamInstance['schema'], SchemaColumns = Schema[DreamInstance['table'] & keyof Schema]['columns' & keyof Schema[DreamInstance['table'] & keyof Schema]]> = {
45
+ -readonly [K in keyof SchemaColumns]: SchemaColumns[K]['coercedType' & keyof SchemaColumns[K]];
46
+ };
47
+ export type DreamAttributeDbTypes<DreamInstance extends Dream, Schema = DreamInstance['schema'], SchemaColumns = Schema[DreamInstance['table'] & keyof Schema]['columns' & keyof Schema[DreamInstance['table'] & keyof Schema]]> = {
48
+ -readonly [K in keyof SchemaColumns]: SchemaColumns[K]['dbType' & keyof SchemaColumns[K]];
49
+ };
175
50
  export type DreamParamSafeAttributes<DreamInstance extends Dream> = {
176
- [K in keyof DreamAttributes<DreamInstance> &
177
- DreamParamSafeColumnNames<DreamInstance>]: DreamAttributes<DreamInstance>[K]
51
+ [K in keyof DreamAttributes<DreamInstance> & DreamParamSafeColumnNames<DreamInstance>]: DreamAttributes<DreamInstance>[K];
52
+ };
53
+ export type DreamTableSchema<DreamInstance extends Dream> = Updateable<DreamInstance['DB'][DreamInstance['table']]>;
54
+ export type TableColumnType<Schema, TableName, Column, TableSchema extends Schema[TableName & keyof Schema] = Schema[TableName & keyof Schema], TableColumns extends TableSchema['columns' & keyof TableSchema] = TableSchema['columns' & keyof TableSchema], TableColumnMetadata extends TableColumns[Column & keyof TableColumns] = TableColumns[Column & keyof TableColumns], ColumnType extends TableColumnMetadata['coercedType' & keyof TableColumnMetadata] = TableColumnMetadata['coercedType' & keyof TableColumnMetadata]> = ColumnType;
55
+ export type TableColumnEnumTypeArray<Schema, TableName, Column, TableSchema extends Schema[TableName & keyof Schema] = Schema[TableName & keyof Schema], TableColumns extends TableSchema['columns' & keyof TableSchema] = TableSchema['columns' & keyof TableSchema], TableColumnMetadata extends TableColumns[Column & keyof TableColumns] = TableColumns[Column & keyof TableColumns], EnumTypeCandidate = TableColumnMetadata['enumArrayType' & keyof TableColumnMetadata], EnumTypeArray extends string[] | null = EnumTypeCandidate extends null ? null : EnumTypeCandidate extends undefined ? null : EnumTypeCandidate extends string[] ? EnumTypeCandidate : never> = EnumTypeArray;
56
+ type AssociationMetadataForTable<Schema, TableName extends keyof Schema> = Schema[TableName]['associations' & keyof Schema[TableName]];
57
+ export type AssociationNamesForTable<Schema, TableName extends keyof Schema> = keyof AssociationMetadataForTable<Schema, TableName> | AliasedSchemaAssociation<Schema, TableName>;
58
+ type MetadataForAssociation<Schema, TableName extends keyof Schema, AssociationName, AssociationMetadata = AssociationMetadataForTable<Schema, TableName>> = AssociationMetadata[AssociationName & keyof AssociationMetadata];
59
+ export type AssociationTableName<Schema, TableName extends keyof Schema, AssociationName, AssociationData = MetadataForAssociation<Schema, TableName, AssociationName>> = (AssociationData['tables' & keyof AssociationData] & any[])[0] & keyof Schema;
60
+ export type JoinAndStatements<DB, Schema, TableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB, RequiredOnClauseKeysForThisAssociation> = RequiredOnClauseKeysForThisAssociation extends null ? {
61
+ and?: WhereStatement<DB, Schema, TableName>;
62
+ andNot?: WhereStatement<DB, Schema, TableName>;
63
+ andAny?: WhereStatement<DB, Schema, TableName>[];
64
+ } : RequiredOnClauseKeysForThisAssociation extends string[] ? {
65
+ and: OnStatementForAssociation<DB, Schema, TableName, RequiredOnClauseKeysForThisAssociation>;
66
+ andNot?: WhereStatement<DB, Schema, TableName>;
67
+ andAny?: WhereStatement<DB, Schema, TableName>[];
68
+ } : never;
69
+ export type UpdateablePropertiesForClass<DreamClass extends typeof Dream, TableName extends AssociationTableNames<InstanceType<DreamClass>['DB'], InstanceType<DreamClass>['schema']> & InstanceType<DreamClass>['table'] = InstanceType<DreamClass>['table'], VirtualColumns = DreamVirtualColumns<InstanceType<DreamClass>>> = Partial<Updateable<InstanceType<DreamClass>['DB'][TableName]> & (VirtualColumns extends readonly any[] ? Record<VirtualColumns[number], any> : object) & (AssociatedModelParam<InstanceType<DreamClass>> extends never ? object : AssociatedModelParam<InstanceType<DreamClass>>)>;
70
+ export type UpdateableAssociationProperties<DreamInstance extends Dream, AssociationClass extends Dream, Schema = DreamInstance['schema'], AssociationTableName extends AssociationTableNames<DreamInstance['DB'], DreamInstance['schema']> & keyof DreamInstance['DB'] = AssociationClass['table'], VirtualColumns = VirtualColumnsForTable<Schema, AssociationTableName>> = Partial<Updateable<DreamInstance['DB'][AssociationTableName]> & (VirtualColumns extends readonly any[] ? Record<VirtualColumns[number], any> : object) & (AssociatedModelParam<AssociationClass> extends never ? object : AssociatedModelParam<AssociationClass>)>;
71
+ export type AttributeKeys<I extends Dream, TableName extends AssociationTableNames<I['DB'], I['schema']> & I['table'] = I['table'], VirtualColumns = DreamVirtualColumns<I>> = keyof (Updateable<I['DB'][TableName]> & (VirtualColumns extends readonly any[] ? Record<VirtualColumns[number], any> : object));
72
+ export type UpdateableProperties<I extends Dream, TableName extends AssociationTableNames<I['DB'], I['schema']> & I['table'] = I['table'], VirtualColumns = DreamVirtualColumns<I>> = Partial<Updateable<I['DB'][TableName]> & (VirtualColumns extends readonly any[] ? Record<VirtualColumns[number], any> : object) & (AssociatedModelParam<I> extends never ? object : AssociatedModelParam<I>)>;
73
+ export interface CreateOrFindByExtraOpts<T extends typeof Dream> {
74
+ createWith?: UpdateablePropertiesForClass<T>;
178
75
  }
179
-
180
- export type DreamTableSchema<DreamInstance extends Dream> = Updateable<
181
- DreamInstance['DB'][DreamInstance['table']]
182
- >
183
-
184
- export type TableColumnType<
185
- Schema,
186
- TableName,
187
- Column,
188
- TableSchema extends Schema[TableName & keyof Schema] = Schema[TableName & keyof Schema],
189
- TableColumns extends TableSchema['columns' & keyof TableSchema] = TableSchema['columns' &
190
- keyof TableSchema],
191
- TableColumnMetadata extends TableColumns[Column & keyof TableColumns] = TableColumns[Column &
192
- keyof TableColumns],
193
- ColumnType extends TableColumnMetadata['coercedType' &
194
- keyof TableColumnMetadata] = TableColumnMetadata['coercedType' & keyof TableColumnMetadata],
195
- > = ColumnType
196
-
197
- export type TableColumnEnumTypeArray<
198
- Schema,
199
- TableName,
200
- Column,
201
- TableSchema extends Schema[TableName & keyof Schema] = Schema[TableName & keyof Schema],
202
- TableColumns extends TableSchema['columns' & keyof TableSchema] = TableSchema['columns' &
203
- keyof TableSchema],
204
- TableColumnMetadata extends TableColumns[Column & keyof TableColumns] = TableColumns[Column &
205
- keyof TableColumns],
206
- EnumTypeCandidate = TableColumnMetadata['enumArrayType' & keyof TableColumnMetadata],
207
- EnumTypeArray extends string[] | null = EnumTypeCandidate extends null
208
- ? null
209
- : EnumTypeCandidate extends undefined
210
- ? null
211
- : EnumTypeCandidate extends string[]
212
- ? EnumTypeCandidate
213
- : never,
214
- > = EnumTypeArray
215
-
216
- ///////////////////////////
217
- // Association type helpers
218
- ///////////////////////////
219
- type AssociationMetadataForTable<Schema, TableName extends keyof Schema> = Schema[TableName]['associations' &
220
- keyof Schema[TableName]]
221
-
222
- export type AssociationNamesForTable<Schema, TableName extends keyof Schema> =
223
- | keyof AssociationMetadataForTable<Schema, TableName>
224
- | AliasedSchemaAssociation<Schema, TableName>
225
-
226
- type MetadataForAssociation<
227
- Schema,
228
- TableName extends keyof Schema,
229
- AssociationName,
230
- AssociationMetadata = AssociationMetadataForTable<Schema, TableName>,
231
- > = AssociationMetadata[AssociationName & keyof AssociationMetadata]
232
-
233
- export type AssociationTableName<
234
- Schema,
235
- TableName extends keyof Schema,
236
- AssociationName,
237
- AssociationData = MetadataForAssociation<Schema, TableName, AssociationName>,
238
- > = (AssociationData['tables' & keyof AssociationData] & any[])[0] & keyof Schema
239
-
240
- export type JoinAndStatements<
241
- DB,
242
- Schema,
243
- TableName extends keyof Schema & AssociationTableNames<DB, Schema> & keyof DB,
244
- RequiredOnClauseKeysForThisAssociation,
245
- > = RequiredOnClauseKeysForThisAssociation extends null
246
- ? {
247
- and?: WhereStatement<DB, Schema, TableName>
248
- andNot?: WhereStatement<DB, Schema, TableName>
249
- // andNot?: WhereStatementWithoutSimilarityClauses<DB, Schema, TableName>
250
- andAny?: WhereStatement<DB, Schema, TableName>[]
251
- // andAny?: WhereStatementWithoutSimilarityClauses<DB, Schema, TableName>[]
252
- }
253
- : RequiredOnClauseKeysForThisAssociation extends string[]
254
- ? {
255
- and: OnStatementForAssociation<DB, Schema, TableName, RequiredOnClauseKeysForThisAssociation>
256
- andNot?: WhereStatement<DB, Schema, TableName>
257
- // andNot?: WhereStatementWithoutSimilarityClauses<DB, Schema, TableName>
258
- andAny?: WhereStatement<DB, Schema, TableName>[]
259
- // andAny?: WhereStatementWithoutSimilarityClauses<DB, Schema, TableName>[]
260
- }
261
- : never
262
- ////////////////////////////////
263
- // end: Association type helpers
264
- ////////////////////////////////
265
-
266
- export type UpdateablePropertiesForClass<
267
- DreamClass extends typeof Dream,
268
- TableName extends AssociationTableNames<
269
- InstanceType<DreamClass>['DB'],
270
- InstanceType<DreamClass>['schema']
271
- > &
272
- InstanceType<DreamClass>['table'] = InstanceType<DreamClass>['table'],
273
- VirtualColumns = DreamVirtualColumns<InstanceType<DreamClass>>,
274
- > = Partial<
275
- Updateable<InstanceType<DreamClass>['DB'][TableName]> &
276
- (VirtualColumns extends readonly any[] ? Record<VirtualColumns[number], any> : object) &
277
- (AssociatedModelParam<InstanceType<DreamClass>> extends never
278
- ? object
279
- : AssociatedModelParam<InstanceType<DreamClass>>)
280
- >
281
-
282
- export type UpdateableAssociationProperties<
283
- DreamInstance extends Dream,
284
- AssociationClass extends Dream,
285
- Schema = DreamInstance['schema'],
286
- AssociationTableName extends AssociationTableNames<DreamInstance['DB'], DreamInstance['schema']> &
287
- keyof DreamInstance['DB'] = AssociationClass['table'],
288
- VirtualColumns = VirtualColumnsForTable<Schema, AssociationTableName>,
289
- > = Partial<
290
- Updateable<DreamInstance['DB'][AssociationTableName]> &
291
- (VirtualColumns extends readonly any[] ? Record<VirtualColumns[number], any> : object) &
292
- (AssociatedModelParam<AssociationClass> extends never ? object : AssociatedModelParam<AssociationClass>)
293
- >
294
-
295
- export type AttributeKeys<
296
- I extends Dream,
297
- TableName extends AssociationTableNames<I['DB'], I['schema']> & I['table'] = I['table'],
298
- VirtualColumns = DreamVirtualColumns<I>,
299
- > = keyof (Updateable<I['DB'][TableName]> &
300
- (VirtualColumns extends readonly any[] ? Record<VirtualColumns[number], any> : object))
301
-
302
- export type UpdateableProperties<
303
- I extends Dream,
304
- TableName extends AssociationTableNames<I['DB'], I['schema']> & I['table'] = I['table'],
305
- VirtualColumns = DreamVirtualColumns<I>,
306
- > = Partial<
307
- Updateable<I['DB'][TableName]> &
308
- (VirtualColumns extends readonly any[] ? Record<VirtualColumns[number], any> : object) &
309
- (AssociatedModelParam<I> extends never ? object : AssociatedModelParam<I>)
310
- >
311
-
312
- // Model global names and tables
313
- export type TableNameForGlobalModelName<
314
- I extends Dream,
315
- GMN extends keyof GlobalModelNameTableMap<I>,
316
- > = GlobalModelNameTableMap<I>[GMN]
317
-
318
- export type GlobalModelNames<I extends Dream> = keyof GlobalModelNameTableMap<I>
319
-
320
- export type GlobalModelNameTableMap<
321
- I extends Dream,
322
- GlobalSchema = I['globalSchema'],
323
- GlobalNames = GlobalSchema['globalNames' & keyof GlobalSchema],
324
- > = GlobalNames['models' & keyof GlobalNames]
325
- // end:Model global names and tables
326
-
327
- // Serializer global names
328
- export type GlobalSerializerName<I extends Dream> = GlobalSerializerNames<I>[number]
329
-
330
- type GlobalSerializerNames<
331
- I extends Dream,
332
- GlobalSchema = I['globalSchema'],
333
- GlobalNames = GlobalSchema['globalNames' & keyof GlobalSchema],
334
- > = GlobalNames['serializers' & keyof GlobalNames]
335
- // end:Serializer global names
336
-
337
- export type DreamSerializers<I extends Dream> = Record<'default', GlobalSerializerName<I>> &
338
- Record<string, GlobalSerializerName<I>>
339
-
340
- export type DreamConstructorType<T extends Dream> = (new (...arguments_: any[]) => T) & typeof Dream
341
-
342
- export type ViewModel = { serializers: Record<string, string> }
343
- export type ViewModelClass = abstract new (...args: any) => ViewModel
344
-
345
- export type SerializableDreamOrViewModel = ViewModel
346
- export type SerializableDreamClassOrViewModelClass = abstract new (
347
- ...args: any
348
- ) => SerializableDreamOrViewModel
349
-
350
- export type DreamSerializerCallback = () => typeof DreamSerializer
351
- export type SerializableClassOrSerializerCallback =
352
- | SerializableDreamClassOrViewModelClass
353
- | DreamSerializerCallback
354
-
355
- export type SerializableClassOrClasses =
356
- | DreamSerializerCallback
357
- | SerializableDreamClassOrViewModelClass
358
- | SerializableDreamClassOrViewModelClass[]
359
-
360
- // preload
361
- export type NextPreloadArgumentType<
362
- Schema,
363
- PreviousTableNames,
364
- PreviousSchemaAssociations = PreviousTableNames extends undefined
365
- ? undefined
366
- : Schema[PreviousTableNames & keyof Schema]['associations' &
367
- keyof Schema[PreviousTableNames & keyof Schema]],
368
- > = PreviousTableNames extends undefined
369
- ? undefined
370
- : (keyof PreviousSchemaAssociations & string) | (keyof PreviousSchemaAssociations & string)[]
371
-
372
- export type PreloadArgumentTypeAssociatedTableNames<
373
- Schema,
374
- PreviousTableNames,
375
- ArgumentType,
376
- PreviousSchemaAssociations = PreviousTableNames extends undefined
377
- ? undefined
378
- : Schema[PreviousTableNames & keyof Schema],
379
- > = ArgumentType extends string[]
380
- ? undefined
381
- : (PreviousSchemaAssociations[ArgumentType & (keyof PreviousSchemaAssociations & string)] &
382
- string[])[number]
383
- // end:preload
384
-
385
- export type AssociationNameToDreamClassMap = Record<string, typeof Dream>
386
- export type AssociationNameToAssociationMap = Record<string, AssociationMetadata>
387
- export type AssociationNameToAssociationDataAndDreamClassMap = Record<
388
- string,
389
- {
390
- dreamClass: typeof Dream
391
- association: AssociationMetadata
392
- }
393
- >
394
-
395
- type IdToDreamMap = Map<string | number, Dream>
396
- export type AliasToDreamIdMap = Record<string, IdToDreamMap>
397
-
398
- export type RelaxedPreloadStatement<Depth extends number = 0> = RelaxedJoinStatement<Depth>
399
-
400
- export type RelaxedJoinStatement<Depth extends number = 0> = Depth extends 7
401
- ? object
402
- : Record<string, RelaxedJoinStatement<Inc<Depth>>>
403
-
404
- export type RelaxedPreloadOnStatement<DB, Schema, Depth extends number = 0> = Depth extends 7
405
- ? object
406
- : {
407
- [key: string]:
408
- | RelaxedPreloadOnStatement<DB, Schema, Inc<Depth>>
409
- | JoinAndStatements<any, any, any, any>
410
- | FakeOnClauseValue
411
- | object
412
- }
413
-
414
- export type RelaxedJoinAndStatement<DB, Schema, Depth extends number = 0> = Depth extends 7
415
- ? object
416
- : {
417
- [key: string]:
418
- | RelaxedJoinAndStatement<DB, Schema, Inc<Depth>>
419
- | JoinAndStatements<any, any, any, any>
420
- | FakeOnClauseValue
421
- | object
422
- }
423
-
424
- // Just need something that is not an object, but that could be an array and also null
425
- type FakeOnClauseValue = string | string[] | number | number[] | null
426
-
427
- export type TableOrAssociationName<Schema> = (keyof Schema & string) | (keyof Schema[keyof Schema] & string)
428
-
429
- export type SqlCommandType = 'select' | 'update' | 'delete' | 'insert'
430
-
431
- export type DreamSerializeOptions<T> = {
432
- serializerKey?: DreamSerializerKey<T>
433
- casing?: 'camel' | 'snake' | null
76
+ export interface UpdateOrCreateByExtraOpts<T extends typeof Dream> {
77
+ with?: UpdateablePropertiesForClass<T>;
78
+ skipHooks?: boolean;
434
79
  }
435
-
436
- export type DreamOrViewModelSerializerKey<T> = T extends Dream
437
- ? DreamSerializerKey<T>
438
- : ViewModelSerializerKey<T>
439
-
440
- export type DreamSerializerKey<
441
- T,
442
- U = T extends (infer R)[] ? R : T,
443
- Table = U['table' & keyof U] extends string ? U['table' & keyof U] : never,
444
- Schema = U['schema' & keyof U] extends object ? U['schema' & keyof U] : never,
445
- TableSchema = Table extends never ? never : Schema extends never ? never : Schema[Table & keyof Schema],
446
- SerializerKeys = TableSchema extends never
447
- ? never
448
- : TableSchema['serializerKeys' & keyof TableSchema] & (string[] | Readonly<string[]>),
449
- SerializerKey = SerializerKeys extends string[] | Readonly<string[]> ? SerializerKeys[number] : never,
450
- > = SerializerKey
451
-
452
- export type ViewModelSerializerKey<
453
- T,
454
- U = T extends (infer R)[] ? R : T,
455
- SerializerType = U extends null
456
- ? never
457
- : U['serializers' & keyof U] extends object
458
- ? keyof U['serializers' & keyof U]
459
- : never,
460
- > = SerializerType
461
-
80
+ export type TableNameForGlobalModelName<I extends Dream, GMN extends keyof GlobalModelNameTableMap<I>> = GlobalModelNameTableMap<I>[GMN];
81
+ export type GlobalModelNames<I extends Dream> = keyof GlobalModelNameTableMap<I>;
82
+ export type GlobalModelNameTableMap<I extends Dream, GlobalSchema = I['globalSchema'], GlobalNames = GlobalSchema['globalNames' & keyof GlobalSchema]> = GlobalNames['models' & keyof GlobalNames];
83
+ export type GlobalSerializerName<I extends Dream> = GlobalSerializerNames<I>[number];
84
+ type GlobalSerializerNames<I extends Dream, GlobalSchema = I['globalSchema'], GlobalNames = GlobalSchema['globalNames' & keyof GlobalSchema]> = GlobalNames['serializers' & keyof GlobalNames];
85
+ export type DreamSerializers<I extends Dream> = Record<'default', GlobalSerializerName<I>> & Record<string, GlobalSerializerName<I>>;
86
+ export type DreamConstructorType<T extends Dream> = (new (...arguments_: any[]) => T) & typeof Dream;
87
+ export type ViewModel = {
88
+ serializers: Record<string, string>;
89
+ };
90
+ export type ViewModelClass = abstract new (...args: any) => ViewModel;
91
+ export type SerializableDreamOrViewModel = ViewModel;
92
+ export type SerializableDreamClassOrViewModelClass = abstract new (...args: any) => SerializableDreamOrViewModel;
93
+ export type DreamSerializerCallback = () => typeof DreamSerializer;
94
+ export type SerializableClassOrSerializerCallback = SerializableDreamClassOrViewModelClass | DreamSerializerCallback;
95
+ export type SerializableClassOrClasses = DreamSerializerCallback | SerializableDreamClassOrViewModelClass | SerializableDreamClassOrViewModelClass[];
96
+ export type NextPreloadArgumentType<Schema, PreviousTableNames, PreviousSchemaAssociations = PreviousTableNames extends undefined ? undefined : Schema[PreviousTableNames & keyof Schema]['associations' & keyof Schema[PreviousTableNames & keyof Schema]]> = PreviousTableNames extends undefined ? undefined : (keyof PreviousSchemaAssociations & string) | (keyof PreviousSchemaAssociations & string)[];
97
+ export type PreloadArgumentTypeAssociatedTableNames<Schema, PreviousTableNames, ArgumentType, PreviousSchemaAssociations = PreviousTableNames extends undefined ? undefined : Schema[PreviousTableNames & keyof Schema]> = ArgumentType extends string[] ? undefined : (PreviousSchemaAssociations[ArgumentType & (keyof PreviousSchemaAssociations & string)] & string[])[number];
98
+ export type AssociationNameToDreamClassMap = Record<string, typeof Dream>;
99
+ export type AssociationNameToAssociationMap = Record<string, AssociationStatement>;
100
+ export type AssociationNameToAssociationDataAndDreamClassMap = Record<string, {
101
+ dreamClass: typeof Dream;
102
+ association: AssociationStatement;
103
+ }>;
104
+ type IdToDreamMap = Map<string | number, Dream>;
105
+ export type AliasToDreamIdMap = Record<string, IdToDreamMap>;
106
+ export type RelaxedPreloadStatement<Depth extends number = 0> = RelaxedJoinStatement<Depth>;
107
+ export type RelaxedJoinStatement<Depth extends number = 0> = Depth extends 7 ? object : Record<string, RelaxedJoinStatement<Inc<Depth>>>;
108
+ export type RelaxedPreloadOnStatement<DB, Schema, Depth extends number = 0> = Depth extends 7 ? object : {
109
+ [key: string]: RelaxedPreloadOnStatement<DB, Schema, Inc<Depth>> | JoinAndStatements<any, any, any, any> | FakeOnClauseValue | object;
110
+ };
111
+ export type RelaxedJoinAndStatement<DB, Schema, Depth extends number = 0> = Depth extends 7 ? object : {
112
+ [key: string]: RelaxedJoinAndStatement<DB, Schema, Inc<Depth>> | JoinAndStatements<any, any, any, any> | FakeOnClauseValue | object;
113
+ };
114
+ type FakeOnClauseValue = string | string[] | number | number[] | null;
115
+ export type TableOrAssociationName<Schema> = (keyof Schema & string) | (keyof Schema[keyof Schema] & string);
116
+ export type SqlCommandType = 'select' | 'update' | 'delete' | 'insert';
117
+ export type DreamSerializeOptions<T> = {
118
+ serializerKey?: DreamSerializerKey<T>;
119
+ casing?: 'camel' | 'snake' | null;
120
+ };
121
+ export type DreamOrViewModelSerializerKey<T> = T extends Dream ? DreamSerializerKey<T> : ViewModelSerializerKey<T>;
122
+ export type DreamSerializerKey<T, U = T extends (infer R)[] ? R : T, Table = U['table' & keyof U] extends string ? U['table' & keyof U] : never, Schema = U['schema' & keyof U] extends object ? U['schema' & keyof U] : never, TableSchema = Table extends never ? never : Schema extends never ? never : Schema[Table & keyof Schema], SerializerKeys = TableSchema extends never ? never : TableSchema['serializerKeys' & keyof TableSchema] & (string[] | Readonly<string[]>), SerializerKey = SerializerKeys extends string[] | Readonly<string[]> ? SerializerKeys[number] : never> = SerializerKey;
123
+ export type ViewModelSerializerKey<T, U = T extends (infer R)[] ? R : T, SerializerType = U extends null ? never : U['serializers' & keyof U] extends object ? keyof U['serializers' & keyof U] : never> = SerializerType;
462
124
  export interface SimilarityStatement {
463
- tableName: string
464
- tableAlias: string
465
- columnName: string
466
- opsStatement: OpsStatement<any, any>
125
+ tableName: string;
126
+ tableAlias: string;
127
+ columnName: string;
128
+ opsStatement: OpsStatement<any, any>;
467
129
  }
468
-
469
- export type PassthroughColumnNames<
470
- DreamConf,
471
- GlobalSchema = DreamConf['globalSchema' & keyof DreamConf],
472
- PassthroughColumns = GlobalSchema['passthroughColumns' & keyof GlobalSchema],
473
- > = PassthroughColumns
474
-
475
- export type DefaultScopeName<
476
- DreamInstance extends Dream,
477
- Schema = DreamInstance['schema'],
478
- TableName extends keyof Schema = DreamInstance['table'] & keyof Schema,
479
- > = DefaultScopeNameForTable<Schema, TableName>
480
-
481
- export type DefaultScopeNameForTable<
482
- Schema,
483
- TableName extends keyof Schema,
484
- SchemaTable = Schema[TableName],
485
- SchemaDefaultScopes extends string[] = SchemaTable['scopes' & keyof SchemaTable]['default' &
486
- keyof SchemaTable['scopes' & keyof SchemaTable]] &
487
- string[],
488
- > =
489
- // it is not valid to remove the STI scope
490
- Exclude<SchemaDefaultScopes[number], typeof STI_SCOPE_NAME>
491
-
492
- export type AllDefaultScopeNames<
493
- DreamConf,
494
- GlobalSchema = DreamConf['globalSchema' & keyof DreamConf],
495
- AllNames = GlobalSchema['allDefaultScopeNames' & keyof GlobalSchema],
496
- > =
497
- // it is not valid to remove the STI scope
498
- Exclude<AllNames[number & keyof AllNames], typeof STI_SCOPE_NAME>
499
-
500
- export type NamedScopeName<
501
- DreamInstance extends Dream,
502
- Schema = DreamInstance['schema'],
503
- SchemaTable = Schema[DreamInstance['table'] & keyof Schema],
504
- SchemaNamedScopes extends string[] = SchemaTable['scopes' & keyof SchemaTable]['named' &
505
- keyof SchemaTable['scopes' & keyof SchemaTable]] &
506
- string[],
507
- > = SchemaNamedScopes[number]
508
-
509
- export type DefaultOrNamedScopeName<DreamInstance extends Dream> =
510
- | DefaultScopeName<DreamInstance>
511
- | NamedScopeName<DreamInstance>
512
-
513
- export type PluckEachArgs<ColumnNames extends unknown[], CbArgTypes extends unknown[]> =
514
- | [...fields: ColumnNames]
515
- | [...fields: ColumnNames, callback: (...values: CbArgTypes) => void | Promise<void>]
516
- | [...fields: ColumnNames, callback: (...values: CbArgTypes) => void | Promise<void>, opts: FindEachOpts]
130
+ export type PassthroughColumnNames<DreamConf, GlobalSchema = DreamConf['globalSchema' & keyof DreamConf], PassthroughColumns = GlobalSchema['passthroughColumns' & keyof GlobalSchema]> = PassthroughColumns;
131
+ export type DefaultScopeName<DreamInstance extends Dream, Schema = DreamInstance['schema'], TableName extends keyof Schema = DreamInstance['table'] & keyof Schema> = DefaultScopeNameForTable<Schema, TableName>;
132
+ export type DefaultScopeNameForTable<Schema, TableName extends keyof Schema, SchemaTable = Schema[TableName], SchemaDefaultScopes extends string[] = SchemaTable['scopes' & keyof SchemaTable]['default' & keyof SchemaTable['scopes' & keyof SchemaTable]] & string[]> = Exclude<SchemaDefaultScopes[number], typeof STI_SCOPE_NAME>;
133
+ export type AllDefaultScopeNames<DreamConf, GlobalSchema = DreamConf['globalSchema' & keyof DreamConf], AllNames = GlobalSchema['allDefaultScopeNames' & keyof GlobalSchema]> = Exclude<AllNames[number & keyof AllNames], typeof STI_SCOPE_NAME>;
134
+ export type NamedScopeName<DreamInstance extends Dream, Schema = DreamInstance['schema'], SchemaTable = Schema[DreamInstance['table'] & keyof Schema], SchemaNamedScopes extends string[] = SchemaTable['scopes' & keyof SchemaTable]['named' & keyof SchemaTable['scopes' & keyof SchemaTable]] & string[]> = SchemaNamedScopes[number];
135
+ export type DefaultOrNamedScopeName<DreamInstance extends Dream> = DefaultScopeName<DreamInstance> | NamedScopeName<DreamInstance>;
136
+ export type PluckEachArgs<ColumnNames extends unknown[], CbArgTypes extends unknown[]> = [...fields: ColumnNames] | [...fields: ColumnNames, callback: (...values: CbArgTypes) => void | Promise<void>] | [...fields: ColumnNames, callback: (...values: CbArgTypes) => void | Promise<void>, opts: FindEachOpts];
137
+ export {};