UNPKG

3.91 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.Index = exports.BelongsTo = exports.HasOne = exports.HasMany = exports.ObjectColumn = exports.Column = exports.Model = void 0;
4function 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}
35exports.Model = Model;
36function 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}
45exports.Column = Column;
46function 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}
65exports.ObjectColumn = ObjectColumn;
66function 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}
75exports.HasMany = HasMany;
76function 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}
85exports.HasOne = HasOne;
86function 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}
95exports.BelongsTo = BelongsTo;
96function 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}
106exports.Index = Index;