@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,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OrmDriver = void 0;
|
|
13
|
+
const log_1 = require("@spinajs/log");
|
|
14
|
+
const di_1 = require("@spinajs/di");
|
|
15
|
+
const builders_1 = require("./builders");
|
|
16
|
+
const hydrators_1 = require("./hydrators");
|
|
17
|
+
const dehydrators_1 = require("./dehydrators");
|
|
18
|
+
class OrmDriver extends di_1.SyncService {
|
|
19
|
+
constructor(options) {
|
|
20
|
+
super();
|
|
21
|
+
/**
|
|
22
|
+
* Connection options
|
|
23
|
+
*/
|
|
24
|
+
this.Options = {
|
|
25
|
+
AliasSeparator: '$',
|
|
26
|
+
Driver: 'unknown',
|
|
27
|
+
Name: 'orm-driver',
|
|
28
|
+
DefaultConnection: false,
|
|
29
|
+
};
|
|
30
|
+
this.Options = Object.assign(this.Options, options);
|
|
31
|
+
}
|
|
32
|
+
resolve() {
|
|
33
|
+
this.Log = di_1.DI.resolve(log_1.Log, [`orm-driver-${this.Options.Name}`]);
|
|
34
|
+
this.Log.addVariable('orm-name', this.Options.Name);
|
|
35
|
+
this.Log.addVariable('orm-host', this.Options.Host);
|
|
36
|
+
this.Log.addVariable('orm-database', this.Options.Database);
|
|
37
|
+
this.Container = this.RootContainer.child();
|
|
38
|
+
/**
|
|
39
|
+
* Hydrators are registered globally
|
|
40
|
+
*/
|
|
41
|
+
di_1.DI.register(hydrators_1.DbPropertyHydrator).as(hydrators_1.ModelHydrator);
|
|
42
|
+
di_1.DI.register(hydrators_1.NonDbPropertyHydrator).as(hydrators_1.ModelHydrator);
|
|
43
|
+
di_1.DI.register(hydrators_1.OneToOneRelationHydrator).as(hydrators_1.ModelHydrator);
|
|
44
|
+
di_1.DI.register(hydrators_1.OneToManyRelationHydrator).as(hydrators_1.ModelHydrator);
|
|
45
|
+
di_1.DI.register(hydrators_1.JunctionModelPropertyHydrator).as(hydrators_1.ModelHydrator);
|
|
46
|
+
di_1.DI.register(dehydrators_1.StandardModelDehydrator).as(dehydrators_1.ModelDehydrator);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates select query builder associated with this connection.
|
|
50
|
+
* This can be used to execute raw queries to db without orm model layer
|
|
51
|
+
*/
|
|
52
|
+
select() {
|
|
53
|
+
return this.Container.resolve(builders_1.SelectQueryBuilder, [this]);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Creates delete query builder associated with this connection.
|
|
57
|
+
* This can be used to execute raw queries to db without orm model layer
|
|
58
|
+
*/
|
|
59
|
+
del() {
|
|
60
|
+
return this.Container.resolve(builders_1.DeleteQueryBuilder, [this]);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates insert query builder associated with this connection.
|
|
64
|
+
* This can be used to execute raw queries to db without orm model layer
|
|
65
|
+
*/
|
|
66
|
+
insert() {
|
|
67
|
+
return this.Container.resolve(builders_1.InsertQueryBuilder, [this]);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Truncates given table
|
|
71
|
+
*/
|
|
72
|
+
truncate(table) {
|
|
73
|
+
const b = this.Container.resolve(builders_1.TruncateTableQueryBuilder, [this]);
|
|
74
|
+
b.setTable(table);
|
|
75
|
+
return b;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Creates update query builder associated with this connection.
|
|
79
|
+
* This can be used to execute raw queries to db without orm model layer
|
|
80
|
+
*/
|
|
81
|
+
update() {
|
|
82
|
+
return this.Container.resolve(builders_1.UpdateQueryBuilder, [this]);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates schema query builder associated with this connection.
|
|
86
|
+
* This can be use to modify database structure
|
|
87
|
+
*/
|
|
88
|
+
schema() {
|
|
89
|
+
return this.Container.resolve(builders_1.SchemaQueryBuilder, [this]);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Creates index query builder associated with this connection.
|
|
93
|
+
* This can be use to create table indexes
|
|
94
|
+
*/
|
|
95
|
+
index() {
|
|
96
|
+
return this.Container.resolve(builders_1.IndexQueryBuilder, [this]);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
__decorate([
|
|
100
|
+
(0, di_1.Autoinject)(),
|
|
101
|
+
__metadata("design:type", di_1.Container)
|
|
102
|
+
], OrmDriver.prototype, "RootContainer", void 0);
|
|
103
|
+
exports.OrmDriver = OrmDriver;
|
|
104
|
+
//# sourceMappingURL=driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../../orm/src/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allowed query methods and types.
|
|
3
|
+
*/
|
|
4
|
+
export declare enum QueryMethod {
|
|
5
|
+
/**
|
|
6
|
+
* Select method eg. SELECT * FROM users
|
|
7
|
+
*/
|
|
8
|
+
SELECT = 0,
|
|
9
|
+
/**
|
|
10
|
+
* Insert method eg. INSERT INTO
|
|
11
|
+
*/
|
|
12
|
+
INSERT = 1,
|
|
13
|
+
/**
|
|
14
|
+
* UPDATE method eg. UPDATE ...
|
|
15
|
+
*/
|
|
16
|
+
UPDATE = 2,
|
|
17
|
+
/**
|
|
18
|
+
* DELETE method eg. DELETE FROM users
|
|
19
|
+
*/
|
|
20
|
+
DELETE = 3,
|
|
21
|
+
/**
|
|
22
|
+
* WHERE method used to specify conditions in other methods eg. WHERE foo = 1 AND bar = 2
|
|
23
|
+
*/
|
|
24
|
+
WHERE = 4,
|
|
25
|
+
/**
|
|
26
|
+
* SCHEMA builder query eg. CREATE TABLE ...
|
|
27
|
+
*/
|
|
28
|
+
SCHEMA = 5
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Logical operators used in queries
|
|
32
|
+
*/
|
|
33
|
+
export declare enum WhereBoolean {
|
|
34
|
+
AND = "and",
|
|
35
|
+
OR = "or"
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Allowed operators in queries
|
|
39
|
+
*/
|
|
40
|
+
export declare enum SqlOperator {
|
|
41
|
+
LT = "<",
|
|
42
|
+
LTE = "<=",
|
|
43
|
+
GT = ">",
|
|
44
|
+
GTE = ">=",
|
|
45
|
+
NOT = "!=",
|
|
46
|
+
NOT_2 = "<>",
|
|
47
|
+
EQ = "=",
|
|
48
|
+
EQ_NULL = "<=>",
|
|
49
|
+
IN = "in",
|
|
50
|
+
NOT_IN = "not in",
|
|
51
|
+
NULL = "is null",
|
|
52
|
+
NOT_NULL = "is not null",
|
|
53
|
+
BETWEEN = "between",
|
|
54
|
+
NOT_BETWEEN = "not between",
|
|
55
|
+
LIKE = "like",
|
|
56
|
+
RLIKE = "rlike"
|
|
57
|
+
}
|
|
58
|
+
export declare type Op = '<' | '>' | '!=' | '<=>' | '>=' | '<=' | '<>' | 'like' | '=' | 'rlike';
|
|
59
|
+
/**
|
|
60
|
+
* Allowed join methods in queries
|
|
61
|
+
*/
|
|
62
|
+
export declare enum JoinMethod {
|
|
63
|
+
INNER = "INNER JOIN",
|
|
64
|
+
LEFT = "LEFT JOIN",
|
|
65
|
+
LEFT_OUTER = "LEFT OUTER JOIN",
|
|
66
|
+
RIGHT = "RIGHT JOIN",
|
|
67
|
+
RIGHT_OUTER = "RIGHT OUTER JOIN",
|
|
68
|
+
FULL_OUTER = "FULL OUTER JOIN",
|
|
69
|
+
CROSS = "CROSS JOIN"
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Default column methods. For other methods user raw queries.
|
|
73
|
+
*/
|
|
74
|
+
export declare enum ColumnMethods {
|
|
75
|
+
MIN = "MIN",
|
|
76
|
+
MAX = "MAX",
|
|
77
|
+
SUM = "SUM",
|
|
78
|
+
AVG = "AVG",
|
|
79
|
+
COUNT = "COUNT"
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Allowed column types
|
|
83
|
+
*/
|
|
84
|
+
export declare enum ColumnType {
|
|
85
|
+
SMALL_INTEGER = "smallint",
|
|
86
|
+
TINY_INTEGER = "tinyint",
|
|
87
|
+
MEDIUM_INTEGER = "mediumint",
|
|
88
|
+
INTEGER = "int",
|
|
89
|
+
BIG_INTEGER = "bigint",
|
|
90
|
+
TINY_TEXT = "tinytext",
|
|
91
|
+
MEDIUM_TEXT = "mediumtext",
|
|
92
|
+
LONG_TEXT = "longtext",
|
|
93
|
+
TEXT = "text",
|
|
94
|
+
STRING = "string",
|
|
95
|
+
FLOAT = "float",
|
|
96
|
+
DECIMAL = "decimal",
|
|
97
|
+
BOOLEAN = "boolean",
|
|
98
|
+
BIT = "bit",
|
|
99
|
+
DOUBLE = "double",
|
|
100
|
+
DATE = "date",
|
|
101
|
+
TIME = "time",
|
|
102
|
+
DATE_TIME = "dateTime",
|
|
103
|
+
TIMESTAMP = "timestamp",
|
|
104
|
+
ENUM = "enum",
|
|
105
|
+
JSON = "json",
|
|
106
|
+
SET = "set",
|
|
107
|
+
BINARY = "binary",
|
|
108
|
+
TINY_BLOB = "tinyblob",
|
|
109
|
+
MEDIUM_BLOB = "mediumblob",
|
|
110
|
+
LONG_BLOB = "longblob"
|
|
111
|
+
}
|
|
112
|
+
export declare enum SordOrder {
|
|
113
|
+
ASC = "ASC",
|
|
114
|
+
DESC = "DESC"
|
|
115
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SordOrder = exports.ColumnType = exports.ColumnMethods = exports.JoinMethod = exports.SqlOperator = exports.WhereBoolean = exports.QueryMethod = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Allowed query methods and types.
|
|
6
|
+
*/
|
|
7
|
+
var QueryMethod;
|
|
8
|
+
(function (QueryMethod) {
|
|
9
|
+
/**
|
|
10
|
+
* Select method eg. SELECT * FROM users
|
|
11
|
+
*/
|
|
12
|
+
QueryMethod[QueryMethod["SELECT"] = 0] = "SELECT";
|
|
13
|
+
/**
|
|
14
|
+
* Insert method eg. INSERT INTO
|
|
15
|
+
*/
|
|
16
|
+
QueryMethod[QueryMethod["INSERT"] = 1] = "INSERT";
|
|
17
|
+
/**
|
|
18
|
+
* UPDATE method eg. UPDATE ...
|
|
19
|
+
*/
|
|
20
|
+
QueryMethod[QueryMethod["UPDATE"] = 2] = "UPDATE";
|
|
21
|
+
/**
|
|
22
|
+
* DELETE method eg. DELETE FROM users
|
|
23
|
+
*/
|
|
24
|
+
QueryMethod[QueryMethod["DELETE"] = 3] = "DELETE";
|
|
25
|
+
/**
|
|
26
|
+
* WHERE method used to specify conditions in other methods eg. WHERE foo = 1 AND bar = 2
|
|
27
|
+
*/
|
|
28
|
+
QueryMethod[QueryMethod["WHERE"] = 4] = "WHERE";
|
|
29
|
+
/**
|
|
30
|
+
* SCHEMA builder query eg. CREATE TABLE ...
|
|
31
|
+
*/
|
|
32
|
+
QueryMethod[QueryMethod["SCHEMA"] = 5] = "SCHEMA";
|
|
33
|
+
})(QueryMethod = exports.QueryMethod || (exports.QueryMethod = {}));
|
|
34
|
+
/**
|
|
35
|
+
* Logical operators used in queries
|
|
36
|
+
*/
|
|
37
|
+
var WhereBoolean;
|
|
38
|
+
(function (WhereBoolean) {
|
|
39
|
+
WhereBoolean["AND"] = "and";
|
|
40
|
+
WhereBoolean["OR"] = "or";
|
|
41
|
+
})(WhereBoolean = exports.WhereBoolean || (exports.WhereBoolean = {}));
|
|
42
|
+
/**
|
|
43
|
+
* Allowed operators in queries
|
|
44
|
+
*/
|
|
45
|
+
var SqlOperator;
|
|
46
|
+
(function (SqlOperator) {
|
|
47
|
+
SqlOperator["LT"] = "<";
|
|
48
|
+
SqlOperator["LTE"] = "<=";
|
|
49
|
+
SqlOperator["GT"] = ">";
|
|
50
|
+
SqlOperator["GTE"] = ">=";
|
|
51
|
+
SqlOperator["NOT"] = "!=";
|
|
52
|
+
SqlOperator["NOT_2"] = "<>";
|
|
53
|
+
SqlOperator["EQ"] = "=";
|
|
54
|
+
SqlOperator["EQ_NULL"] = "<=>";
|
|
55
|
+
SqlOperator["IN"] = "in";
|
|
56
|
+
SqlOperator["NOT_IN"] = "not in";
|
|
57
|
+
SqlOperator["NULL"] = "is null";
|
|
58
|
+
SqlOperator["NOT_NULL"] = "is not null";
|
|
59
|
+
SqlOperator["BETWEEN"] = "between";
|
|
60
|
+
SqlOperator["NOT_BETWEEN"] = "not between";
|
|
61
|
+
SqlOperator["LIKE"] = "like";
|
|
62
|
+
SqlOperator["RLIKE"] = "rlike";
|
|
63
|
+
})(SqlOperator = exports.SqlOperator || (exports.SqlOperator = {}));
|
|
64
|
+
/**
|
|
65
|
+
* Allowed join methods in queries
|
|
66
|
+
*/
|
|
67
|
+
var JoinMethod;
|
|
68
|
+
(function (JoinMethod) {
|
|
69
|
+
JoinMethod["INNER"] = "INNER JOIN";
|
|
70
|
+
JoinMethod["LEFT"] = "LEFT JOIN";
|
|
71
|
+
JoinMethod["LEFT_OUTER"] = "LEFT OUTER JOIN";
|
|
72
|
+
JoinMethod["RIGHT"] = "RIGHT JOIN";
|
|
73
|
+
JoinMethod["RIGHT_OUTER"] = "RIGHT OUTER JOIN";
|
|
74
|
+
JoinMethod["FULL_OUTER"] = "FULL OUTER JOIN";
|
|
75
|
+
JoinMethod["CROSS"] = "CROSS JOIN";
|
|
76
|
+
})(JoinMethod = exports.JoinMethod || (exports.JoinMethod = {}));
|
|
77
|
+
/**
|
|
78
|
+
* Default column methods. For other methods user raw queries.
|
|
79
|
+
*/
|
|
80
|
+
var ColumnMethods;
|
|
81
|
+
(function (ColumnMethods) {
|
|
82
|
+
ColumnMethods["MIN"] = "MIN";
|
|
83
|
+
ColumnMethods["MAX"] = "MAX";
|
|
84
|
+
ColumnMethods["SUM"] = "SUM";
|
|
85
|
+
ColumnMethods["AVG"] = "AVG";
|
|
86
|
+
ColumnMethods["COUNT"] = "COUNT";
|
|
87
|
+
})(ColumnMethods = exports.ColumnMethods || (exports.ColumnMethods = {}));
|
|
88
|
+
/**
|
|
89
|
+
* Allowed column types
|
|
90
|
+
*/
|
|
91
|
+
var ColumnType;
|
|
92
|
+
(function (ColumnType) {
|
|
93
|
+
ColumnType["SMALL_INTEGER"] = "smallint";
|
|
94
|
+
ColumnType["TINY_INTEGER"] = "tinyint";
|
|
95
|
+
ColumnType["MEDIUM_INTEGER"] = "mediumint";
|
|
96
|
+
ColumnType["INTEGER"] = "int";
|
|
97
|
+
ColumnType["BIG_INTEGER"] = "bigint";
|
|
98
|
+
ColumnType["TINY_TEXT"] = "tinytext";
|
|
99
|
+
ColumnType["MEDIUM_TEXT"] = "mediumtext";
|
|
100
|
+
ColumnType["LONG_TEXT"] = "longtext";
|
|
101
|
+
ColumnType["TEXT"] = "text";
|
|
102
|
+
ColumnType["STRING"] = "string";
|
|
103
|
+
ColumnType["FLOAT"] = "float";
|
|
104
|
+
ColumnType["DECIMAL"] = "decimal";
|
|
105
|
+
ColumnType["BOOLEAN"] = "boolean";
|
|
106
|
+
ColumnType["BIT"] = "bit";
|
|
107
|
+
ColumnType["DOUBLE"] = "double";
|
|
108
|
+
ColumnType["DATE"] = "date";
|
|
109
|
+
ColumnType["TIME"] = "time";
|
|
110
|
+
ColumnType["DATE_TIME"] = "dateTime";
|
|
111
|
+
ColumnType["TIMESTAMP"] = "timestamp";
|
|
112
|
+
ColumnType["ENUM"] = "enum";
|
|
113
|
+
ColumnType["JSON"] = "json";
|
|
114
|
+
ColumnType["SET"] = "set";
|
|
115
|
+
ColumnType["BINARY"] = "binary";
|
|
116
|
+
ColumnType["TINY_BLOB"] = "tinyblob";
|
|
117
|
+
ColumnType["MEDIUM_BLOB"] = "mediumblob";
|
|
118
|
+
ColumnType["LONG_BLOB"] = "longblob";
|
|
119
|
+
})(ColumnType = exports.ColumnType || (exports.ColumnType = {}));
|
|
120
|
+
var SordOrder;
|
|
121
|
+
(function (SordOrder) {
|
|
122
|
+
SordOrder["ASC"] = "ASC";
|
|
123
|
+
SordOrder["DESC"] = "DESC";
|
|
124
|
+
})(SordOrder = exports.SordOrder || (exports.SordOrder = {}));
|
|
125
|
+
//# sourceMappingURL=enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../orm/src/enums.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,WA8BX;AA9BD,WAAY,WAAW;IACrB;;OAEG;IACH,iDAAM,CAAA;IAEN;;OAEG;IACH,iDAAM,CAAA;IAEN;;OAEG;IACH,iDAAM,CAAA;IAEN;;OAEG;IACH,iDAAM,CAAA;IAEN;;OAEG;IACH,+CAAK,CAAA;IAEL;;OAEG;IACH,iDAAM,CAAA;AACR,CAAC,EA9BW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QA8BtB;AAED;;GAEG;AACH,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,2BAAW,CAAA;IACX,yBAAS,CAAA;AACX,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED;;GAEG;AACH,IAAY,WAiBX;AAjBD,WAAY,WAAW;IACrB,uBAAQ,CAAA;IACR,yBAAU,CAAA;IACV,uBAAQ,CAAA;IACR,yBAAU,CAAA;IACV,yBAAU,CAAA;IACV,2BAAY,CAAA;IACZ,uBAAQ,CAAA;IACR,8BAAe,CAAA;IACf,wBAAS,CAAA;IACT,gCAAiB,CAAA;IACjB,+BAAgB,CAAA;IAChB,uCAAwB,CAAA;IACxB,kCAAmB,CAAA;IACnB,0CAA2B,CAAA;IAC3B,4BAAa,CAAA;IACb,8BAAe,CAAA;AACjB,CAAC,EAjBW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAiBtB;AAID;;GAEG;AACH,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,kCAAoB,CAAA;IACpB,gCAAkB,CAAA;IAClB,4CAA8B,CAAA;IAC9B,kCAAoB,CAAA;IACpB,8CAAgC,CAAA;IAChC,4CAA8B,CAAA;IAC9B,kCAAoB,CAAA;AACtB,CAAC,EARW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAQrB;AAED;;GAEG;AACH,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,4BAAW,CAAA;IACX,gCAAe,CAAA;AACjB,CAAC,EANW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAMxB;AAED;;GAEG;AACH,IAAY,UA2BX;AA3BD,WAAY,UAAU;IACpB,wCAA0B,CAAA;IAC1B,sCAAwB,CAAA;IACxB,0CAA4B,CAAA;IAC5B,6BAAe,CAAA;IACf,oCAAsB,CAAA;IACtB,oCAAsB,CAAA;IACtB,wCAA0B,CAAA;IAC1B,oCAAsB,CAAA;IACtB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;IACnB,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,oCAAsB,CAAA;IACtB,qCAAuB,CAAA;IACvB,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,oCAAsB,CAAA;IACtB,wCAA0B,CAAA;IAC1B,oCAAsB,CAAA;AACxB,CAAC,EA3BW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QA2BrB;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;AACf,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrmException = void 0;
|
|
4
|
+
const exceptions_1 = require("@spinajs/exceptions");
|
|
5
|
+
/**
|
|
6
|
+
* Exception thrown when functionality is not supported
|
|
7
|
+
*/
|
|
8
|
+
class OrmException extends exceptions_1.Exception {
|
|
9
|
+
}
|
|
10
|
+
exports.OrmException = OrmException;
|
|
11
|
+
//# sourceMappingURL=exceptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../../../orm/src/exceptions.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAEhD;;GAEG;AACH,MAAa,YAAa,SAAQ,sBAAS;CAAG;AAA9C,oCAA8C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ModelBase } from './model';
|
|
2
|
+
export declare abstract class ModelHydrator {
|
|
3
|
+
abstract hydrate(target: any, values: any): void;
|
|
4
|
+
}
|
|
5
|
+
export declare class OneToManyRelationHydrator extends ModelHydrator {
|
|
6
|
+
hydrate(target: ModelBase, values: any): void;
|
|
7
|
+
}
|
|
8
|
+
export declare class OneToOneRelationHydrator extends ModelHydrator {
|
|
9
|
+
hydrate(target: ModelBase, values: any): void;
|
|
10
|
+
}
|
|
11
|
+
export declare class DbPropertyHydrator extends ModelHydrator {
|
|
12
|
+
hydrate(target: ModelBase, values: any): void;
|
|
13
|
+
}
|
|
14
|
+
export declare class NonDbPropertyHydrator extends ModelHydrator {
|
|
15
|
+
hydrate(target: ModelBase, values: any): void;
|
|
16
|
+
}
|
|
17
|
+
export declare class JunctionModelPropertyHydrator extends ModelHydrator {
|
|
18
|
+
hydrate(target: ModelBase, values: any): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JunctionModelPropertyHydrator = exports.NonDbPropertyHydrator = exports.DbPropertyHydrator = exports.OneToOneRelationHydrator = exports.OneToManyRelationHydrator = exports.ModelHydrator = void 0;
|
|
4
|
+
/* eslint-disable prettier/prettier */
|
|
5
|
+
const interfaces_1 = require("./interfaces");
|
|
6
|
+
const di_1 = require("@spinajs/di");
|
|
7
|
+
const relations_1 = require("./relations");
|
|
8
|
+
class ModelHydrator {
|
|
9
|
+
}
|
|
10
|
+
exports.ModelHydrator = ModelHydrator;
|
|
11
|
+
class OneToManyRelationHydrator extends ModelHydrator {
|
|
12
|
+
hydrate(target, values) {
|
|
13
|
+
const descriptor = target.ModelDescriptor;
|
|
14
|
+
if (!descriptor) {
|
|
15
|
+
throw new Error(`cannot hydrate model ${target.constructor.name}, no model descriptor found`);
|
|
16
|
+
}
|
|
17
|
+
for (const [key, val] of descriptor.Relations) {
|
|
18
|
+
if (val.Type !== interfaces_1.RelationType.Many) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (values[key] != null) {
|
|
22
|
+
const entity = target;
|
|
23
|
+
const mapRel = values[key].map((x) => {
|
|
24
|
+
const tEntity = !(0, di_1.isConstructor)(val.TargetModel) ? new (val.TargetModel())() : new val.TargetModel();
|
|
25
|
+
tEntity['__relationKey__'] = key;
|
|
26
|
+
tEntity.hydrate(x);
|
|
27
|
+
return tEntity;
|
|
28
|
+
});
|
|
29
|
+
const rel = new relations_1.OneToManyRelationList(target, val.TargetModel, val, mapRel);
|
|
30
|
+
entity[key] = rel;
|
|
31
|
+
delete target[val.ForeignKey];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.OneToManyRelationHydrator = OneToManyRelationHydrator;
|
|
37
|
+
class OneToOneRelationHydrator extends ModelHydrator {
|
|
38
|
+
hydrate(target, values) {
|
|
39
|
+
const descriptor = target.ModelDescriptor;
|
|
40
|
+
if (!descriptor) {
|
|
41
|
+
throw new Error(`cannot hydrate model ${target.constructor.name}, no model descriptor found`);
|
|
42
|
+
}
|
|
43
|
+
for (const [key, val] of descriptor.Relations) {
|
|
44
|
+
if (val.Type !== interfaces_1.RelationType.One) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (values[key] != null) {
|
|
48
|
+
const entity = target;
|
|
49
|
+
const tEntity = !(0, di_1.isConstructor)(val.TargetModel) ? new (val.TargetModel())() : new val.TargetModel();
|
|
50
|
+
tEntity.hydrate(values[key]);
|
|
51
|
+
tEntity['__relationKey__'] = key;
|
|
52
|
+
const rel = new relations_1.SingleRelation(target, val.TargetModel, val, tEntity);
|
|
53
|
+
entity[key] = rel;
|
|
54
|
+
delete target[val.ForeignKey];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.OneToOneRelationHydrator = OneToOneRelationHydrator;
|
|
60
|
+
class DbPropertyHydrator extends ModelHydrator {
|
|
61
|
+
hydrate(target, values) {
|
|
62
|
+
const descriptor = target.ModelDescriptor;
|
|
63
|
+
if (!descriptor) {
|
|
64
|
+
throw new Error(`cannot hydrate model ${target.constructor.name}, no model descriptor found`);
|
|
65
|
+
}
|
|
66
|
+
// filter out model joined properties
|
|
67
|
+
// we handle it in later
|
|
68
|
+
const keys = Object.keys(values).filter((k) => { var _a; return (_a = descriptor.Columns) === null || _a === void 0 ? void 0 : _a.find((c) => c.Name === k); });
|
|
69
|
+
keys.forEach((k) => {
|
|
70
|
+
var _a;
|
|
71
|
+
// skip if column is primary key & is null
|
|
72
|
+
// we dont want to override pkey of target model
|
|
73
|
+
if (k === descriptor.PrimaryKey && !values[k]) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const column = (_a = descriptor.Columns) === null || _a === void 0 ? void 0 : _a.find((c) => c.Name === k);
|
|
77
|
+
target[k] = column.Converter ? column.Converter.fromDB(values[k], values, descriptor.Converters.get(column.Name).Options) : values[k];
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.DbPropertyHydrator = DbPropertyHydrator;
|
|
82
|
+
class NonDbPropertyHydrator extends ModelHydrator {
|
|
83
|
+
hydrate(target, values) {
|
|
84
|
+
const descriptor = target.ModelDescriptor;
|
|
85
|
+
if (!descriptor) {
|
|
86
|
+
throw new Error(`cannot hydrate model ${target.constructor.name}, no model descriptor found`);
|
|
87
|
+
}
|
|
88
|
+
// get only properties that are not in DB
|
|
89
|
+
const keys = Object.keys(values).filter((k) => { var _a; return ((_a = descriptor.Columns) === null || _a === void 0 ? void 0 : _a.find((c) => c.Name === k)) === undefined; });
|
|
90
|
+
keys.forEach((k) => {
|
|
91
|
+
target[k] = values[k];
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.NonDbPropertyHydrator = NonDbPropertyHydrator;
|
|
96
|
+
class JunctionModelPropertyHydrator extends ModelHydrator {
|
|
97
|
+
hydrate(target, values) {
|
|
98
|
+
const descriptor = target.ModelDescriptor;
|
|
99
|
+
if (!descriptor) {
|
|
100
|
+
throw new Error(`cannot hydrate model ${target.constructor.name}, no model descriptor found`);
|
|
101
|
+
}
|
|
102
|
+
for (const jt of descriptor.JunctionModelProperties) {
|
|
103
|
+
const entity = new jt.Model();
|
|
104
|
+
entity.hydrate(values.JunctionModel);
|
|
105
|
+
target[jt.Name] = entity;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.JunctionModelPropertyHydrator = JunctionModelPropertyHydrator;
|
|
110
|
+
//# sourceMappingURL=hydrators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrators.js","sourceRoot":"","sources":["../../../../orm/src/hydrators.ts"],"names":[],"mappings":"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"}
|