@spinajs/orm 2.0.179 → 2.0.181

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 (91) hide show
  1. package/lib/cjs/builders.d.ts +643 -643
  2. package/lib/cjs/builders.js +1602 -1602
  3. package/lib/cjs/builders.js.map +1 -1
  4. package/lib/cjs/converters.d.ts +34 -34
  5. package/lib/cjs/converters.js +104 -104
  6. package/lib/cjs/decorators.d.ts +152 -152
  7. package/lib/cjs/decorators.js +449 -449
  8. package/lib/cjs/dehydrators.d.ts +10 -10
  9. package/lib/cjs/dehydrators.js +47 -47
  10. package/lib/cjs/driver.d.ts +82 -82
  11. package/lib/cjs/driver.js +102 -102
  12. package/lib/cjs/driver.js.map +1 -1
  13. package/lib/cjs/enums.d.ts +116 -116
  14. package/lib/cjs/enums.js +126 -126
  15. package/lib/cjs/enums.js.map +1 -1
  16. package/lib/cjs/exceptions.d.ts +6 -6
  17. package/lib/cjs/exceptions.js +10 -10
  18. package/lib/cjs/hydrators.d.ts +19 -19
  19. package/lib/cjs/hydrators.js +132 -132
  20. package/lib/cjs/hydrators.js.map +1 -1
  21. package/lib/cjs/index.d.ts +17 -17
  22. package/lib/cjs/index.js +33 -33
  23. package/lib/cjs/interfaces.d.ts +919 -919
  24. package/lib/cjs/interfaces.js +279 -279
  25. package/lib/cjs/interfaces.js.map +1 -1
  26. package/lib/cjs/middlewares.d.ts +62 -62
  27. package/lib/cjs/middlewares.js +258 -258
  28. package/lib/cjs/model.d.ts +284 -284
  29. package/lib/cjs/model.js +810 -810
  30. package/lib/cjs/orm.d.ts +61 -61
  31. package/lib/cjs/orm.js +333 -333
  32. package/lib/cjs/orm.js.map +1 -1
  33. package/lib/cjs/relation-objects.d.ts +108 -108
  34. package/lib/cjs/relation-objects.js +221 -221
  35. package/lib/cjs/relations.d.ts +61 -61
  36. package/lib/cjs/relations.js +194 -194
  37. package/lib/cjs/relations.js.map +1 -1
  38. package/lib/cjs/statements.d.ts +143 -143
  39. package/lib/cjs/statements.js +309 -309
  40. package/lib/cjs/statements.js.map +1 -1
  41. package/lib/cjs/types.d.ts +32 -32
  42. package/lib/cjs/types.js +2 -2
  43. package/lib/cjs/wrappers.d.ts +5 -5
  44. package/lib/cjs/wrappers.js +12 -12
  45. package/lib/mjs/builders.d.ts +643 -643
  46. package/lib/mjs/builders.js +1594 -1594
  47. package/lib/mjs/builders.js.map +1 -1
  48. package/lib/mjs/converters.d.ts +34 -34
  49. package/lib/mjs/converters.js +96 -96
  50. package/lib/mjs/decorators.d.ts +152 -152
  51. package/lib/mjs/decorators.js +422 -422
  52. package/lib/mjs/dehydrators.d.ts +10 -10
  53. package/lib/mjs/dehydrators.js +41 -41
  54. package/lib/mjs/driver.d.ts +82 -82
  55. package/lib/mjs/driver.js +98 -98
  56. package/lib/mjs/driver.js.map +1 -1
  57. package/lib/mjs/enums.d.ts +116 -116
  58. package/lib/mjs/enums.js +123 -123
  59. package/lib/mjs/enums.js.map +1 -1
  60. package/lib/mjs/exceptions.d.ts +6 -6
  61. package/lib/mjs/exceptions.js +6 -6
  62. package/lib/mjs/hydrators.d.ts +19 -19
  63. package/lib/mjs/hydrators.js +128 -128
  64. package/lib/mjs/hydrators.js.map +1 -1
  65. package/lib/mjs/index.d.ts +17 -17
  66. package/lib/mjs/index.js +17 -17
  67. package/lib/mjs/interfaces.d.ts +919 -919
  68. package/lib/mjs/interfaces.js +267 -267
  69. package/lib/mjs/interfaces.js.map +1 -1
  70. package/lib/mjs/middlewares.d.ts +62 -62
  71. package/lib/mjs/middlewares.js +249 -249
  72. package/lib/mjs/model.d.ts +284 -284
  73. package/lib/mjs/model.js +800 -800
  74. package/lib/mjs/orm.d.ts +61 -61
  75. package/lib/mjs/orm.js +326 -326
  76. package/lib/mjs/orm.js.map +1 -1
  77. package/lib/mjs/relation-objects.d.ts +108 -108
  78. package/lib/mjs/relation-objects.js +211 -211
  79. package/lib/mjs/relations.d.ts +61 -61
  80. package/lib/mjs/relations.js +191 -191
  81. package/lib/mjs/relations.js.map +1 -1
  82. package/lib/mjs/statements.d.ts +143 -143
  83. package/lib/mjs/statements.js +301 -301
  84. package/lib/mjs/statements.js.map +1 -1
  85. package/lib/mjs/types.d.ts +32 -32
  86. package/lib/mjs/types.js +1 -1
  87. package/lib/mjs/wrappers.d.ts +5 -5
  88. package/lib/mjs/wrappers.js +9 -9
  89. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  90. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  91. package/package.json +5 -5
