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, ) }