-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdelete_builder.go
More file actions
37 lines (32 loc) · 974 Bytes
/
delete_builder.go
File metadata and controls
37 lines (32 loc) · 974 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package squildx
// DeleteBuilder provides a fluent, immutable API for constructing DELETE queries.
type DeleteBuilder interface {
From(table string) DeleteBuilder
Where(sql string, params ...Params) DeleteBuilder
WhereExists(sub Builder) DeleteBuilder
WhereNotExists(sub Builder) DeleteBuilder
WhereIn(column string, sub Builder) DeleteBuilder
WhereNotIn(column string, sub Builder) DeleteBuilder
Returning(columns ...string) DeleteBuilder
ReturningObject(obj any) DeleteBuilder
Build() (string, Params, error)
}
type deleteBuilder struct {
table string
wheres []paramClause
returnings []string
paramPrefix byte
err error
}
func NewDelete() DeleteBuilder {
return &deleteBuilder{}
}
func (b *deleteBuilder) clone() *deleteBuilder {
cp := *b
cp.wheres = copySlice(b.wheres)
cp.returnings = copySlice(b.returnings)
return &cp
}
func (b *deleteBuilder) setPrefix(prefix byte) error {
return checkSetPrefix(&b.paramPrefix, prefix)
}