-
Notifications
You must be signed in to change notification settings - Fork 1
/
write-head.js
117 lines (96 loc) · 2.46 KB
/
write-head.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
const { boolTypes, dateTypes } = require('./constants');
module.exports = function(info, columns, baseInfo, conf) {
const hasBool = Object.keys(info).find(col => {
return (boolTypes.indexOf(info[col].type) > -1 && info[col].length === 1);
});
let hasDate = false;
if (conf.get('moment')) {
hasDate = Object.keys(info).find(col => {
return dateTypes.indexOf(info[col].type) > -1;
});
}
let hasDecimal = false;
if (conf.get('big')) {
hasDecimal = Object.keys(info).find(col => {
return info[col].type === 'decimal';
});
}
let content = '';
if (hasDecimal) {
content += `import { Big } from 'big.js';
`;
}
if (conf.get('rules')) {
content += `import * as joi from 'joi';
`;
}
if (conf.get('moment') && hasDate) {
content += `import { Moment } from 'moment';
`;
}
content += 'import { Column';
if (columns.createDate) {
content += ', CreateDateColumn';
}
content += ', Entity';
if (columns.primary) {
content += ', PrimaryColumn';
}
if (columns.primaryGenerated || columns.primaryGeneratedUUID) {
content += ', PrimaryGeneratedColumn';
}
if (columns.updateDate) {
content += ', UpdateDateColumn';
}
if (columns.version) {
content += ', VersionColumn';
}
if (conf.get('browser')) {
content += ` } from 'typeorm/browser';
`;
} else {
content += ` } from 'typeorm';
`;
}
content += 'import { GenPartial';
if (hasDecimal || hasBool || hasDate) {
content += ', ';
} else {
content += ' ';
}
if (hasDecimal) {
content += 'bigTransformer';
if (hasBool || hasDate) {
content += ', ';
} else {
content += ' ';
}
}
if (hasBool) {
content += 'booleanTransformer';
if (hasDate) {
content += ', ';
} else {
content += ' ';
}
}
if (hasDate) {
content += `momentTransformer `;
}
content += `} from '@synconset/typeormutils';
`;
if (baseInfo) {
content += `
import ${baseInfo.name} from '${baseInfo.path}';
`;
}
content += `
@Entity('${conf.get('table')}')
export${conf.get(' default ') ? 'default' : ' '}class ${conf.get('model')} `;
if (baseInfo) {
content += `extends ${baseInfo.name} `;
}
content += `{
`;
return content;
};