Skip to content

Commit 3a795ea

Browse files
committed
Merge remote-tracking branch 'origin/main' into table-expression
2 parents d209480 + 9a6aff7 commit 3a795ea

File tree

3 files changed

+41
-19
lines changed

3 files changed

+41
-19
lines changed

Sources/StructuredQueriesMacros/TableMacro.swift

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,9 @@ extension TableMacro: ExtensionMacro {
383383
? "TableColumn"
384384
: "_TableColumn"
385385
let tableColumnInitializer = tableColumnType == "_TableColumn" ? ".for" : ""
386+
let defaultParameter = isColumnGroup
387+
? ""
388+
: defaultValue.map { ", default: \($0.trimmedDescription)" } ?? ""
386389
func appendColumnProperty(primaryKey: Bool = false) {
387390
columnsProperties.append(
388391
"""
@@ -393,7 +396,7 @@ extension TableMacro: ExtensionMacro {
393396
>\(raw: tableColumnInitializer)(\
394397
\(raw: isColumnGroup ? "" : "\(columnName), ")\
395398
keyPath: \\QueryValue.\(identifier)\
396-
\(isColumnGroup ? "" : defaultValue.map { ", default: \($0)" } ?? "")\
399+
\(raw: defaultParameter)\
397400
)
398401
"""
399402
)
@@ -657,6 +660,9 @@ extension TableMacro: ExtensionMacro {
657660
? "TableColumn"
658661
: "_TableColumn"
659662
let tableColumnInitializer = tableColumnType == "_TableColumn" ? ".for" : ""
663+
let defaultParameter = isColumnGroup
664+
? ""
665+
: defaultValue.map { ", default: \($0.trimmedDescription)" } ?? ""
660666
func appendColumnProperty(primaryKey: Bool = false) {
661667
columnsProperties.append(
662668
"""
@@ -667,7 +673,7 @@ extension TableMacro: ExtensionMacro {
667673
>\(raw: tableColumnInitializer)(\
668674
\(raw: isColumnGroup ? "" : "\(columnName), ")\
669675
keyPath: \\QueryValue.\(identifier)\
670-
\(isColumnGroup ? "" : defaultValue.map { ", default: \($0)" } ?? "")\
676+
\(raw: defaultParameter)\
671677
)
672678
"""
673679
)
@@ -1055,6 +1061,9 @@ extension TableMacro: MemberMacro {
10551061
? "TableColumn"
10561062
: "_TableColumn"
10571063
let tableColumnInitializer = tableColumnType == "_TableColumn" ? ".for" : ""
1064+
let defaultParameter = isColumnGroup
1065+
? ""
1066+
: defaultValue.map { ", default: \($0.trimmedDescription)" } ?? ""
10581067
func appendColumnProperty(primaryKey: Bool = false) {
10591068
columnsProperties.append(
10601069
"""
@@ -1065,7 +1074,7 @@ extension TableMacro: MemberMacro {
10651074
>\(raw: tableColumnInitializer)(\
10661075
\(raw: isColumnGroup ? "" : "\(columnName), ")\
10671076
keyPath: \\QueryValue.\(identifier)\
1068-
\(isColumnGroup ? "" : defaultValue.map { ", default: \($0)" } ?? "")\
1077+
\(raw: defaultParameter)\
10691078
)
10701079
"""
10711080
)
@@ -1074,7 +1083,7 @@ extension TableMacro: MemberMacro {
10741083
if isPrimaryKey {
10751084
appendColumnProperty(primaryKey: true)
10761085
}
1077-
allColumns.append((identifier, "_", columnQueryValueType, defaultValue))
1086+
allColumns.append((identifier, "_", columnQueryValueType, defaultValue?.trimmed))
10781087
allColumnNames.append(identifier)
10791088
if !isGenerated {
10801089
writableColumns.append(identifier)
@@ -1261,6 +1270,9 @@ extension TableMacro: MemberMacro {
12611270
? "TableColumn"
12621271
: "_TableColumn"
12631272
let tableColumnInitializer = tableColumnType == "_TableColumn" ? ".for" : ""
1273+
let defaultParameter = isColumnGroup
1274+
? ""
1275+
: defaultValue.map { ", default: \($0.trimmedDescription)" } ?? ""
12641276
func appendColumnProperty(primaryKey: Bool = false) {
12651277
columnsProperties.append(
12661278
"""
@@ -1271,14 +1283,14 @@ extension TableMacro: MemberMacro {
12711283
>\(raw: tableColumnInitializer)(\
12721284
\(raw: isColumnGroup ? "" : "\(columnName), ")\
12731285
keyPath: \\QueryValue.\(identifier)\
1274-
\(isColumnGroup ? "" : defaultValue.map { ", default: \($0)" } ?? "")\
1286+
\(raw: defaultParameter)\
12751287
)
12761288
"""
12771289
)
12781290
}
12791291
appendColumnProperty()
12801292
allColumns.append(
1281-
(identifier, parameter.firstName ?? "_", columnQueryValueType, defaultValue)
1293+
(identifier, parameter.firstName ?? "_", columnQueryValueType, defaultValue?.trimmed)
12821294
)
12831295
allColumnNames.append(identifier)
12841296
writableColumns.append(identifier)

Tests/StructuredQueriesMacrosTests/TableMacroTests.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,9 @@ extension SnapshotTests {
185185
@Table
186186
struct User {
187187
/// The user's identifier.
188-
let id: /* TODO: UUID */Int
188+
let id: /* TODO: UUID */Int // Primary key
189189
/// The user's email.
190-
var email: String? // TODO: Should this be non-optional?
190+
var email: String? = "" // TODO: Should this be non-optional?
191191
/// The user's age.
192192
var age: Int
193193
}
@@ -196,9 +196,9 @@ extension SnapshotTests {
196196
#"""
197197
struct User {
198198
/// The user's identifier.
199-
let id: /* TODO: UUID */Int
199+
let id: /* TODO: UUID */Int // Primary key
200200
/// The user's email.
201-
var email: String? // TODO: Should this be non-optional?
201+
var email: String? = "" // TODO: Should this be non-optional?
202202
/// The user's age.
203203
var age: Int
204204
@@ -207,7 +207,7 @@ extension SnapshotTests {
207207
public typealias PrimaryKey = Int
208208
public let id = StructuredQueriesCore._TableColumn<QueryValue, Int>.for("id", keyPath: \QueryValue.id)
209209
public let primaryKey = StructuredQueriesCore._TableColumn<QueryValue, Int>.for("id", keyPath: \QueryValue.id)
210-
public let email = StructuredQueriesCore._TableColumn<QueryValue, String?>.for("email", keyPath: \QueryValue.email, default: nil)
210+
public let email = StructuredQueriesCore._TableColumn<QueryValue, String?>.for("email", keyPath: \QueryValue.email, default: "")
211211
public let age = StructuredQueriesCore._TableColumn<QueryValue, Int>.for("age", keyPath: \QueryValue.age)
212212
public static var allColumns: [any StructuredQueriesCore.TableColumnExpression] {
213213
var allColumns: [any StructuredQueriesCore.TableColumnExpression] = []
@@ -233,7 +233,7 @@ extension SnapshotTests {
233233
public let allColumns: [any StructuredQueriesCore.QueryExpression]
234234
public init(
235235
id: some StructuredQueriesCore.QueryExpression<Int>,
236-
email: some StructuredQueriesCore.QueryExpression<String?> = String?(queryOutput: nil),
236+
email: some StructuredQueriesCore.QueryExpression<String?> = String?(queryOutput: ""),
237237
age: some StructuredQueriesCore.QueryExpression<Int>
238238
) {
239239
var allColumns: [any StructuredQueriesCore.QueryExpression] = []
@@ -246,13 +246,13 @@ extension SnapshotTests {
246246
247247
public struct Draft: StructuredQueriesCore.TableDraft {
248248
public typealias PrimaryTable = User
249-
let id: /* TODO: UUID */ Int?
250-
var email: String?
249+
let id: /* TODO: UUID */ Int? // Primary key
250+
var email: String? = ""
251251
var age: Int
252252
public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition {
253253
public typealias QueryValue = Draft
254254
public let id = StructuredQueriesCore._TableColumn<QueryValue, Int?>.for("id", keyPath: \QueryValue.id, default: nil)
255-
public let email = StructuredQueriesCore._TableColumn<QueryValue, String?>.for("email", keyPath: \QueryValue.email, default: nil)
255+
public let email = StructuredQueriesCore._TableColumn<QueryValue, String?>.for("email", keyPath: \QueryValue.email, default: "")
256256
public let age = StructuredQueriesCore._TableColumn<QueryValue, Int>.for("age", keyPath: \QueryValue.age)
257257
public static var allColumns: [any StructuredQueriesCore.TableColumnExpression] {
258258
var allColumns: [any StructuredQueriesCore.TableColumnExpression] = []
@@ -277,7 +277,7 @@ extension SnapshotTests {
277277
public let allColumns: [any StructuredQueriesCore.QueryExpression]
278278
public init(
279279
id: some StructuredQueriesCore.QueryExpression<Int?> = Int?(queryOutput: nil),
280-
email: some StructuredQueriesCore.QueryExpression<String?> = String?(queryOutput: nil),
280+
email: some StructuredQueriesCore.QueryExpression<String?> = String?(queryOutput: ""),
281281
age: some StructuredQueriesCore.QueryExpression<Int>
282282
) {
283283
var allColumns: [any StructuredQueriesCore.QueryExpression] = []
@@ -305,7 +305,7 @@ extension SnapshotTests {
305305
306306
public nonisolated init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws {
307307
self.id = try decoder.decode(Int.self) ?? nil
308-
self.email = try decoder.decode(String.self) ?? nil
308+
self.email = try decoder.decode(String.self) ?? ""
309309
let age = try decoder.decode(Int.self)
310310
guard let age else {
311311
throw StructuredQueriesCore.QueryDecodingError.missingRequiredColumn
@@ -320,7 +320,7 @@ extension SnapshotTests {
320320
}
321321
public init(
322322
id: /* TODO: UUID */ Int? = nil,
323-
email: String? = nil,
323+
email: String? = "",
324324
age: Int
325325
) {
326326
self.id = id
@@ -344,7 +344,7 @@ extension SnapshotTests {
344344
}
345345
public nonisolated init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws {
346346
let id = try decoder.decode(Int.self)
347-
self.email = try decoder.decode(String.self) ?? nil
347+
self.email = try decoder.decode(String.self) ?? "" // TODO: Should this be non-optional?
348348
let age = try decoder.decode(Int.self)
349349
guard let id else {
350350
throw StructuredQueriesCore.QueryDecodingError.missingRequiredColumn

Tests/StructuredQueriesTests/CompileTimeTests.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,13 @@ func dynamicMemberLookup() {
3737
b.baz.is(nil)
3838
}
3939
}
40+
41+
@Table
42+
struct TableWithComments {
43+
/// The user's identifier.
44+
let id: /* TODO: UUID */ Int // Primary key
45+
/// The user's email.
46+
var email: String? = "" // TODO: Should this be non-optional?
47+
/// The user's age.
48+
var age: Int
49+
}

0 commit comments

Comments
 (0)