Skip to content

Commit 7a4d37c

Browse files
committed
Apply default scope to Table.{delete,update}()
This was only being applied when the `where` came first.
1 parent 2d9f1d9 commit 7a4d37c

File tree

3 files changed

+71
-5
lines changed

3 files changed

+71
-5
lines changed

Sources/StructuredQueriesCore/Statements/Delete.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ extension Table {
88
///
99
/// - Returns: A delete statement.
1010
public static func delete() -> DeleteOf<Self> {
11-
Delete()
11+
Where().delete()
1212
}
1313
}
1414

Sources/StructuredQueriesCore/Statements/Update.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ extension Table {
3737
or conflictResolution: ConflictResolution? = nil,
3838
set updates: (inout Updates<Self>) -> Void
3939
) -> UpdateOf<Self> {
40-
Update(conflictResolution: conflictResolution, updates: Updates(updates))
40+
Where().update(or: conflictResolution, set: updates)
4141
}
4242
}
4343

Tests/StructuredQueriesTests/TableTests.swift

Lines changed: 69 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,22 @@ extension SnapshotTests {
129129
└─────────────────────────────────────────────┘
130130
"""
131131
}
132+
assertQuery(
133+
Row
134+
.delete()
135+
.where { $0.id > 0 }
136+
.returning(\.self)
137+
) {
138+
"""
139+
DELETE FROM "rows"
140+
WHERE NOT ("rows"."isDeleted") AND ("rows"."id" > 0)
141+
RETURNING "id", "isDeleted"
142+
"""
143+
} results: {
144+
"""
145+
146+
"""
147+
}
132148

133149
assertQuery(
134150
Row
@@ -157,8 +173,8 @@ extension SnapshotTests {
157173
@Test func update() throws {
158174
assertQuery(
159175
Row
160-
.where { $0.id > 0 }
161176
.update { $0.isDeleted.toggle() }
177+
.where { $0.id > 0 }
162178
.returning(\.self)
163179
) {
164180
"""
@@ -177,6 +193,23 @@ extension SnapshotTests {
177193
└─────────────────────────────────────────────┘
178194
"""
179195
}
196+
assertQuery(
197+
Row
198+
.where { $0.id > 0 }
199+
.update { $0.isDeleted.toggle() }
200+
.returning(\.self)
201+
) {
202+
"""
203+
UPDATE "rows"
204+
SET "isDeleted" = NOT ("rows"."isDeleted")
205+
WHERE NOT ("rows"."isDeleted") AND ("rows"."id" > 0)
206+
RETURNING "id", "isDeleted"
207+
"""
208+
} results: {
209+
"""
210+
211+
"""
212+
}
180213

181214
assertQuery(
182215
Row
@@ -386,8 +419,8 @@ extension SnapshotTests {
386419
@Test func delete() throws {
387420
assertQuery(
388421
Row
389-
.where { $0.id > 0 }
390422
.delete()
423+
.where { $0.id > 0 }
391424
.returning(\.self)
392425
) {
393426
"""
@@ -405,6 +438,22 @@ extension SnapshotTests {
405438
└────────────────────────────────────────────┘
406439
"""
407440
}
441+
assertQuery(
442+
Row
443+
.where { $0.id > 0 }
444+
.delete()
445+
.returning(\.self)
446+
) {
447+
"""
448+
DELETE FROM "rows"
449+
WHERE NOT ("rows"."isDeleted") AND ("rows"."id" > 0)
450+
RETURNING "id", "isDeleted"
451+
"""
452+
} results: {
453+
"""
454+
455+
"""
456+
}
408457

409458
assertQuery(
410459
Row
@@ -433,8 +482,8 @@ extension SnapshotTests {
433482
@Test func update() throws {
434483
assertQuery(
435484
Row
436-
.where { $0.id > 0 }
437485
.update { $0.isDeleted.toggle() }
486+
.where { $0.id > 0 }
438487
.returning(\.self)
439488
) {
440489
"""
@@ -453,6 +502,23 @@ extension SnapshotTests {
453502
└────────────────────────────────────────────┘
454503
"""
455504
}
505+
assertQuery(
506+
Row
507+
.where { $0.id > 0 }
508+
.update { $0.isDeleted.toggle() }
509+
.returning(\.self)
510+
) {
511+
"""
512+
UPDATE "rows"
513+
SET "isDeleted" = NOT ("rows"."isDeleted")
514+
WHERE NOT ("rows"."isDeleted") AND ("rows"."id" > 0)
515+
RETURNING "id", "isDeleted"
516+
"""
517+
} results: {
518+
"""
519+
520+
"""
521+
}
456522

457523
assertQuery(
458524
Row

0 commit comments

Comments
 (0)