Skip to content

Commit 5703e7b

Browse files
committed
Test
1 parent 64f8471 commit 5703e7b

File tree

2 files changed

+33
-6
lines changed

2 files changed

+33
-6
lines changed

Sources/StructuredQueriesCore/QueryFragment.swift

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,20 @@ public struct QueryFragment: Hashable, Sendable {
6464
public func prepare(
6565
_ template: (_ offset: Int) -> String
6666
) -> (sql: String, bindings: [QueryBinding]) {
67-
segments.enumerated().reduce(into: (sql: "", bindings: [QueryBinding]())) {
68-
switch $1.element {
69-
case .sql(let sql):
70-
$0.sql.append(sql)
67+
var sql = ""
68+
var bindings: [QueryBinding] = []
69+
var offset = 1
70+
for segment in segments {
71+
switch segment {
72+
case .sql(let fragment):
73+
sql.append(fragment)
7174
case .binding(let binding):
72-
$0.sql.append(template($0.bindings.count + 1))
73-
$0.bindings.append(binding)
75+
defer { offset += 1 }
76+
sql.append(template(offset))
77+
bindings.append(binding)
7478
}
7579
}
80+
return (sql, bindings)
7681
}
7782
}
7883

Tests/StructuredQueriesTests/QueryFragmentTests.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,27 @@ extension SnapshotTests {
4646
"""
4747
}
4848
}
49+
@Test func prepare() {
50+
let query = #sql(
51+
"""
52+
SELECT \(Reminder.id) FROM \(Reminder.self)
53+
WHERE \(Reminder.id) > \(1) AND \(Reminder.title) COLLATE NOCASE LIKE \(bind: "%get%")
54+
"""
55+
)
56+
.query
57+
58+
#expect(
59+
query.prepare { "$\($0)" } == (
60+
"""
61+
SELECT "reminders"."id" FROM "reminders"
62+
WHERE "reminders"."id" > $1 AND "reminders"."title" COLLATE NOCASE LIKE $2
63+
""",
64+
[
65+
.int(1),
66+
.text("%get%")
67+
]
68+
)
69+
)
70+
}
4971
}
5072
}

0 commit comments

Comments
 (0)