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 }