Skip to content

Commit 6b9cc20

Browse files
committed
feat: add Clauses method to ChainInterface and CreateInterface for improved query building
1 parent 9dfb242 commit 6b9cc20

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

generics.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ type CreateInterface[T any] interface {
4141
ExecInterface[T]
4242
// chain methods available at start; Select/Omit keep CreateInterface to allow Create chaining
4343
Scopes(scopes ...func(db *Statement)) ChainInterface[T]
44+
Clauses(clauses ...clause.Expression) CreateInterface[T]
4445
Where(query interface{}, args ...interface{}) ChainInterface[T]
4546
Not(query interface{}, args ...interface{}) ChainInterface[T]
4647
Or(query interface{}, args ...interface{}) ChainInterface[T]
@@ -71,6 +72,7 @@ type CreateInterface[T any] interface {
7172
type ChainInterface[T any] interface {
7273
ExecInterface[T]
7374
Scopes(scopes ...func(db *Statement)) ChainInterface[T]
75+
Clauses(clauses ...clause.Expression) ChainInterface[T]
7476
Where(query interface{}, args ...interface{}) ChainInterface[T]
7577
Not(query interface{}, args ...interface{}) ChainInterface[T]
7678
Or(query interface{}, args ...interface{}) ChainInterface[T]
@@ -210,6 +212,12 @@ func (c createG[T]) Table(name string, args ...interface{}) CreateInterface[T] {
210212
})}
211213
}
212214

215+
func (c createG[T]) Clauses(clauses ...clause.Expression) CreateInterface[T] {
216+
return createG[T]{c.with(func(db *DB) *DB {
217+
return db.Clauses(clauses...)
218+
})}
219+
}
220+
213221
func (c createG[T]) Select(query string, args ...interface{}) CreateInterface[T] {
214222
return createG[T]{c.with(func(db *DB) *DB {
215223
return db.Select(query, args...)
@@ -297,6 +305,12 @@ func (c chainG[T]) Offset(offset int) ChainInterface[T] {
297305
})
298306
}
299307

308+
func (c chainG[T]) Clauses(clauses ...clause.Expression) ChainInterface[T] {
309+
return c.with(func(db *DB) *DB {
310+
return db.Clauses(clauses...)
311+
})
312+
}
313+
300314
type joinBuilder struct {
301315
db *DB
302316
}

0 commit comments

Comments
 (0)