@@ -1,285 +1,285 @@
1
- import { ModelData, ModelDataWithRelationData, PartialArray, PickRelations } from './types.js';
2
- import { IModelDescriptor, InsertBehaviour, IUpdateResult, ISelectQueryBuilder, IWhereBuilder, QueryScope, IHistoricalModel, IModelBase, IRelationDescriptor } from './interfaces.js';
3
- import { WhereFunction } from './types.js';
4
- import { RawQuery, UpdateQueryBuilder, TruncateTableQueryBuilder, QueryBuilder, SelectQueryBuilder, DeleteQueryBuilder, InsertQueryBuilder } from './builders.js';
5
- import { Op } from './enums.js';
6
- import { Class, IContainer } from '@spinajs/di';
7
- import { Wrap } from './statements.js';
8
- import { DateTime } from 'luxon';
9
- import { OrmDriver } from './driver.js';
10
- export declare function extractModelDescriptor(targetOrForward: any): IModelDescriptor;
11
- export declare class ModelBase<M = unknown> implements IModelBase {
12
- private _container;
13
- /**
14
- * List of hidden properties from JSON / dehydrations
15
- * eg. password field of user
16
- */
17
- protected _hidden: string[];
18
- static readonly _queryScopes: QueryScope;
19
- /**
20
- * Gets descriptor for this model. It contains information about relations, orm driver, connection properties,
21
- * db table attached, column information and others.
22
- */
23
- get ModelDescriptor(): IModelDescriptor;
24
- /**
25
- * Gets di container associated with this model ( via connection object eg. different drivers have their own implementation of things)
26
- */
27
- get Container(): IContainer;
28
- get PrimaryKeyName(): string;
29
- get PrimaryKeyValue(): any;
30
- set PrimaryKeyValue(newVal: any);
31
- valueOf(): any;
32
- driver(): OrmDriver;
33
- /**
34
- * Recursivelly takes all relation data and returns as single array
35
- */
36
- getFlattenRelationModels(recursive?: boolean): ModelBase[];
37
- static getModelDescriptor(): void;
38
- static getRelationDescriptor(_relation: string): void;
39
- /**
40
- * Clears all data in table
41
- */
42
- static truncate(): void;
43
- /**
44
- * Get all data from db
45
- */
46
- static all<T extends typeof ModelBase>(this: T, _page?: number, _perPage?: number): SelectQueryBuilder<Array<InstanceType<T>>>;
47
- /**
48
- * Inserts data to DB.
49
- *
50
- * @param _data - data to insert
51
- */
52
- static insert<T extends typeof ModelBase>(this: T, _data: InstanceType<T> | Partial<InstanceType<T>> | PickRelations<T> | Array<InstanceType<T>> | Array<Partial<InstanceType<T>>>, _insertBehaviour?: InsertBehaviour): InsertQueryBuilder;
53
- /**
54
- * Search entities in db
55
- *
56
- * @param column - column to search or function
57
- * @param operator - boolean operator
58
- * @param value - value to compare
59
- */
60
- static where<T extends typeof ModelBase>(this: T, val: boolean): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
61
- static where<T extends typeof ModelBase>(this: T, val: PartialArray<InstanceType<T>> | PickRelations<T>): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
62
- static where<T extends typeof ModelBase>(this: T, func: WhereFunction<InstanceType<T>>): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
63
- static where<T extends typeof ModelBase>(this: T, column: string, operator: Op, value: any): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
64
- static where<T extends typeof ModelBase>(this: T, column: string, value: any): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
65
- static where<T extends typeof ModelBase>(this: T, statement: Wrap): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
66
- static where<T extends typeof ModelBase>(this: T, column: string | boolean | WhereFunction<InstanceType<T>> | RawQuery | PartialArray<InstanceType<T>> | Wrap | PickRelations<T>, operator?: Op | any, value?: any): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
67
- /**
68
- * Updates single or multiple records at once with provided value based on condition
69
- *
70
- * @param _data - data to set
71
- */
72
- static update<T extends typeof ModelBase>(this: T, _data: Partial<InstanceType<T>>): UpdateQueryBuilder<InstanceType<T>> & T['_queryScopes'];
73
- /**
74
- * Tries to find all models with given primary keys
75
- */
76
- static find<T extends typeof ModelBase>(this: T, _pks: any[]): Promise<Array<InstanceType<T>>>;
77
- /**
78
- * Tries to get first result from db
79
- *
80
- * Orders by Primary key, if pk not exists then by unique constraints and lastly by CreateAt if no unique columns exists.
81
- */
82
- static first<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<InstanceType<T>>;
83
- /**
84
- * Tries to get first result from db
85
- *
86
- * Orders by Primary key, if pk not exists then by unique constraints and lastly by CreateAt if no unique columns exists.
87
- */
88
- static last<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<InstanceType<T>>;
89
- /**
90
- * Tries to get newest result from db. It throws if model dont have CreatedAt decorated property
91
- */
92
- static newest<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<InstanceType<T>>;
93
- /**
94
- * Tries to get oldest result from db. It throws if model dont have CreatedAt decorated property
95
- */
96
- static oldest<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<InstanceType<T>>;
97
- /**
98
- * Returns total count of entries in db for this model
99
- */
100
- static count<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<number>;
101
- /**
102
- * Tries to find all models in db. If not all exists, throws exception
103
- */
104
- static findOrFail<T extends typeof ModelBase>(this: T, _pks: any[]): Promise<Array<InstanceType<T>>>;
105
- /**
106
- * gets model by specified pk, if not exists, returns null
107
- *
108
- */
109
- static get<T extends typeof ModelBase>(this: T, _pk: any): Promise<InstanceType<T>>;
110
- /**
111
- * Finds model by specified pk. If model not exists in db throws exception
112
- *
113
- */
114
- static getOrFail<T extends typeof ModelBase>(this: T, _pk: any): Promise<InstanceType<T>>;
115
- /**
116
- *
117
- * Checks if model with pk key or unique fields exists and if not creates one AND NOT save in db
118
- * NOTE: it checks for unique fields constraint
119
- */
120
- static getOrNew<T extends typeof ModelBase>(this: T, _pk?: any, _data?: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
121
- /**
122
- * Creates query on this model. used for quering db for partial data, to perform some kind of operations
123
- * that dont need full ORM model to involve, or other non standard operations eg. joins or raw data queries based on this model
124
- */
125
- static query<T extends typeof ModelBase>(this: T): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
126
- /**
127
- *
128
- * Checks if model with pk key / unique fields exists and if not creates one and saves to db
129
- * NOTE: it checks for unique fields too.
130
- *
131
- * @param data - model width data to check
132
- */
133
- static getOrCreate<T extends typeof ModelBase>(this: T, _pk: any, _data?: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
134
- /**
135
- * Creates new model & saves is to db
136
- *
137
- * @param data - initial model data
138
- */
139
- static create<T extends typeof ModelBase>(this: T, _data: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
140
- /**
141
- * Deletes model from db
142
- *
143
- * @param pk - primary key
144
- */
145
- static destroy<T extends typeof ModelBase>(this: T, _pk?: any | any[]): DeleteQueryBuilder<InstanceType<T>> & T['_queryScopes'];
146
- /**
147
- * Checks if model exists in db
148
- */
149
- static exists(): Promise<boolean>;
150
- constructor(data?: Partial<M>);
151
- /**
152
- * Fills model with data. It only fills properties that exists in database
153
- *
154
- * @param data - data to fill
155
- */
156
- hydrate(data: Partial<this>): void;
157
- /**
158
- *
159
- * Attachess model to proper relation an sets foreign key
160
- *
161
- * @param data - model to attach
162
- */
163
- attach(data: ModelBase): void;
164
- /**
165
- * Extracts all data from model. It takes only properties that exists in DB
166
- */
167
- dehydrate(omit?: string[]): ModelData<this>;
168
- /**
169
- *
170
- * Extracts all data from model with relation data. Relation data are dehydrated recursively.
171
- *
172
- * @param omit - fields to omit
173
- */
174
- dehydrateWithRelations(omit?: string[]): ModelDataWithRelationData<this>;
175
- toSql(): Partial<this>;
176
- /**
177
- * deletes enitt from db. If model have SoftDelete decorator, model is marked as deleted
178
- */
179
- destroy(): Promise<void>;
180
- /**
181
- * If model can be in achived state - sets archived at date and saves it to db
182
- */
183
- archive(): Promise<void>;
184
- update(): Promise<void>;
185
- /**
186
- * Save all changes to db. It creates new entry id db or updates existing one if
187
- * primary key exists
188
- */
189
- insert(insertBehaviour?: InsertBehaviour): Promise<IUpdateResult>;
190
- /**
191
- *
192
- * Shorthand for inserting model when no primary key exists, or update
193
- * its value in db if primary key is set
194
- *
195
- * @param insertBehaviour - insert mode
196
- */
197
- insertOrUpdate(insertBehaviour?: InsertBehaviour): Promise<void>;
198
- /**
199
- * Gets model data from database and returns as fresh instance.
200
- *
201
- * If primary key is not fetched, tries to load by columns with unique constraint.
202
- * If there is no unique columns or primary key, throws error
203
- */
204
- fresh(): Promise<this>;
205
- /**
206
- * Refresh model from database.
207
- *
208
- * If no primary key is set, tries to fetch data base on columns
209
- * with unique constraints. If none exists, throws exception
210
- */
211
- refresh(): Promise<void>;
212
- toJSON(): ModelData<this>;
213
- /**
214
- * sets default values for model. values are taken from DB default column prop
215
- */
216
- protected setDefaults(): void;
217
- protected createSelectQuery(): {
218
- query: SelectQueryBuilder<unknown>;
219
- description: IModelDescriptor;
220
- model: Class<any>;
221
- container: IContainer;
222
- };
223
- protected createUpdateQuery(): {
224
- query: UpdateQueryBuilder<unknown>;
225
- description: IModelDescriptor;
226
- model: Class<any>;
227
- container: IContainer;
228
- };
229
- protected createInsertQuery(): {
230
- query: InsertQueryBuilder;
231
- description: IModelDescriptor;
232
- model: Class<any>;
233
- container: IContainer;
234
- };
235
- }
236
- export declare abstract class HistoricalModel implements IHistoricalModel {
237
- readonly __action__: 'update' | 'insert' | 'delete';
238
- readonly __revision__: number;
239
- readonly __start__: DateTime;
240
- readonly __end__: DateTime;
241
- }
242
- /**
243
- * Helper function to create query based on model
244
- *
245
- * @param model - source model for query
246
- * @param query - query class
247
- * @param injectModel - should inject model information into query, if not, query will return raw data
248
- *
249
- * @returns
250
- */
251
- export declare function createQuery<T extends QueryBuilder>(model: Class<any>, query: Class<T>, injectModel?: boolean): {
252
- query: T extends import("@spinajs/di").AsyncService ? Promise<T> : T;
253
- description: IModelDescriptor;
254
- model: Class<any>;
255
- container: IContainer;
256
- };
257
- export declare const MODEL_STATIC_MIXINS: {
258
- getModelDescriptor(): IModelDescriptor;
259
- getRelationDescriptor(relation: string): IRelationDescriptor;
260
- truncate(): TruncateTableQueryBuilder;
261
- driver(): OrmDriver;
262
- query(): SelectQueryBuilder;
263
- where(column: string | boolean | WhereFunction<any> | RawQuery | Wrap | {}, operator?: Op | any, value?: any): SelectQueryBuilder;
264
- update<T extends typeof ModelBase>(data: Partial<InstanceType<T>>): UpdateQueryBuilder<unknown>;
265
- all(page?: number, perPage?: number): SelectQueryBuilder<unknown>;
266
- /**
267
- * Try to insert new value
268
- */
269
- insert<T_1 extends typeof ModelBase>(this: T_1, data: InstanceType<T_1> | Partial<InstanceType<T_1>> | InstanceType<T_1>[] | Partial<InstanceType<T_1>>[], insertBehaviour?: InsertBehaviour): Promise<IUpdateResult>;
270
- find<T_2 extends typeof ModelBase>(this: T_2, pks: any[]): Promise<InstanceType<T_2>[]>;
271
- findOrFail<T_3 extends typeof ModelBase>(this: T_3, pks: any[]): Promise<InstanceType<T_3>[]>;
272
- get<T_4 extends typeof ModelBase>(this: T_4, pk: any): Promise<InstanceType<T_4>>;
273
- getOrFail<T_5 extends typeof ModelBase>(this: T_5, pk: any): Promise<InstanceType<T_5>>;
274
- destroy<T_6 extends typeof ModelBase>(pks?: any | any[]): IWhereBuilder<InstanceType<T_6>>;
275
- create<T_7 extends typeof ModelBase>(this: T_7, data: Partial<InstanceType<T_7>>): Promise<InstanceType<T_7>>;
276
- getOrCreate<T_8 extends typeof ModelBase>(this: T_8, pk: any, data: Partial<InstanceType<T_8>>): Promise<InstanceType<T_8>>;
277
- getOrNew<T_9 extends typeof ModelBase>(this: T_9, pk: any, data?: Partial<InstanceType<T_9>>): Promise<InstanceType<T_9>>;
278
- exists<T_10 extends typeof ModelBase>(this: T_10, pk: any): Promise<boolean>;
279
- first<T_11 extends typeof ModelBase>(this: T_11, callback?: (builder: IWhereBuilder<T_11>) => void): Promise<InstanceType<T_11>>;
280
- last<T_12 extends typeof ModelBase>(this: T_12, callback?: (builder: IWhereBuilder<T_12>) => void): Promise<InstanceType<T_12>>;
281
- newest<T_13 extends typeof ModelBase>(this: T_13, callback?: (builder: IWhereBuilder<T_13>) => void): Promise<InstanceType<T_13>>;
282
- oldest<T_14 extends typeof ModelBase>(this: T_14, callback?: (builder: IWhereBuilder<T_14>) => void): Promise<InstanceType<T_14>>;
283
- count<T_15 extends typeof ModelBase>(this: T_15, callback?: (builder: IWhereBuilder<T_15>) => void): Promise<number>;
284
- };
1
+ import { ModelData, ModelDataWithRelationData, PartialArray, PickRelations } from './types.js';
2
+ import { IModelDescriptor, InsertBehaviour, IUpdateResult, ISelectQueryBuilder, IWhereBuilder, QueryScope, IHistoricalModel, IModelBase, IRelationDescriptor } from './interfaces.js';
3
+ import { WhereFunction } from './types.js';
4
+ import { RawQuery, UpdateQueryBuilder, TruncateTableQueryBuilder, QueryBuilder, SelectQueryBuilder, DeleteQueryBuilder, InsertQueryBuilder } from './builders.js';
5
+ import { Op } from './enums.js';
6
+ import { Class, IContainer } from '@spinajs/di';
7
+ import { Wrap } from './statements.js';
8
+ import { DateTime } from 'luxon';
9
+ import { OrmDriver } from './driver.js';
10
+ export declare function extractModelDescriptor(targetOrForward: any): IModelDescriptor;
11
+ export declare class ModelBase<M = unknown> implements IModelBase {
12
+ private _container;
13
+ /**
14
+ * List of hidden properties from JSON / dehydrations
15
+ * eg. password field of user
16
+ */
17
+ protected _hidden: string[];
18
+ static readonly _queryScopes: QueryScope;
19
+ /**
20
+ * Gets descriptor for this model. It contains information about relations, orm driver, connection properties,
21
+ * db table attached, column information and others.
22
+ */
23
+ get ModelDescriptor(): IModelDescriptor;
24
+ /**
25
+ * Gets di container associated with this model ( via connection object eg. different drivers have their own implementation of things)
26
+ */
27
+ get Container(): IContainer;
28
+ get PrimaryKeyName(): string;
29
+ get PrimaryKeyValue(): any;
30
+ set PrimaryKeyValue(newVal: any);
31
+ valueOf(): any;
32
+ driver(): OrmDriver;
33
+ /**
34
+ * Recursivelly takes all relation data and returns as single array
35
+ */
36
+ getFlattenRelationModels(recursive?: boolean): ModelBase[];
37
+ static getModelDescriptor(): void;
38
+ static getRelationDescriptor(_relation: string): void;
39
+ /**
40
+ * Clears all data in table
41
+ */
42
+ static truncate(): void;
43
+ /**
44
+ * Get all data from db
45
+ */
46
+ static all<T extends typeof ModelBase>(this: T, _page?: number, _perPage?: number): SelectQueryBuilder<Array<InstanceType<T>>>;
47
+ /**
48
+ * Inserts data to DB.
49
+ *
50
+ * @param _data - data to insert
51
+ */
52
+ static insert<T extends typeof ModelBase>(this: T, _data: InstanceType<T> | Partial<InstanceType<T>> | PickRelations<T> | Array<InstanceType<T>> | Array<Partial<InstanceType<T>>>, _insertBehaviour?: InsertBehaviour): InsertQueryBuilder;
53
+ /**
54
+ * Search entities in db
55
+ *
56
+ * @param column - column to search or function
57
+ * @param operator - boolean operator
58
+ * @param value - value to compare
59
+ */
60
+ static where<T extends typeof ModelBase>(this: T, val: boolean): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
61
+ static where<T extends typeof ModelBase>(this: T, val: PartialArray<InstanceType<T>> | PickRelations<T>): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
62
+ static where<T extends typeof ModelBase>(this: T, func: WhereFunction<InstanceType<T>>): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
63
+ static where<T extends typeof ModelBase>(this: T, column: string, operator: Op, value: any): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
64
+ static where<T extends typeof ModelBase>(this: T, column: string, value: any): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
65
+ static where<T extends typeof ModelBase>(this: T, statement: Wrap): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
66
+ static where<T extends typeof ModelBase>(this: T, column: string | boolean | WhereFunction<InstanceType<T>> | RawQuery | PartialArray<InstanceType<T>> | Wrap | PickRelations<T>, operator?: Op | any, value?: any): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
67
+ /**
68
+ * Updates single or multiple records at once with provided value based on condition
69
+ *
70
+ * @param _data - data to set
71
+ */
72
+ static update<T extends typeof ModelBase>(this: T, _data: Partial<InstanceType<T>>): UpdateQueryBuilder<InstanceType<T>> & T['_queryScopes'];
73
+ /**
74
+ * Tries to find all models with given primary keys
75
+ */
76
+ static find<T extends typeof ModelBase>(this: T, _pks: any[]): Promise<Array<InstanceType<T>>>;
77
+ /**
78
+ * Tries to get first result from db
79
+ *
80
+ * Orders by Primary key, if pk not exists then by unique constraints and lastly by CreateAt if no unique columns exists.
81
+ */
82
+ static first<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<InstanceType<T>>;
83
+ /**
84
+ * Tries to get first result from db
85
+ *
86
+ * Orders by Primary key, if pk not exists then by unique constraints and lastly by CreateAt if no unique columns exists.
87
+ */
88
+ static last<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<InstanceType<T>>;
89
+ /**
90
+ * Tries to get newest result from db. It throws if model dont have CreatedAt decorated property
91
+ */
92
+ static newest<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<InstanceType<T>>;
93
+ /**
94
+ * Tries to get oldest result from db. It throws if model dont have CreatedAt decorated property
95
+ */
96
+ static oldest<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<InstanceType<T>>;
97
+ /**
98
+ * Returns total count of entries in db for this model
99
+ */
100
+ static count<T extends typeof ModelBase>(this: T, callback?: (builder: IWhereBuilder<T> & T['_queryScopes']) => void): Promise<number>;
101
+ /**
102
+ * Tries to find all models in db. If not all exists, throws exception
103
+ */
104
+ static findOrFail<T extends typeof ModelBase>(this: T, _pks: any[]): Promise<Array<InstanceType<T>>>;
105
+ /**
106
+ * gets model by specified pk, if not exists, returns null
107
+ *
108
+ */
109
+ static get<T extends typeof ModelBase>(this: T, _pk: any): Promise<InstanceType<T>>;
110
+ /**
111
+ * Finds model by specified pk. If model not exists in db throws exception
112
+ *
113
+ */
114
+ static getOrFail<T extends typeof ModelBase>(this: T, _pk: any): Promise<InstanceType<T>>;
115
+ /**
116
+ *
117
+ * Checks if model with pk key or unique fields exists and if not creates one AND NOT save in db
118
+ * NOTE: it checks for unique fields constraint
119
+ */
120
+ static getOrNew<T extends typeof ModelBase>(this: T, _pk?: any, _data?: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
121
+ /**
122
+ * Creates query on this model. used for quering db for partial data, to perform some kind of operations
123
+ * that dont need full ORM model to involve, or other non standard operations eg. joins or raw data queries based on this model
124
+ */
125
+ static query<T extends typeof ModelBase>(this: T): ISelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
126
+ /**
127
+ *
128
+ * Checks if model with pk key / unique fields exists and if not creates one and saves to db
129
+ * NOTE: it checks for unique fields too.
130
+ *
131
+ * @param data - model width data to check
132
+ */
133
+ static getOrCreate<T extends typeof ModelBase>(this: T, _pk: any, _data?: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
134
+ /**
135
+ * Creates new model & saves is to db
136
+ *
137
+ * @param data - initial model data
138
+ */
139
+ static create<T extends typeof ModelBase>(this: T, _data: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
140
+ /**
141
+ * Deletes model from db
142
+ *
143
+ * @param pk - primary key
144
+ */
145
+ static destroy<T extends typeof ModelBase>(this: T, _pk?: any | any[]): DeleteQueryBuilder<InstanceType<T>> & T['_queryScopes'];
146
+ /**
147
+ * Checks if model exists in db
148
+ */
149
+ static exists(): Promise<boolean>;
150
+ constructor(data?: Partial<M>);
151
+ /**
152
+ * Fills model with data. It only fills properties that exists in database
153
+ *
154
+ * @param data - data to fill
155
+ */
156
+ hydrate(data: Partial<this>): void;
157
+ /**
158
+ *
159
+ * Attachess model to proper relation an sets foreign key
160
+ *
161
+ * @param data - model to attach
162
+ */
163
+ attach(data: ModelBase): void;
164
+ /**
165
+ * Extracts all data from model. It takes only properties that exists in DB
166
+ */
167
+ dehydrate(omit?: string[]): ModelData<this>;
168
+ /**
169
+ *
170
+ * Extracts all data from model with relation data. Relation data are dehydrated recursively.
171
+ *
172
+ * @param omit - fields to omit
173
+ */
174
+ dehydrateWithRelations(omit?: string[]): ModelDataWithRelationData<this>;
175
+ toSql(): Partial<this>;
176
+ /**
177
+ * deletes enitt from db. If model have SoftDelete decorator, model is marked as deleted
178
+ */
179
+ destroy(): Promise<void>;
180
+ /**
181
+ * If model can be in achived state - sets archived at date and saves it to db
182
+ */
183
+ archive(): Promise<void>;
184
+ update(): Promise<void>;
185
+ /**
186
+ * Save all changes to db. It creates new entry id db or updates existing one if
187
+ * primary key exists
188
+ */
189
+ insert(insertBehaviour?: InsertBehaviour): Promise<IUpdateResult>;
190
+ /**
191
+ *
192
+ * Shorthand for inserting model when no primary key exists, or update
193
+ * its value in db if primary key is set
194
+ *
195
+ * @param insertBehaviour - insert mode
196
+ */
197
+ insertOrUpdate(insertBehaviour?: InsertBehaviour): Promise<void>;
198
+ /**
199
+ * Gets model data from database and returns as fresh instance.
200
+ *
201
+ * If primary key is not fetched, tries to load by columns with unique constraint.
202
+ * If there is no unique columns or primary key, throws error
203
+ */
204
+ fresh(): Promise<this>;
205
+ /**
206
+ * Refresh model from database.
207
+ *
208
+ * If no primary key is set, tries to fetch data base on columns
209
+ * with unique constraints. If none exists, throws exception
210
+ */
211
+ refresh(): Promise<void>;
212
+ toJSON(): ModelData<this>;
213
+ /**
214
+ * sets default values for model. values are taken from DB default column prop
215
+ */
216
+ protected setDefaults(): void;
217
+ protected createSelectQuery(): {
218
+ query: SelectQueryBuilder<unknown>;
219
+ description: IModelDescriptor;
220
+ model: Class<any>;
221
+ container: IContainer;
222
+ };
223
+ protected createUpdateQuery(): {
224
+ query: UpdateQueryBuilder<unknown>;
225
+ description: IModelDescriptor;
226
+ model: Class<any>;
227
+ container: IContainer;
228
+ };
229
+ protected createInsertQuery(): {
230
+ query: InsertQueryBuilder;
231
+ description: IModelDescriptor;
232
+ model: Class<any>;
233
+ container: IContainer;
234
+ };
235
+ }
236
+ export declare abstract class HistoricalModel implements IHistoricalModel {
237
+ readonly __action__: 'update' | 'insert' | 'delete';
238
+ readonly __revision__: number;
239
+ readonly __start__: DateTime;
240
+ readonly __end__: DateTime;
241
+ }
242
+ /**
243
+ * Helper function to create query based on model
244
+ *
245
+ * @param model - source model for query
246
+ * @param query - query class
247
+ * @param injectModel - should inject model information into query, if not, query will return raw data
248
+ *
249
+ * @returns
250
+ */
251
+ export declare function createQuery<T extends QueryBuilder>(model: Class<any>, query: Class<T>, injectModel?: boolean): {
252
+ query: T extends import("@spinajs/di").AsyncService ? Promise<T> : T;
253
+ description: IModelDescriptor;
254
+ model: Class<any>;
255
+ container: IContainer;
256
+ };
257
+ export declare const MODEL_STATIC_MIXINS: {
258
+ getModelDescriptor(): IModelDescriptor;
259
+ getRelationDescriptor(relation: string): IRelationDescriptor;
260
+ truncate(): TruncateTableQueryBuilder;
261
+ driver(): OrmDriver;
262
+ query(): SelectQueryBuilder;
263
+ where(column: string | boolean | WhereFunction<any> | RawQuery | Wrap | {}, operator?: Op | any, value?: any): SelectQueryBuilder;
264
+ update<T extends typeof ModelBase>(data: Partial<InstanceType<T>>): UpdateQueryBuilder<unknown>;
265
+ all(page?: number, perPage?: number): SelectQueryBuilder<unknown>;
266
+ /**
267
+ * Try to insert new value
268
+ */
269
+ insert<T_1 extends typeof ModelBase>(this: T_1, data: InstanceType<T_1> | Partial<InstanceType<T_1>> | InstanceType<T_1>[] | Partial<InstanceType<T_1>>[], insertBehaviour?: InsertBehaviour): Promise<IUpdateResult>;
270
+ find<T_2 extends typeof ModelBase>(this: T_2, pks: any[]): Promise<InstanceType<T_2>[]>;
271
+ findOrFail<T_3 extends typeof ModelBase>(this: T_3, pks: any[]): Promise<InstanceType<T_3>[]>;
272
+ get<T_4 extends typeof ModelBase>(this: T_4, pk: any): Promise<InstanceType<T_4>>;
273
+ getOrFail<T_5 extends typeof ModelBase>(this: T_5, pk: any): Promise<InstanceType<T_5>>;
274
+ destroy<T_6 extends typeof ModelBase>(pks?: any | any[]): IWhereBuilder<InstanceType<T_6>>;
275
+ create<T_7 extends typeof ModelBase>(this: T_7, data: Partial<InstanceType<T_7>>): Promise<InstanceType<T_7>>;
276
+ getOrCreate<T_8 extends typeof ModelBase>(this: T_8, pk: any, data: Partial<InstanceType<T_8>>): Promise<InstanceType<T_8>>;
277
+ getOrNew<T_9 extends typeof ModelBase>(this: T_9, pk: any, data?: Partial<InstanceType<T_9>>): Promise<InstanceType<T_9>>;
278
+ exists<T_10 extends typeof ModelBase>(this: T_10, pk: any): Promise<boolean>;
279
+ first<T_11 extends typeof ModelBase>(this: T_11, callback?: (builder: IWhereBuilder<T_11>) => void): Promise<InstanceType<T_11>>;
280
+ last<T_12 extends typeof ModelBase>(this: T_12, callback?: (builder: IWhereBuilder<T_12>) => void): Promise<InstanceType<T_12>>;
281
+ newest<T_13 extends typeof ModelBase>(this: T_13, callback?: (builder: IWhereBuilder<T_13>) => void): Promise<InstanceType<T_13>>;
282
+ oldest<T_14 extends typeof ModelBase>(this: T_14, callback?: (builder: IWhereBuilder<T_14>) => void): Promise<InstanceType<T_14>>;
283
+ count<T_15 extends typeof ModelBase>(this: T_15, callback?: (builder: IWhereBuilder<T_15>) => void): Promise<number>;
284
+ };
285
285
  //# sourceMappingURL=model.d.ts.map