WIP: Refactor - delete dml
Go Tests / test (pull_request) Failing after 9s

This commit is contained in:
2026-05-11 00:12:41 +02:00
parent f50004d9b4
commit 7bd3c333fe
4 changed files with 138 additions and 9 deletions
+55 -1
View File
@@ -172,7 +172,7 @@ func NewUpdate[T any](orm *simpleorm.ORM, toUpdate T) (Update[T], error) {
}
func (u Update[T]) Execute(conn *simpleorm.DBConnection) ([]T, error) {
dml, err := u.target.GetUpdateDML(u.toUpdate)
dml, err := u.target.GetUpdateDML()
if err != nil {
return []T{}, err
}
@@ -206,6 +206,60 @@ func (u Update[T]) Execute(conn *simpleorm.DBConnection) ([]T, error) {
return []T{u.toUpdate}, nil
}
type Delete[T any] struct {
target schema.Table
toDelete []T
}
func NewDelete[T any](orm *simpleorm.ORM, toDelete []T) (Delete[T], error) {
table, ok := orm.Cache().Get(reflect.TypeFor[T]().Name())
if !ok {
return Delete[T]{}, errors.New("Failed to get table from schema cache")
}
return Delete[T]{target: *table, toDelete: toDelete}, nil
}
func (d Delete[T]) Execute(conn *simpleorm.DBConnection) ([]T, error) {
count := len(d.toDelete)
dml, err := d.target.GetDeleteDML(count)
if err != nil {
return []T{}, err
}
var params []any
for _, del := range d.toDelete {
pkCols, err := getPk(del, d.target)
if err != nil {
return []T{}, err
}
for _, pk := range pkCols {
params = append(params, pk)
}
}
log.LogInfo("%s [%s]", dml, params)
stmt, err := conn.Prepare(dml)
if err != nil {
return []T{}, err
}
defer stmt.Close()
result, err := stmt.Exec(params...)
if err != nil {
return []T{}, err
} else {
rowsAffected, _ := result.RowsAffected()
log.LogInfo("Deleted %s row", rowsAffected)
}
return d.toDelete, nil
}
func createSelectResultContainer(t schema.Table) []any {
vals := make([]any, t.Type.NumField())
for i := range vals {