@spinajs/orm-sql 2.0.38 → 2.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/compilers.d.ts +25 -6
- package/lib/compilers.js +223 -16
- package/lib/compilers.js.map +1 -1
- package/lib/converters.js +4 -7
- package/lib/converters.js.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/orm/src/builders.d.ts +636 -0
- package/lib/orm/src/builders.js +1509 -0
- package/lib/orm/src/builders.js.map +1 -0
- package/lib/orm/src/converters.d.ts +14 -0
- package/lib/orm/src/converters.js +57 -0
- package/lib/orm/src/converters.js.map +1 -0
- package/lib/orm/src/decorators.d.ts +152 -0
- package/lib/orm/src/decorators.js +454 -0
- package/lib/orm/src/decorators.js.map +1 -0
- package/lib/orm/src/dehydrators.d.ts +7 -0
- package/lib/orm/src/dehydrators.js +41 -0
- package/lib/orm/src/dehydrators.js.map +1 -0
- package/lib/orm/src/driver.d.ts +80 -0
- package/lib/orm/src/driver.js +104 -0
- package/lib/orm/src/driver.js.map +1 -0
- package/lib/orm/src/enums.d.ts +115 -0
- package/lib/orm/src/enums.js +125 -0
- package/lib/orm/src/enums.js.map +1 -0
- package/lib/orm/src/exceptions.d.ts +6 -0
- package/lib/orm/src/exceptions.js +11 -0
- package/lib/orm/src/exceptions.js.map +1 -0
- package/lib/orm/src/hydrators.d.ts +19 -0
- package/lib/orm/src/hydrators.js +110 -0
- package/lib/orm/src/hydrators.js.map +1 -0
- package/lib/orm/src/interfaces.d.ts +794 -0
- package/lib/orm/src/interfaces.js +293 -0
- package/lib/orm/src/interfaces.js.map +1 -0
- package/lib/orm/src/model.d.ts +310 -0
- package/lib/orm/src/model.js +779 -0
- package/lib/orm/src/model.js.map +1 -0
- package/lib/orm/src/orm.d.ts +61 -0
- package/lib/orm/src/orm.js +341 -0
- package/lib/orm/src/orm.js.map +1 -0
- package/lib/orm/src/relations.d.ts +150 -0
- package/lib/orm/src/relations.js +681 -0
- package/lib/orm/src/relations.js.map +1 -0
- package/lib/orm/src/statements.d.ts +140 -0
- package/lib/orm/src/statements.js +314 -0
- package/lib/orm/src/statements.js.map +1 -0
- package/lib/orm/src/types.d.ts +11 -0
- package/lib/orm/src/types.js +3 -0
- package/lib/orm/src/types.js.map +1 -0
- package/lib/orm-sql/src/builders.d.ts +11 -0
- package/lib/orm-sql/src/builders.js +42 -0
- package/lib/orm-sql/src/builders.js.map +1 -0
- package/lib/orm-sql/src/compilers.d.ts +226 -0
- package/lib/orm-sql/src/compilers.js +1016 -0
- package/lib/orm-sql/src/compilers.js.map +1 -0
- package/lib/orm-sql/src/converters.d.ts +10 -0
- package/lib/orm-sql/src/converters.js +39 -0
- package/lib/orm-sql/src/converters.js.map +1 -0
- package/lib/orm-sql/src/index.d.ts +6 -0
- package/lib/orm-sql/src/index.js +70 -0
- package/lib/orm-sql/src/index.js.map +1 -0
- package/lib/orm-sql/src/statements.d.ts +46 -0
- package/lib/orm-sql/src/statements.js +268 -0
- package/lib/orm-sql/src/statements.js.map +1 -0
- package/lib/statements.js +22 -4
- package/lib/statements.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../orm/src/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Configuration } from '@spinajs/configuration';
|
|
2
|
+
import { AsyncService, Container, Class } from '@spinajs/di';
|
|
3
|
+
import { Log } from '@spinajs/log';
|
|
4
|
+
import { ClassInfo } from '@spinajs/reflection';
|
|
5
|
+
import { OrmMigration } from './interfaces';
|
|
6
|
+
import { ModelBase } from './model';
|
|
7
|
+
import { OrmDriver } from './driver';
|
|
8
|
+
export declare class Orm extends AsyncService {
|
|
9
|
+
Models: Array<ClassInfo<ModelBase>>;
|
|
10
|
+
Migrations: Array<ClassInfo<OrmMigration>>;
|
|
11
|
+
Connections: Map<string, OrmDriver>;
|
|
12
|
+
Container: Container;
|
|
13
|
+
protected Log: Log;
|
|
14
|
+
protected Configuration: Configuration;
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
* Migrates schema up ( fill function is not executed )
|
|
18
|
+
*
|
|
19
|
+
* @param name - migration file name
|
|
20
|
+
*/
|
|
21
|
+
migrateUp(name?: string, force?: boolean): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* Migrates schema up ( fill function is not executed )
|
|
25
|
+
*
|
|
26
|
+
* @param name - migration file name
|
|
27
|
+
*/
|
|
28
|
+
migrateDown(name?: string, force?: boolean): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* This function is exposed mainly for unit testing purposes. It reloads table information for models
|
|
31
|
+
* ORM always try to load table at resolve time
|
|
32
|
+
*/
|
|
33
|
+
reloadTableInfo(): Promise<void>;
|
|
34
|
+
resolve(): Promise<void>;
|
|
35
|
+
protected registerDefaultConverters(): void;
|
|
36
|
+
protected wireRelations(): void;
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
* Register model to ORM programatically so ORM can see it and use it. Sometimes dynamical model discovery is not possible eg.
|
|
40
|
+
* in webpack evnironment. In such case we must tell ORM manually what to load.
|
|
41
|
+
*
|
|
42
|
+
* NOTE: use it in ORM constructor before ORM is resolved & model list used.
|
|
43
|
+
*
|
|
44
|
+
* @param model - model to register
|
|
45
|
+
*/
|
|
46
|
+
protected registerModel<T extends ModelBase>(model: Class<T>): void;
|
|
47
|
+
/**
|
|
48
|
+
*
|
|
49
|
+
* Register migration to ORM programatically so ORM can see it and use it. Sometimes dynamical migration discovery is not possible eg.
|
|
50
|
+
* in webpack evnironment. In such case we must tell ORM manually what to load.
|
|
51
|
+
*
|
|
52
|
+
* NOTE: use it in ORM constructor before ORM is resolved & migrate function used.
|
|
53
|
+
*
|
|
54
|
+
* @param model - model to register
|
|
55
|
+
*/
|
|
56
|
+
protected registerMigration<T extends OrmMigration>(migration: Class<T>): void;
|
|
57
|
+
private createConnections;
|
|
58
|
+
private applyModelMixins;
|
|
59
|
+
private getMigrationDate;
|
|
60
|
+
private executeAvaibleMigrations;
|
|
61
|
+
}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.Orm = void 0;
|
|
36
|
+
const interfaces_1 = require("./interfaces");
|
|
37
|
+
/* eslint-disable prettier/prettier */
|
|
38
|
+
const configuration_1 = require("@spinajs/configuration");
|
|
39
|
+
const di_1 = require("@spinajs/di");
|
|
40
|
+
const log_1 = require("@spinajs/log");
|
|
41
|
+
const _ = __importStar(require("lodash"));
|
|
42
|
+
const interfaces_2 = require("./interfaces");
|
|
43
|
+
const model_1 = require("./model");
|
|
44
|
+
const decorators_1 = require("./decorators");
|
|
45
|
+
const exceptions_1 = require("@spinajs/exceptions");
|
|
46
|
+
const exceptions_2 = require("./exceptions");
|
|
47
|
+
const luxon_1 = require("luxon");
|
|
48
|
+
/**
|
|
49
|
+
* Used to exclude sensitive data to others. eg. removed password field from cfg
|
|
50
|
+
*/
|
|
51
|
+
const CFG_PROPS = ['Database', 'User', 'Host', 'Port', 'Filename', 'Driver', 'Name'];
|
|
52
|
+
const MIGRATION_TABLE_NAME = 'spinajs_migration';
|
|
53
|
+
const MIGRATION_FILE_REGEXP = /(.*)_([0-9]{4}_[0-9]{2}_[0-9]{2}_[0-9]{2}_[0-9]{2}_[0-9]{2})/;
|
|
54
|
+
class Orm extends di_1.AsyncService {
|
|
55
|
+
constructor() {
|
|
56
|
+
super(...arguments);
|
|
57
|
+
this.Models = [];
|
|
58
|
+
this.Migrations = [];
|
|
59
|
+
this.Connections = new Map();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* Migrates schema up ( fill function is not executed )
|
|
64
|
+
*
|
|
65
|
+
* @param name - migration file name
|
|
66
|
+
*/
|
|
67
|
+
async migrateUp(name, force = true) {
|
|
68
|
+
this.Log.info('DB migration UP started ...');
|
|
69
|
+
await this.executeAvaibleMigrations(name, async (migration, driver) => {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
const trFunction = async (driver) => {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
await migration.up(driver);
|
|
74
|
+
await driver
|
|
75
|
+
.insert()
|
|
76
|
+
.into((_b = (_a = driver.Options.Migration) === null || _a === void 0 ? void 0 : _a.Table) !== null && _b !== void 0 ? _b : MIGRATION_TABLE_NAME)
|
|
77
|
+
.values({
|
|
78
|
+
Migration: migration.constructor.name,
|
|
79
|
+
CreatedAt: new Date(),
|
|
80
|
+
});
|
|
81
|
+
this.Log.info(`Migration ${migration.constructor.name}:up() success !`);
|
|
82
|
+
};
|
|
83
|
+
if (((_b = (_a = driver.Options.Migration) === null || _a === void 0 ? void 0 : _a.Transaction) === null || _b === void 0 ? void 0 : _b.Mode) === interfaces_2.MigrationTransactionMode.PerMigration) {
|
|
84
|
+
await driver.transaction(trFunction);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
await trFunction(driver);
|
|
88
|
+
}
|
|
89
|
+
}, false, force);
|
|
90
|
+
this.Log.info('DB migration ended ...');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
*
|
|
94
|
+
* Migrates schema up ( fill function is not executed )
|
|
95
|
+
*
|
|
96
|
+
* @param name - migration file name
|
|
97
|
+
*/
|
|
98
|
+
async migrateDown(name, force = true) {
|
|
99
|
+
this.Log.info('DB migration DOWN started ...');
|
|
100
|
+
await this.executeAvaibleMigrations(name, async (migration, driver) => {
|
|
101
|
+
var _a, _b;
|
|
102
|
+
const trFunction = async (driver) => {
|
|
103
|
+
var _a, _b;
|
|
104
|
+
await migration.down(driver);
|
|
105
|
+
await driver
|
|
106
|
+
.del()
|
|
107
|
+
.from((_b = (_a = driver.Options.Migration) === null || _a === void 0 ? void 0 : _a.Table) !== null && _b !== void 0 ? _b : MIGRATION_TABLE_NAME)
|
|
108
|
+
.where({
|
|
109
|
+
Migration: migration.constructor.name,
|
|
110
|
+
});
|
|
111
|
+
this.Log.info(`Migration down ${migration.constructor.name}:DOWN success !`);
|
|
112
|
+
};
|
|
113
|
+
if (((_b = (_a = driver.Options.Migration) === null || _a === void 0 ? void 0 : _a.Transaction) === null || _b === void 0 ? void 0 : _b.Mode) === interfaces_2.MigrationTransactionMode.PerMigration) {
|
|
114
|
+
await driver.transaction(trFunction);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
await trFunction(driver);
|
|
118
|
+
}
|
|
119
|
+
}, true, force);
|
|
120
|
+
this.Log.info('DB migration ended ...');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* This function is exposed mainly for unit testing purposes. It reloads table information for models
|
|
124
|
+
* ORM always try to load table at resolve time
|
|
125
|
+
*/
|
|
126
|
+
async reloadTableInfo() {
|
|
127
|
+
for (const m of this.Models) {
|
|
128
|
+
const descriptor = (0, model_1.extractModelDescriptor)(m.type);
|
|
129
|
+
if (descriptor) {
|
|
130
|
+
const connection = this.Connections.get(descriptor.Connection);
|
|
131
|
+
if (connection) {
|
|
132
|
+
m.type[decorators_1.MODEL_DESCTRIPTION_SYMBOL].Driver = connection;
|
|
133
|
+
const columns = await connection.tableInfo(descriptor.TableName, connection.Options.Database);
|
|
134
|
+
if (columns) {
|
|
135
|
+
m.type[decorators_1.MODEL_DESCTRIPTION_SYMBOL].Columns = _.uniqBy(_.map(columns, (c) => {
|
|
136
|
+
return _.assign(c, _.find(descriptor.Columns, { Name: c.Name }));
|
|
137
|
+
}), 'Name');
|
|
138
|
+
// m.type[MODEL_DESCTRIPTION_SYMBOL].Schema = buildJsonSchema(columns);
|
|
139
|
+
}
|
|
140
|
+
for (const [key, val] of descriptor.Converters) {
|
|
141
|
+
const column = m.type[decorators_1.MODEL_DESCTRIPTION_SYMBOL].Columns.find((c) => c.Name === key);
|
|
142
|
+
if (column) {
|
|
143
|
+
column.Converter = connection.Container.hasRegistered(val.Class) ? connection.Container.resolve(val.Class) : null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async resolve() {
|
|
151
|
+
await this.createConnections();
|
|
152
|
+
// add all registered migrations via DI
|
|
153
|
+
const migrations = di_1.DI.getRegisteredTypes('__migrations__');
|
|
154
|
+
if (migrations) {
|
|
155
|
+
migrations.forEach((m) => {
|
|
156
|
+
this.registerMigration(m);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
const models = di_1.DI.getRegisteredTypes('__models__');
|
|
160
|
+
if (models) {
|
|
161
|
+
models.forEach((m) => {
|
|
162
|
+
this.registerModel(m);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
await this.migrateUp(undefined, false);
|
|
166
|
+
await this.reloadTableInfo();
|
|
167
|
+
this.wireRelations();
|
|
168
|
+
this.applyModelMixins();
|
|
169
|
+
this.registerDefaultConverters();
|
|
170
|
+
}
|
|
171
|
+
registerDefaultConverters() {
|
|
172
|
+
this.Container.register(interfaces_1.DatetimeValueConverter).asMapValue('__orm_db_value_converters__', Date.name);
|
|
173
|
+
this.Container.register(interfaces_1.DatetimeValueConverter).asMapValue('__orm_db_value_converters__', luxon_1.DateTime.name);
|
|
174
|
+
}
|
|
175
|
+
wireRelations() {
|
|
176
|
+
this.Models.forEach((x) => {
|
|
177
|
+
const desc = (0, model_1.extractModelDescriptor)(x.type);
|
|
178
|
+
if (!desc)
|
|
179
|
+
return;
|
|
180
|
+
desc.Relations.forEach((rel) => {
|
|
181
|
+
const found = this.Models.find((y) => {
|
|
182
|
+
const type = _.isString(rel.TargetModelType) ? rel.TargetModelType : rel.TargetModelType.name;
|
|
183
|
+
return y.name === type;
|
|
184
|
+
});
|
|
185
|
+
if (!found) {
|
|
186
|
+
throw new exceptions_2.OrmException(`type ${rel.TargetModelType} not found for relation ${rel.Name} in model ${x.name} in file ${x.file}`);
|
|
187
|
+
}
|
|
188
|
+
rel.TargetModel = found.type;
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
*
|
|
194
|
+
* Register model to ORM programatically so ORM can see it and use it. Sometimes dynamical model discovery is not possible eg.
|
|
195
|
+
* in webpack evnironment. In such case we must tell ORM manually what to load.
|
|
196
|
+
*
|
|
197
|
+
* NOTE: use it in ORM constructor before ORM is resolved & model list used.
|
|
198
|
+
*
|
|
199
|
+
* @param model - model to register
|
|
200
|
+
*/
|
|
201
|
+
registerModel(model) {
|
|
202
|
+
this.Models.push({
|
|
203
|
+
file: `${model.name}.registered`,
|
|
204
|
+
name: model.name,
|
|
205
|
+
type: model,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
*
|
|
210
|
+
* Register migration to ORM programatically so ORM can see it and use it. Sometimes dynamical migration discovery is not possible eg.
|
|
211
|
+
* in webpack evnironment. In such case we must tell ORM manually what to load.
|
|
212
|
+
*
|
|
213
|
+
* NOTE: use it in ORM constructor before ORM is resolved & migrate function used.
|
|
214
|
+
*
|
|
215
|
+
* @param model - model to register
|
|
216
|
+
*/
|
|
217
|
+
registerMigration(migration) {
|
|
218
|
+
const created = this.getMigrationDate(migration);
|
|
219
|
+
if (created === null) {
|
|
220
|
+
throw new exceptions_2.OrmException(`Migration file ${migration.name} have invalid name format ( invalid migration name, expected: some_name_yyyy_MM_dd_HH_mm_ss got ${migration.name})`);
|
|
221
|
+
}
|
|
222
|
+
this.Migrations.push({
|
|
223
|
+
file: `${migration.name}.registered`,
|
|
224
|
+
name: `${migration.name}`,
|
|
225
|
+
type: migration,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
async createConnections() {
|
|
229
|
+
const connections = await Promise.all(this.Configuration.get('db.Connections', [])
|
|
230
|
+
.map((c) => {
|
|
231
|
+
if (!this.Container.hasRegistered(c.Driver)) {
|
|
232
|
+
this.Log.warn(`ORM connection driver ${c.Driver} not registerd`);
|
|
233
|
+
}
|
|
234
|
+
this.Log.trace(`Trying to create connection name: ${c.Name}, driver: ${c.Driver}`);
|
|
235
|
+
return this.Container.resolve(c.Driver, [c]);
|
|
236
|
+
})
|
|
237
|
+
.filter((c) => c !== null)
|
|
238
|
+
.map((c) => {
|
|
239
|
+
return c.connect().then((d) => {
|
|
240
|
+
this.Log.trace(`Connection succesyfully created ${d.Options.Name}`);
|
|
241
|
+
return d;
|
|
242
|
+
});
|
|
243
|
+
}));
|
|
244
|
+
connections.forEach((c) => {
|
|
245
|
+
this.Connections.set(c.Options.Name, c);
|
|
246
|
+
this.Log.info(`Found ORM driver ${c.Options.Name} with parameters ${JSON.stringify(_.pick(c.Options, CFG_PROPS))}`);
|
|
247
|
+
});
|
|
248
|
+
const defaultConnection = this.Configuration.get('db.DefaultConnection');
|
|
249
|
+
if (defaultConnection) {
|
|
250
|
+
if (!this.Connections.has(defaultConnection)) {
|
|
251
|
+
throw new exceptions_1.InvalidOperation(`default connection ${defaultConnection} not exists`);
|
|
252
|
+
}
|
|
253
|
+
this.Connections.set('default', this.Connections.get(defaultConnection));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
applyModelMixins() {
|
|
257
|
+
this.Models.forEach((m) => {
|
|
258
|
+
// tslint:disable-next-line: forin
|
|
259
|
+
for (const mixin in model_1.MODEL_STATIC_MIXINS) {
|
|
260
|
+
m.type[mixin] = model_1.MODEL_STATIC_MIXINS[mixin].bind(m.type);
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
getMigrationDate(migration) {
|
|
265
|
+
const match = migration.name.match(MIGRATION_FILE_REGEXP);
|
|
266
|
+
if (match === null || match.length !== 3) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
const created = luxon_1.DateTime.fromFormat(match[2], 'yyyy_MM_dd_HH_mm_ss');
|
|
270
|
+
if (!created.isValid) {
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
return created;
|
|
274
|
+
}
|
|
275
|
+
async executeAvaibleMigrations(name, callback, down, force) {
|
|
276
|
+
var _a, _b, _c;
|
|
277
|
+
const toMigrate = name ? this.Migrations.filter((m) => m.name === name) : this.Migrations;
|
|
278
|
+
let migrations = toMigrate
|
|
279
|
+
.map((x) => {
|
|
280
|
+
const created = this.getMigrationDate(x.type);
|
|
281
|
+
if (created === null) {
|
|
282
|
+
throw new exceptions_2.OrmException(`Migration file ${x.name} have invalid name format ( invalid migration name, expected: some_name_yyyy_MM_dd_HH_mm_ss got ${x.name})`);
|
|
283
|
+
}
|
|
284
|
+
return Object.assign({ created }, x);
|
|
285
|
+
})
|
|
286
|
+
.filter((x) => x !== null)
|
|
287
|
+
.sort((a, b) => {
|
|
288
|
+
if (a.created < b.created) {
|
|
289
|
+
return -1;
|
|
290
|
+
}
|
|
291
|
+
return 1;
|
|
292
|
+
});
|
|
293
|
+
if (down) {
|
|
294
|
+
migrations = migrations.reverse();
|
|
295
|
+
}
|
|
296
|
+
for (const m of migrations) {
|
|
297
|
+
const md = m.type[decorators_1.MIGRATION_DESCRIPTION_SYMBOL];
|
|
298
|
+
const cn = this.Connections.get(md.Connection);
|
|
299
|
+
if (!cn) {
|
|
300
|
+
this.Log.warn(`Connection ${md.Connection} not exists for migration ${m.name} at file ${m.file}`);
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
const migrationTableName = (_b = (_a = cn.Options.Migration) === null || _a === void 0 ? void 0 : _a.Table) !== null && _b !== void 0 ? _b : MIGRATION_TABLE_NAME;
|
|
304
|
+
if (!((_c = cn.Options.Migration) === null || _c === void 0 ? void 0 : _c.OnStartup)) {
|
|
305
|
+
if (!force) {
|
|
306
|
+
this.Log.warn(`Migration for connection ${md.Connection} is disabled on startup, please check conf file for db.migration.OnStartup property`);
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// if there is no info on migraiton table
|
|
311
|
+
const migrationTableExists = await cn.schema().tableExists(migrationTableName, cn.Options.Database);
|
|
312
|
+
if (!migrationTableExists) {
|
|
313
|
+
this.Log.info(`No migration table in database, recreating migration information ...`);
|
|
314
|
+
await cn.schema().createTable(migrationTableName, (table) => {
|
|
315
|
+
table.string('Migration').unique().notNull();
|
|
316
|
+
table.dateTime('CreatedAt').notNull();
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
const exists = await cn.select().from(migrationTableName).where({ Migration: m.name }).orderByDescending('CreatedAt').first();
|
|
320
|
+
if (!exists) {
|
|
321
|
+
const migration = await this.Container.resolve(m.type, [cn]);
|
|
322
|
+
this.Log.info(`Setting up migration ${m.name} from file ${m.file} created at ${m.created} mode: ${down ? 'migrate down' : 'migrate up'}`);
|
|
323
|
+
await callback(migration, cn);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
__decorate([
|
|
329
|
+
(0, di_1.Autoinject)(),
|
|
330
|
+
__metadata("design:type", di_1.Container)
|
|
331
|
+
], Orm.prototype, "Container", void 0);
|
|
332
|
+
__decorate([
|
|
333
|
+
(0, log_1.Logger)('ORM'),
|
|
334
|
+
__metadata("design:type", log_1.Log)
|
|
335
|
+
], Orm.prototype, "Log", void 0);
|
|
336
|
+
__decorate([
|
|
337
|
+
(0, di_1.Autoinject)(),
|
|
338
|
+
__metadata("design:type", configuration_1.Configuration)
|
|
339
|
+
], Orm.prototype, "Configuration", void 0);
|
|
340
|
+
exports.Orm = Orm;
|
|
341
|
+
//# sourceMappingURL=orm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm.js","sourceRoot":"","sources":["../../../../orm/src/orm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { IRelationDescriptor, IModelDescriptor, InsertBehaviour, ForwardRefFunction, IBuilderMiddleware } from './interfaces';
|
|
2
|
+
import { Constructor } from '@spinajs/di';
|
|
3
|
+
import { SelectQueryBuilder } from './builders';
|
|
4
|
+
import { IModelBase, ModelBase } from './model';
|
|
5
|
+
import { Orm } from './orm';
|
|
6
|
+
export interface IOrmRelation {
|
|
7
|
+
/**
|
|
8
|
+
* Executes relation, should be called only once.
|
|
9
|
+
*
|
|
10
|
+
* @param callback - optional callback to perform actions on relations eg. populate more, filter relational data etc.
|
|
11
|
+
*/
|
|
12
|
+
execute(callback?: (this: SelectQueryBuilder, relation: OrmRelation) => void): void;
|
|
13
|
+
/**
|
|
14
|
+
* Execute actions on relation query, does not initialize relation. Use it only AFTER execute was called.
|
|
15
|
+
*
|
|
16
|
+
* @param callback - execute callback to perform actions on relations eg. populate more, filter relational data etc.
|
|
17
|
+
*/
|
|
18
|
+
executeOnQuery(callback: (this: SelectQueryBuilder, relation: OrmRelation) => void): void;
|
|
19
|
+
/**
|
|
20
|
+
* Relation name
|
|
21
|
+
*/
|
|
22
|
+
Name: string;
|
|
23
|
+
}
|
|
24
|
+
export declare abstract class OrmRelation implements IOrmRelation {
|
|
25
|
+
protected _orm: Orm;
|
|
26
|
+
protected _query: SelectQueryBuilder<any>;
|
|
27
|
+
_description: IRelationDescriptor;
|
|
28
|
+
parentRelation?: OrmRelation;
|
|
29
|
+
protected _targetModel: Constructor<ModelBase> | ForwardRefFunction;
|
|
30
|
+
protected _targetModelDescriptor: IModelDescriptor;
|
|
31
|
+
protected _relationQuery: SelectQueryBuilder;
|
|
32
|
+
protected _separator: string;
|
|
33
|
+
Name: string;
|
|
34
|
+
get Alias(): string;
|
|
35
|
+
constructor(_orm: Orm, _query: SelectQueryBuilder<any>, _description: IRelationDescriptor, parentRelation?: OrmRelation);
|
|
36
|
+
abstract execute(callback?: (this: SelectQueryBuilder, relation: OrmRelation) => void): void;
|
|
37
|
+
executeOnQuery(callback: (this: SelectQueryBuilder<any>, relation: OrmRelation) => void): void;
|
|
38
|
+
}
|
|
39
|
+
export declare class DiscriminationMapMiddleware implements IBuilderMiddleware {
|
|
40
|
+
protected _description: IModelDescriptor;
|
|
41
|
+
constructor(_description: IModelDescriptor);
|
|
42
|
+
afterQuery(data: any[]): any[];
|
|
43
|
+
modelCreation(data: any): ModelBase;
|
|
44
|
+
afterHydration(_data: ModelBase[]): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
export declare class BelongsToRelation extends OrmRelation {
|
|
47
|
+
protected _targetModel: Constructor<ModelBase>;
|
|
48
|
+
protected _targetModelDescriptor: IModelDescriptor;
|
|
49
|
+
protected _relationQuery: SelectQueryBuilder;
|
|
50
|
+
constructor(_orm: Orm, _query: SelectQueryBuilder<any>, _description: IRelationDescriptor, _parentRelation?: OrmRelation);
|
|
51
|
+
execute(callback: (this: SelectQueryBuilder, relation: OrmRelation) => void): void;
|
|
52
|
+
}
|
|
53
|
+
export declare class BelongsToRecursiveRelation extends OrmRelation {
|
|
54
|
+
protected _targetModel: Constructor<ModelBase>;
|
|
55
|
+
protected _targetModelDescriptor: IModelDescriptor;
|
|
56
|
+
protected _relationQuery: SelectQueryBuilder;
|
|
57
|
+
constructor(_orm: Orm, _query: SelectQueryBuilder<any>, _description: IRelationDescriptor, _parentRelation?: OrmRelation);
|
|
58
|
+
execute(callback: (this: SelectQueryBuilder, relation: OrmRelation) => void): void;
|
|
59
|
+
}
|
|
60
|
+
export declare class OneToManyRelation extends OrmRelation {
|
|
61
|
+
constructor(_orm: Orm, _query: SelectQueryBuilder<any>, _description: IRelationDescriptor, _parentRelation?: OrmRelation);
|
|
62
|
+
execute(callback?: (this: SelectQueryBuilder<any>, relation: OrmRelation) => void): void;
|
|
63
|
+
}
|
|
64
|
+
export declare class ManyToManyRelation extends OrmRelation {
|
|
65
|
+
protected _joinModel: Constructor<ModelBase>;
|
|
66
|
+
protected _joinModelDescriptor: IModelDescriptor;
|
|
67
|
+
protected _joinQuery: SelectQueryBuilder;
|
|
68
|
+
get TableJoinQuery(): SelectQueryBuilder<any>;
|
|
69
|
+
get RelationQuery(): SelectQueryBuilder<any>;
|
|
70
|
+
constructor(_orm: Orm, _query: SelectQueryBuilder<any>, _description: IRelationDescriptor, _parentRelation?: OrmRelation);
|
|
71
|
+
execute(callback?: (this: SelectQueryBuilder<any>, relation: OrmRelation) => void): void;
|
|
72
|
+
}
|
|
73
|
+
export interface IRelation {
|
|
74
|
+
TargetModelDescriptor: IModelDescriptor;
|
|
75
|
+
/**
|
|
76
|
+
* Indicates if data was fetched from db
|
|
77
|
+
*/
|
|
78
|
+
Populated: boolean;
|
|
79
|
+
}
|
|
80
|
+
export declare class SingleRelation<R extends IModelBase> implements IRelation {
|
|
81
|
+
protected _owner: ModelBase;
|
|
82
|
+
protected model: Constructor<R> | ForwardRefFunction;
|
|
83
|
+
protected Relation: IRelationDescriptor;
|
|
84
|
+
TargetModelDescriptor: IModelDescriptor;
|
|
85
|
+
protected Orm: Orm;
|
|
86
|
+
Value: R;
|
|
87
|
+
Populated: boolean;
|
|
88
|
+
constructor(_owner: ModelBase, model: Constructor<R> | ForwardRefFunction, Relation: IRelationDescriptor, object?: R);
|
|
89
|
+
set(obj: R): Promise<void>;
|
|
90
|
+
attach(obj: R): void;
|
|
91
|
+
detach(): void;
|
|
92
|
+
remove(): Promise<void>;
|
|
93
|
+
populate(callback?: (this: SelectQueryBuilder<this>) => void): Promise<void>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Iterable list of populated relation entities
|
|
97
|
+
*
|
|
98
|
+
* It allows to add / remove objects to relation
|
|
99
|
+
*/
|
|
100
|
+
export declare abstract class Relation<R extends ModelBase, O extends ModelBase> extends Array<R> implements IRelation {
|
|
101
|
+
protected owner: O;
|
|
102
|
+
protected model: Constructor<R> | ForwardRefFunction;
|
|
103
|
+
protected Relation: IRelationDescriptor;
|
|
104
|
+
TargetModelDescriptor: IModelDescriptor;
|
|
105
|
+
protected Orm: Orm;
|
|
106
|
+
Populated: boolean;
|
|
107
|
+
constructor(owner: O, model: Constructor<R> | ForwardRefFunction, Relation: IRelationDescriptor, objects?: R[]);
|
|
108
|
+
/**
|
|
109
|
+
* Removes from relation & deletes from db
|
|
110
|
+
*
|
|
111
|
+
* @param obj - data to remove
|
|
112
|
+
*/
|
|
113
|
+
abstract remove(obj: R | R[]): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
*
|
|
116
|
+
* Add to relation & saves to db, alias for union, except it can add single element also
|
|
117
|
+
*
|
|
118
|
+
* @param obj - data to add
|
|
119
|
+
*/
|
|
120
|
+
abstract add(obj: R | R[] | Partial<R> | Partial<R>[], mode?: InsertBehaviour): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Delete all objects from relation
|
|
123
|
+
*/
|
|
124
|
+
clear(): Promise<void>;
|
|
125
|
+
empty(): void;
|
|
126
|
+
abstract intersection(obj: R[], callback?: (a: R, b: R) => boolean): Promise<void>;
|
|
127
|
+
abstract union(obj: R[], mode?: InsertBehaviour): Promise<void>;
|
|
128
|
+
abstract diff(obj: R[], callback?: (a: R, b: R) => boolean): Promise<void>;
|
|
129
|
+
abstract set(obj: R[]): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Populates this relation
|
|
132
|
+
*/
|
|
133
|
+
populate(callback?: (this: SelectQueryBuilder<this>) => void): Promise<void>;
|
|
134
|
+
}
|
|
135
|
+
export declare class ManyToManyRelationList<T extends ModelBase, O extends ModelBase> extends Relation<T, O> {
|
|
136
|
+
intersection(_obj: T[], _callback?: (a: T, b: T) => boolean): Promise<void>;
|
|
137
|
+
union(_obj: T[], _mode?: InsertBehaviour): Promise<void>;
|
|
138
|
+
diff(_obj: T[], _callback?: (a: T, b: T) => boolean): Promise<void>;
|
|
139
|
+
set(_obj: T[], _callback?: (a: T, b: T) => boolean): Promise<void>;
|
|
140
|
+
remove(obj: T | T[]): Promise<void>;
|
|
141
|
+
add(obj: T | T[], mode?: InsertBehaviour): Promise<void>;
|
|
142
|
+
}
|
|
143
|
+
export declare class OneToManyRelationList<T extends ModelBase, O extends ModelBase> extends Relation<T, O> {
|
|
144
|
+
diff(obj: T[], callback?: (a: T, b: T) => boolean): Promise<void>;
|
|
145
|
+
set(obj: T[]): Promise<void>;
|
|
146
|
+
intersection(obj: T[], callback?: (a: T, b: T) => boolean): Promise<void>;
|
|
147
|
+
union(obj: T[], mode?: InsertBehaviour): Promise<void>;
|
|
148
|
+
remove(obj: T | T[]): Promise<void>;
|
|
149
|
+
add(obj: T | T[] | Partial<T> | Partial<T>[], mode?: InsertBehaviour): Promise<void>;
|
|
150
|
+
}
|