61 lines
999 B
Go
61 lines
999 B
Go
package orm
|
|
|
|
import "github.com/go-pg/pg/internal"
|
|
|
|
func Delete(db DB, model interface{}) error {
|
|
res, err := NewQuery(db, model).Delete()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return internal.AssertOneRow(res.RowsAffected())
|
|
}
|
|
|
|
type deleteQuery struct {
|
|
q *Query
|
|
}
|
|
|
|
var _ QueryAppender = (*deleteQuery)(nil)
|
|
|
|
func (q deleteQuery) Copy() QueryAppender {
|
|
return deleteQuery{
|
|
q: q.q.Copy(),
|
|
}
|
|
}
|
|
|
|
func (q deleteQuery) Query() *Query {
|
|
return q.q
|
|
}
|
|
|
|
func (q deleteQuery) AppendQuery(b []byte) ([]byte, error) {
|
|
if q.q.stickyErr != nil {
|
|
return nil, q.q.stickyErr
|
|
}
|
|
|
|
var err error
|
|
|
|
if len(q.q.with) > 0 {
|
|
b, err = q.q.appendWith(b)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
b = append(b, "DELETE FROM "...)
|
|
b = q.q.appendFirstTableWithAlias(b)
|
|
|
|
if q.q.hasOtherTables() {
|
|
b = append(b, " USING "...)
|
|
b = q.q.appendOtherTables(b)
|
|
}
|
|
|
|
b, err = q.q.mustAppendWhere(b)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(q.q.returning) > 0 {
|
|
b = q.q.appendReturning(b)
|
|
}
|
|
|
|
return b, nil
|
|
}
|