-
Notifications
You must be signed in to change notification settings - Fork 0
/
TsModelGenerator.py
81 lines (66 loc) · 2.55 KB
/
TsModelGenerator.py
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
class TsModelGenerator:
def __init__(self,tbn='TableName',listOfParam=[],allString=True):
self.importHeader = \
'import * as mongoose from \'mongoose\';\n\n'
self.essentialParam = \
' id: string;\n' + \
' created: Date;\n'
self.addedParam = ''
self.interfaceParam(listOfParam,allString)
self.mainInterfaceString = \
'interface I'+tbn+' {\n' + \
self.essentialParam + \
self.addedParam + \
'}\n\n'
self.mainInterfaceStringDocument = \
'interface I'+tbn+'Document\n' + \
' extends mongoose.Document,\n' + \
' I'+tbn+' {\n' + \
' id: string;\n' + \
' toJSON(): I'+tbn+';\n' + \
'}\n\n'
uc_tbn = self.uncapitalize(tbn)
self.schemaAddedParam = ''
self.schemaParam(listOfParam,allString)
self.mainSchema = \
'const '+uc_tbn+'Schema = new mongoose.Schema(\n' + \
' {' + \
' created: { type: Date, default: Date.now },\n' + \
self.schemaAddedParam + \
' },\n' + \
' {\n' + \
' collection: \''+uc_tbn+'s\',\n' + \
' },\n' + \
');\n\n'
self.mainModel = \
'const '+tbn+'Model = mongoose.model<I'+tbn+'Document>(\n' + \
' \''+tbn+'\',\n' + \
' '+uc_tbn+'Schema,\n' + \
');\n\n'
self.footer = \
'export default '+tbn+'Model;\n' + \
'export { I'+tbn+' };\n'
self.wholeContent = self.importHeader + \
self.mainInterfaceString + \
self.mainInterfaceStringDocument + \
self.mainSchema + \
self.mainModel + \
self.footer
def uncapitalize(self,tbn):
return tbn[:1].lower() + tbn[1:] if tbn else ''
def interfaceParam(self,listOfParam,allString):
# default all parameters to string
if allString:
for item in listOfParam:
self.addedParam += ' ' + str(item) + ': string;\n'
def schemaParam(self,listOfParam,allString):
# default all parameters to string
if allString:
for item in listOfParam:
self.schemaAddedParam += ' ' + str(item) + \
': { type: String },\n'
if __name__ == '__main__':
tsm = TsModelGenerator('MarketingActivity',['title','person'])
# print(type(tsm.mainInterfaceString))
f = open('MarketingAc.ts','w')
f.write(tsm.wholeContent)