Files
pgson/build/insert.go

34 lines
758 B
Go

package build
import (
"fmt"
"log"
"sort"
"strings"
"git.secnex.io/secnex/pgson/schema"
"git.secnex.io/secnex/pgson/sql"
)
func Insert(s *schema.Table, data map[string]any) (*string, error) {
cols := []string{}
values := []string{}
// Keys of the data map
keys := make([]string, 0, len(data))
for k := range data {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
if err := sql.ValidateIdent(k); err != nil {
log.Printf("Invalid column identifier: %s", k)
return nil, err
}
cols = append(cols, sql.QuoteIdent(k))
values = append(values, sql.QuoteValue(data[k]))
}
ddl := fmt.Sprintf(sql.DML_INSERT_INTO, sql.QuoteIdent(s.Name), strings.Join(cols, ", "), strings.Join(values, ", "))
return &ddl, nil
}