/
query.go
39 lines (34 loc) · 1.23 KB
/
query.go
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
38
39
package repository
import (
"github.com/allisson/postmand"
"github.com/huandu/go-sqlbuilder"
)
func getQuery(tableName string, getOptions postmand.RepositoryGetOptions) (string, []interface{}) {
sb := sqlbuilder.PostgreSQL.NewSelectBuilder()
sb.Select("*").From(tableName)
for key, value := range getOptions.Filters {
sb.Where(sb.Equal(key, value))
}
return sb.Build()
}
func listQuery(tableName string, listOptions postmand.RepositoryListOptions) (string, []interface{}) {
sb := sqlbuilder.PostgreSQL.NewSelectBuilder()
sb.Select("*").From(tableName).Limit(listOptions.Limit).Offset(listOptions.Offset)
for key, value := range listOptions.Filters {
sb.Where(sb.Equal(key, value))
}
if listOptions.OrderBy != "" {
sb.OrderBy(listOptions.OrderBy)
}
return sb.Build()
}
func insertQuery(tableName string, structValue interface{}) (string, []interface{}) {
theStruct := sqlbuilder.NewStruct(structValue).For(sqlbuilder.PostgreSQL)
ib := theStruct.InsertInto(tableName, structValue)
return ib.Build()
}
func updateQuery(tableName string, structValue interface{}) (string, []interface{}) {
theStruct := sqlbuilder.NewStruct(structValue).For(sqlbuilder.PostgreSQL)
ib := theStruct.Update(tableName, structValue)
return ib.Build()
}