@@ -71,74 +71,183 @@ public final class SchemaBuilder {
7171 primaryKey: Bool = false ,
7272 unique: Bool = false ,
7373 check: Expression < Bool > ? = nil ,
74- defaultValue: T ? = nil
74+ defaultValue value : Expression < T > ? = nil
7575 ) {
76- column ( name, primaryKey, false , unique, check, defaultValue )
76+ column ( name, primaryKey, false , unique, check, value )
7777 }
78+
79+ public func column< T: Value > (
80+ name: Expression < T > ,
81+ primaryKey: Bool = false ,
82+ unique: Bool = false ,
83+ check: Expression < Bool > ? = nil ,
84+ defaultValue value: T
85+ ) {
86+ column ( name, primaryKey, false , unique, check, Expression ( value: value) )
87+ }
88+
89+ public func column< T: Value > (
90+ name: Expression < T ? > ,
91+ primaryKey: Bool = false ,
92+ unique: Bool = false ,
93+ check: Expression < Bool > ? = nil ,
94+ defaultValue value: Expression < T > ? = nil
95+ ) {
96+ column ( Expression < T > ( name) , primaryKey, true , unique, check, value)
97+ }
98+
7899 public func column< T: Value > (
79100 name: Expression < T ? > ,
80101 primaryKey: Bool = false ,
81102 unique: Bool = false ,
82103 check: Expression < Bool > ? = nil ,
83- defaultValue: T ? = nil
104+ defaultValue value: T ?
105+ ) {
106+ column ( Expression < T > ( name) , primaryKey, true , unique, check, value. map { Expression ( value: $0) } )
107+ }
108+
109+ public func column(
110+ name: Expression < String > ,
111+ primaryKey: Bool = false ,
112+ unique: Bool = false ,
113+ check: Expression < Bool > ? = nil ,
114+ defaultValue value: Expression < String > ? = nil ,
115+ collate: Collation
84116 ) {
85- column ( Expression < T > ( name. SQL, name. bindings) , primaryKey, true , unique, check, defaultValue)
117+ let expressions : [ Expressible ] = [ Expression < ( ) > ( " COLLATE \( collate. rawValue) " ) ]
118+ column ( name, primaryKey, false , unique, check, value, expressions)
86119 }
87120
88121 public func column(
89122 name: Expression < String > ,
90123 primaryKey: Bool = false ,
91124 unique: Bool = false ,
92125 check: Expression < Bool > ? = nil ,
93- defaultValue: String ? = nil ,
126+ defaultValue value: String ,
127+ collate: Collation
128+ ) {
129+ let expressions : [ Expressible ] = [ Expression < ( ) > ( " COLLATE \( collate. rawValue) " ) ]
130+ column ( name, primaryKey, false , unique, check, Expression ( value: value) , expressions)
131+ }
132+
133+ public func column(
134+ name: Expression < String ? > ,
135+ primaryKey: Bool = false ,
136+ unique: Bool = false ,
137+ check: Expression < Bool > ? = nil ,
138+ defaultValue value: Expression < String > ? = nil ,
94139 collate: Collation
95140 ) {
96141 let expressions : [ Expressible ] = [ Expression < ( ) > ( " COLLATE \( collate. rawValue) " ) ]
97- column ( name, primaryKey, false , unique, check, defaultValue , expressions)
142+ column ( Expression < String > ( name) , primaryKey, true , unique, check, value , expressions)
98143 }
144+
99145 public func column(
100146 name: Expression < String ? > ,
101147 primaryKey: Bool = false ,
102148 unique: Bool = false ,
103149 check: Expression < Bool > ? = nil ,
104- defaultValue: String ? = nil ,
150+ defaultValue value : String ? ,
105151 collate: Collation
106152 ) {
107153 let expressions : [ Expressible ] = [ Expression < ( ) > ( " COLLATE \( collate. rawValue) " ) ]
108- column ( Expression < String > ( name. SQL, name. bindings) , primaryKey, true , unique, check, defaultValue, expressions)
154+ column ( Expression < String > ( name) , primaryKey, true , unique, check, Expression ( value: value) , expressions)
155+ }
156+
157+ public func column(
158+ name: Expression < Int > ,
159+ primaryKey: Bool = false ,
160+ unique: Bool = false ,
161+ check: Expression < Bool > ? = nil ,
162+ defaultValue value: Expression < Int > ? = nil ,
163+ references: Expression < Int >
164+ ) {
165+ assertForeignKeysEnabled ( )
166+ let expressions : [ Expressible ] = [ Expression < ( ) > ( " REFERENCES " ) , namespace ( references) ]
167+ column ( name, primaryKey, false , unique, check, value, expressions)
109168 }
110169
111170 public func column(
112171 name: Expression < Int > ,
113172 primaryKey: Bool = false ,
114173 unique: Bool = false ,
115174 check: Expression < Bool > ? = nil ,
116- defaultValue: Int ? = nil ,
175+ defaultValue value: Int ,
176+ references: Expression < Int >
177+ ) {
178+ assertForeignKeysEnabled ( )
179+ let expressions : [ Expressible ] = [ Expression < ( ) > ( " REFERENCES " ) , namespace ( references) ]
180+ column ( name, primaryKey, false , unique, check, Expression ( value: value) , expressions)
181+ }
182+
183+ public func column(
184+ name: Expression < Int ? > ,
185+ primaryKey: Bool = false ,
186+ unique: Bool = false ,
187+ check: Expression < Bool > ? = nil ,
188+ defaultValue value: Expression < Int > ? = nil ,
117189 references: Expression < Int >
118190 ) {
119191 assertForeignKeysEnabled ( )
120192 let expressions : [ Expressible ] = [ Expression < ( ) > ( " REFERENCES " ) , namespace ( references) ]
121- column ( name, primaryKey, false , unique, check, defaultValue , expressions)
193+ column ( Expression < Int > ( name) , primaryKey, true , unique, check, value , expressions)
122194 }
195+
123196 public func column(
124197 name: Expression < Int ? > ,
125198 primaryKey: Bool = false ,
126199 unique: Bool = false ,
127200 check: Expression < Bool > ? = nil ,
128- defaultValue: Int ? = nil ,
201+ defaultValue value : Int ? ,
129202 references: Expression < Int >
130203 ) {
131204 assertForeignKeysEnabled ( )
132205 let expressions : [ Expressible ] = [ Expression < ( ) > ( " REFERENCES " ) , namespace ( references) ]
133- column ( Expression < Int > ( name. SQL, name. bindings) , primaryKey, true , unique, check, defaultValue, expressions)
206+ column ( Expression < Int > ( name) , primaryKey, true , unique, check, Expression ( value: value) , expressions)
207+ }
208+
209+ public func column(
210+ name: Expression < Int > ,
211+ primaryKey: Bool = false ,
212+ unique: Bool = false ,
213+ check: Expression < Bool > ? = nil ,
214+ defaultValue: Expression < Int > ? = nil ,
215+ references: Query
216+ ) {
217+ return column (
218+ name,
219+ primaryKey: primaryKey,
220+ unique: unique,
221+ check: check,
222+ defaultValue: defaultValue,
223+ references: Expression ( references. tableName)
224+ )
134225 }
135226
136227 public func column(
137228 name: Expression < Int > ,
138229 primaryKey: Bool = false ,
139230 unique: Bool = false ,
140231 check: Expression < Bool > ? = nil ,
141- defaultValue: Int ? = nil ,
232+ defaultValue: Int ,
233+ references: Query
234+ ) {
235+ return column (
236+ name,
237+ primaryKey: primaryKey,
238+ unique: unique,
239+ check: check,
240+ defaultValue: defaultValue,
241+ references: Expression ( references. tableName)
242+ )
243+ }
244+
245+ public func column(
246+ name: Expression < Int ? > ,
247+ primaryKey: Bool = false ,
248+ unique: Bool = false ,
249+ check: Expression < Bool > ? = nil ,
250+ defaultValue: Expression < Int > ? = nil ,
142251 references: Query
143252 ) {
144253 return column (
@@ -150,12 +259,13 @@ public final class SchemaBuilder {
150259 references: Expression ( references. tableName)
151260 )
152261 }
262+
153263 public func column(
154264 name: Expression < Int ? > ,
155265 primaryKey: Bool = false ,
156266 unique: Bool = false ,
157267 check: Expression < Bool > ? = nil ,
158- defaultValue: Int ? = nil ,
268+ defaultValue: Int ? ,
159269 references: Query
160270 ) {
161271 return column (
@@ -174,15 +284,15 @@ public final class SchemaBuilder {
174284 _ null: Bool ,
175285 _ unique: Bool ,
176286 _ check: Expression < Bool > ? ,
177- _ defaultValue: T ? ,
287+ _ defaultValue: Expression < T > ? ,
178288 _ expressions: [ Expressible ] ? = nil
179289 ) {
180- var parts : [ Expressible ] = [ name, Expression < ( ) > ( T . datatype) ]
290+ var parts : [ Expressible ] = [ Expression < ( ) > ( name) , Expression < ( ) > ( T . datatype) ]
181291 if primaryKey { parts. append ( Expression < ( ) > ( " PRIMARY KEY " ) ) }
182292 if !null { parts. append ( Expression < ( ) > ( " NOT NULL " ) ) }
183293 if unique { parts. append ( Expression < ( ) > ( " UNIQUE " ) ) }
184294 if let check = check { parts. append ( Expression < ( ) > ( " CHECK \( check. SQL) " , check. bindings) ) }
185- if let defaultValue = defaultValue { parts. append ( Expression < ( ) > ( " DEFAULT ? " , [ defaultValue ] ) ) }
295+ if let value = defaultValue { parts. append ( Expression < ( ) > ( " DEFAULT \( value . SQL ) " , value . bindings ) ) }
186296 if let expressions = expressions { parts += expressions }
187297 columns. append ( SQLite . join ( " " , parts) )
188298 }
0 commit comments