@@ -34,7 +34,15 @@ extension PostgreSQLQuery {
34
34
columns: fluent. createColumns,
35
35
constraints: fluent. createConstraints
36
36
) )
37
- case . alter: fatalError ( )
37
+ case . alter:
38
+ query = . alterTable( . init(
39
+ ifExists: false ,
40
+ name: fluent. table,
41
+ addColumns: fluent. createColumns,
42
+ dropColumns: fluent. deleteColumns. map { $0. name } ,
43
+ addConstraints: fluent. createConstraints,
44
+ dropConstraints: fluent. deleteConstraints. map { $0. name ?? " unknown " }
45
+ ) )
38
46
case . drop:
39
47
query = . dropTable( . init( name: fluent. table, ifExists: false ) )
40
48
}
@@ -61,7 +69,7 @@ extension PostgreSQLDatabase: SchemaSupporting {
61
69
62
70
public static func schemaField( for type: Any . Type , isIdentifier: Bool , _ column: PostgreSQLQuery . Column ) -> PostgreSQLQuery . ColumnDefinition {
63
71
var constraints : [ PostgreSQLQuery . ColumnConstraint ] = [ ]
64
- let dataType : PostgreSQLQuery . DataType
72
+ var dataType : PostgreSQLQuery . DataType
65
73
66
74
var type = type
67
75
if let optional = type as? AnyOptionalType . Type {
@@ -90,10 +98,19 @@ extension PostgreSQLDatabase: SchemaSupporting {
90
98
}
91
99
92
100
if isIdentifier {
93
- switch dataType {
94
- case . smallint, . integer, . bigint:
95
- constraints. append ( . init( . generated( . byDefault) ) )
96
- default : break
101
+ if _globalEnableIdentityColumns {
102
+ switch dataType {
103
+ case . smallint, . integer, . bigint:
104
+ constraints. append ( . init( . generated( . byDefault) ) )
105
+ default : break
106
+ }
107
+ } else {
108
+ switch dataType {
109
+ case . smallint: dataType = . smallserial
110
+ case . integer: dataType = . serial
111
+ case . bigint: dataType = . bigserial
112
+ default : break
113
+ }
97
114
}
98
115
99
116
// create a unique name for the primary key since it will be added
0 commit comments