@@ -21,6 +21,7 @@ generatorHandler({
21
21
try {
22
22
await mkdir ( options . generator . output , { recursive : true } ) ;
23
23
24
+ // await writeFile('./test.json', JSON.stringify(options.dmmf.datamodel));
24
25
const tables = generateTables ( options . dmmf . datamodel . models ) ;
25
26
const enums = generateEnums ( options . dmmf . datamodel . enums ) ;
26
27
const refs = generateRefs ( options . dmmf . datamodel . models ) ;
@@ -48,7 +49,52 @@ const generateTables = (models: DMMF.Model[]): string[] => {
48
49
} ;
49
50
50
51
const generateFields = ( fields : DMMF . Field [ ] ) : string => {
51
- return fields . map ( ( field ) => `\t${ field . name } ${ field . type } ` ) . join ( '\n' ) ;
52
+ return fields
53
+ . map (
54
+ ( field ) =>
55
+ `\t${ field . name } ${ field . type } ${ generateColumnDefinition ( field ) } `
56
+ )
57
+ . join ( '\n' ) ;
58
+ } ;
59
+
60
+ const generateColumnDefinition = ( field : DMMF . Field ) : string => {
61
+ const columnDefinition = [ ] ;
62
+ if ( field . isId ) {
63
+ columnDefinition . push ( 'pk' ) ;
64
+ }
65
+
66
+ if ( ( field . default as DMMF . FieldDefault ) ?. name === 'autoincrement' ) {
67
+ columnDefinition . push ( 'increment' ) ;
68
+ }
69
+
70
+ if ( ( field . default as DMMF . FieldDefault ) ?. name === 'now' ) {
71
+ columnDefinition . push ( 'default: `now()`' ) ;
72
+ }
73
+
74
+ if ( field . isUnique ) {
75
+ columnDefinition . push ( 'unique' ) ;
76
+ }
77
+
78
+ if ( field . isRequired && ! field . isId ) {
79
+ columnDefinition . push ( 'not null' ) ;
80
+ }
81
+
82
+ if (
83
+ typeof field . default === 'string' ||
84
+ typeof field . default === 'boolean' ||
85
+ typeof field . default === 'number'
86
+ ) {
87
+ columnDefinition . push ( `default: ${ field . default } ` ) ;
88
+ }
89
+
90
+ if ( ( field as any ) . documentation ) {
91
+ columnDefinition . push ( `note: '${ ( field as any ) . documentation } '` ) ;
92
+ }
93
+
94
+ if ( columnDefinition . length ) {
95
+ return ' [' + columnDefinition . join ( ', ' ) + ']' ;
96
+ }
97
+ return '' ;
52
98
} ;
53
99
54
100
const generateEnums = ( enums : DMMF . DatamodelEnum [ ] ) : string [ ] => {
0 commit comments