85 lines
1.8 KiB
Go
85 lines
1.8 KiB
Go
package lasebuche
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
func buildInsertSql(tablename string, fields []dbfield, dialect Dialect) string {
|
|
cols := make([]string, len(fields))
|
|
placeholders := make([]string, len(fields))
|
|
for i, f := range fields {
|
|
cols[i] = f.dbname
|
|
placeholders[i] = fmt.Sprintf("$%d", i+1)
|
|
}
|
|
return fmt.Sprintf(
|
|
"insert into %s (%s) values (%s)",
|
|
tablename,
|
|
strings.Join(cols, ","),
|
|
strings.Join(placeholders, ","),
|
|
)
|
|
}
|
|
|
|
func buildUpdateSql(tablename string, fields []dbfield, dialect Dialect) string {
|
|
predicates := make([]string, len(fields)-1)
|
|
var where string
|
|
i := 0
|
|
for _, f := range fields {
|
|
if f.dbname == "id" {
|
|
where = fmt.Sprintf("id=$%d and _version=$%d", len(fields), len(fields)+1)
|
|
} else {
|
|
predicates[i] = fmt.Sprintf("%s=$%d", f.dbname, i+1)
|
|
i++
|
|
}
|
|
}
|
|
return fmt.Sprintf(
|
|
"update %s set %s where %s",
|
|
tablename,
|
|
strings.Join(predicates, ","),
|
|
where,
|
|
)
|
|
}
|
|
|
|
func buildSelectbyidSql(tablename string, fields []dbfield, dialect Dialect) string {
|
|
columns := make([]string, len(fields))
|
|
var where string
|
|
for i, f := range fields {
|
|
columns[i] = fmt.Sprintf("%s", f.dbname)
|
|
}
|
|
where = "id=$1"
|
|
return fmt.Sprintf(
|
|
"select %s from %s where %s",
|
|
strings.Join(columns, ","),
|
|
tablename,
|
|
where,
|
|
)
|
|
}
|
|
|
|
func buildDeletebyidSql(tablename string, fields []dbfield, dialect Dialect) string {
|
|
where := "id=$1"
|
|
return fmt.Sprintf(
|
|
"delete from %s where %s",
|
|
tablename,
|
|
where,
|
|
)
|
|
}
|
|
|
|
func buildSelectWhere(tablename string, fields []dbfield, dialect Dialect) string {
|
|
columns := make([]string, len(fields))
|
|
for i, f := range fields {
|
|
columns[i] = fmt.Sprintf("%s", f.dbname)
|
|
}
|
|
return fmt.Sprintf(
|
|
"select %s from %s",
|
|
strings.Join(columns, ","),
|
|
tablename,
|
|
)
|
|
}
|
|
|
|
func buildDeleteWhere(tablename string, fields []dbfield, dialect Dialect) string {
|
|
return fmt.Sprintf(
|
|
"delete from %s",
|
|
tablename,
|
|
)
|
|
}
|