an ORM-free SQL experience
1package norm 2 3import ( 4 "context" 5 "database/sql" 6 "fmt" 7 "strings" 8) 9 10type delete_ struct { 11 from string 12 where *Expr 13} 14 15func Delete() delete_ { 16 return delete_{} 17} 18 19type DeleteOpt func(s *delete_) 20 21func (s delete_) From(table string) delete_ { 22 s.from = table 23 return s 24} 25 26func (s delete_) Where(expr Expr) delete_ { 27 s.where = &expr 28 return s 29} 30 31func (s delete_) Compile() (string, []any, error) { 32 var sql strings.Builder 33 var args []any 34 35 sql.WriteString("DELETE") 36 37 if s.from == "" { 38 return "", nil, fmt.Errorf("FROM clause is required") 39 } 40 sql.WriteString(" FROM ") 41 sql.WriteString(s.from) 42 43 if s.where != nil { 44 sql.WriteString(" WHERE ") 45 sql.WriteString(s.where.String()) 46 47 args = s.where.Binds() 48 } 49 50 return sql.String(), args, nil 51} 52 53func (s delete_) MustCompile() (string, []any) { 54 sql, args, err := s.Compile() 55 if err != nil { 56 panic(err) 57 } 58 59 return sql, args 60} 61 62func (s delete_) Build(p Database) (*sql.Stmt, []any, error) { return Build(s, p) } 63func (s delete_) MustBuild(p Database) (*sql.Stmt, []any) { return MustBuild(s, p) } 64 65func (s delete_) Exec(p Database) (sql.Result, error) { return Exec(s, p) } 66func (s delete_) ExecContext(ctx context.Context, p Database) (sql.Result, error) { 67 return ExecContext(ctx, s, p) 68} 69func (s delete_) MustExec(p Database) sql.Result { return MustExec(s, p) } 70func (s delete_) MustExecContext(ctx context.Context, p Database) sql.Result { 71 return MustExecContext(ctx, s, p) 72}