1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.Index = exports.BelongsTo = exports.HasOne = exports.HasMany = exports.ObjectColumn = exports.Column = exports.Model = void 0;
|
4 | function Model(options = {}) {
|
5 | return (ctor) => {
|
6 | ctor._initialize_called = true;
|
7 | if (options.name) {
|
8 | ctor.table_name = options.name;
|
9 | }
|
10 | ctor.description = options.description;
|
11 | if (options.connection) {
|
12 | ctor.connection(options.connection);
|
13 | }
|
14 | if (ctor._property_decorators) {
|
15 | for (const decorator of ctor._property_decorators) {
|
16 | if (decorator.type === 'column') {
|
17 | ctor.column(decorator.propertyKey, decorator.column_property);
|
18 | }
|
19 | else if (decorator.type === 'hasMany') {
|
20 | ctor.hasMany(decorator.propertyKey, decorator.options);
|
21 | }
|
22 | else if (decorator.type === 'hasOne') {
|
23 | ctor.hasOne(decorator.propertyKey, decorator.options);
|
24 | }
|
25 | else if (decorator.type === 'belongsTo') {
|
26 | ctor.belongsTo(decorator.propertyKey, decorator.options);
|
27 | }
|
28 | else if (decorator.type === 'index') {
|
29 | ctor.index(decorator.columns, decorator.options);
|
30 | }
|
31 | }
|
32 | }
|
33 | };
|
34 | }
|
35 | exports.Model = Model;
|
36 | function Column(column_property) {
|
37 | return (target, propertyKey) => {
|
38 | const ctor = target.constructor;
|
39 | if (!ctor._property_decorators) {
|
40 | ctor._property_decorators = [];
|
41 | }
|
42 | ctor._property_decorators.push({ type: 'column', propertyKey: propertyKey.toString(), column_property });
|
43 | };
|
44 | }
|
45 | exports.Column = Column;
|
46 | function ObjectColumn(partial_model_class) {
|
47 | return (target, propertyKey) => {
|
48 | const ctor = target.constructor;
|
49 | if (!ctor._property_decorators) {
|
50 | ctor._property_decorators = [];
|
51 | }
|
52 | const column_property = {};
|
53 | for (const decorator of partial_model_class._property_decorators) {
|
54 | if (decorator.type === 'column') {
|
55 | column_property[decorator.propertyKey] = decorator.column_property;
|
56 | }
|
57 | }
|
58 | if (!ctor._object_column_classes) {
|
59 | ctor._object_column_classes = [];
|
60 | }
|
61 | ctor._object_column_classes.push({ column: propertyKey.toString(), klass: partial_model_class });
|
62 | ctor._property_decorators.push({ type: 'column', propertyKey: propertyKey.toString(), column_property });
|
63 | };
|
64 | }
|
65 | exports.ObjectColumn = ObjectColumn;
|
66 | function HasMany(options) {
|
67 | return (target, propertyKey) => {
|
68 | const ctor = target.constructor;
|
69 | if (!ctor._property_decorators) {
|
70 | ctor._property_decorators = [];
|
71 | }
|
72 | ctor._property_decorators.push({ type: 'hasMany', propertyKey, options });
|
73 | };
|
74 | }
|
75 | exports.HasMany = HasMany;
|
76 | function HasOne(options) {
|
77 | return (target, propertyKey) => {
|
78 | const ctor = target.constructor;
|
79 | if (!ctor._property_decorators) {
|
80 | ctor._property_decorators = [];
|
81 | }
|
82 | ctor._property_decorators.push({ type: 'hasOne', propertyKey, options });
|
83 | };
|
84 | }
|
85 | exports.HasOne = HasOne;
|
86 | function BelongsTo(options) {
|
87 | return (target, propertyKey) => {
|
88 | const ctor = target.constructor;
|
89 | if (!ctor._property_decorators) {
|
90 | ctor._property_decorators = [];
|
91 | }
|
92 | ctor._property_decorators.push({ type: 'belongsTo', propertyKey, options });
|
93 | };
|
94 | }
|
95 | exports.BelongsTo = BelongsTo;
|
96 | function Index(columns, options) {
|
97 | return (ctor) => {
|
98 | if (ctor._initialize_called) {
|
99 | ctor.index(columns, options);
|
100 | }
|
101 | else {
|
102 | ctor._property_decorators.push({ type: 'index', columns, options });
|
103 | }
|
104 | };
|
105 | }
|
106 | exports.Index = Index;
|