diff --git a/Sources/StructuredQueriesCore/Statements/Delete.swift b/Sources/StructuredQueriesCore/Statements/Delete.swift index 4595dbe7..fd4d602d 100644 --- a/Sources/StructuredQueriesCore/Statements/Delete.swift +++ b/Sources/StructuredQueriesCore/Statements/Delete.swift @@ -8,7 +8,7 @@ extension Table { /// /// - Returns: A delete statement. public static func delete() -> DeleteOf { - Delete() + Where().delete() } } diff --git a/Sources/StructuredQueriesCore/Statements/Update.swift b/Sources/StructuredQueriesCore/Statements/Update.swift index 55e93ad5..65fca9a5 100644 --- a/Sources/StructuredQueriesCore/Statements/Update.swift +++ b/Sources/StructuredQueriesCore/Statements/Update.swift @@ -37,7 +37,7 @@ extension Table { or conflictResolution: ConflictResolution? = nil, set updates: (inout Updates) -> Void ) -> UpdateOf { - Update(conflictResolution: conflictResolution, updates: Updates(updates)) + Where().update(or: conflictResolution, set: updates) } } diff --git a/Tests/StructuredQueriesTests/TableTests.swift b/Tests/StructuredQueriesTests/TableTests.swift index 311d9a58..1a016e2d 100644 --- a/Tests/StructuredQueriesTests/TableTests.swift +++ b/Tests/StructuredQueriesTests/TableTests.swift @@ -129,6 +129,22 @@ extension SnapshotTests { └─────────────────────────────────────────────┘ """ } + assertQuery( + Row + .delete() + .where { $0.id > 0 } + .returning(\.self) + ) { + """ + DELETE FROM "rows" + WHERE NOT ("rows"."isDeleted") AND ("rows"."id" > 0) + RETURNING "id", "isDeleted" + """ + } results: { + """ + + """ + } assertQuery( Row @@ -157,8 +173,8 @@ extension SnapshotTests { @Test func update() throws { assertQuery( Row - .where { $0.id > 0 } .update { $0.isDeleted.toggle() } + .where { $0.id > 0 } .returning(\.self) ) { """ @@ -177,6 +193,23 @@ extension SnapshotTests { └─────────────────────────────────────────────┘ """ } + assertQuery( + Row + .where { $0.id > 0 } + .update { $0.isDeleted.toggle() } + .returning(\.self) + ) { + """ + UPDATE "rows" + SET "isDeleted" = NOT ("rows"."isDeleted") + WHERE NOT ("rows"."isDeleted") AND ("rows"."id" > 0) + RETURNING "id", "isDeleted" + """ + } results: { + """ + + """ + } assertQuery( Row @@ -386,8 +419,8 @@ extension SnapshotTests { @Test func delete() throws { assertQuery( Row - .where { $0.id > 0 } .delete() + .where { $0.id > 0 } .returning(\.self) ) { """ @@ -405,6 +438,22 @@ extension SnapshotTests { └────────────────────────────────────────────┘ """ } + assertQuery( + Row + .where { $0.id > 0 } + .delete() + .returning(\.self) + ) { + """ + DELETE FROM "rows" + WHERE NOT ("rows"."isDeleted") AND ("rows"."id" > 0) + RETURNING "id", "isDeleted" + """ + } results: { + """ + + """ + } assertQuery( Row @@ -433,8 +482,8 @@ extension SnapshotTests { @Test func update() throws { assertQuery( Row - .where { $0.id > 0 } .update { $0.isDeleted.toggle() } + .where { $0.id > 0 } .returning(\.self) ) { """ @@ -453,6 +502,23 @@ extension SnapshotTests { └────────────────────────────────────────────┘ """ } + assertQuery( + Row + .where { $0.id > 0 } + .update { $0.isDeleted.toggle() } + .returning(\.self) + ) { + """ + UPDATE "rows" + SET "isDeleted" = NOT ("rows"."isDeleted") + WHERE NOT ("rows"."isDeleted") AND ("rows"."id" > 0) + RETURNING "id", "isDeleted" + """ + } results: { + """ + + """ + } assertQuery( Row