Documentation
Go Tests / test (pull_request) Has been cancelled

This commit is contained in:
2026-07-28 22:15:29 +02:00
parent 7553b57ec9
commit 120761ecfd
2 changed files with 42 additions and 4 deletions
+21 -2
View File
@@ -10,11 +10,21 @@ import (
log "gitlab.com/gdulai/simpleloglvl"
)
// Delete represents a delete operation.
type Delete[T any] struct {
target schema.Table
toDelete []T
target schema.Table // The table from which records will be deleted.
toDelete []T // A slice of model instances to be deleted.
}
// NewDelete creates a new instance of Delete.
//
// Parameters:
// - orm: The ORM instance that manages the database connection and schema
// - toDelete: A slice of model instances to delete
//
// Returns:
// - Delete[T]: A new Delete operation instance
// - error: An error if the table could not be found in the schema cache
func NewDelete[T any](orm *simpleorm.ORM, toDelete []T) (Delete[T], error) {
table, ok := orm.Cache().Get(reflect.TypeFor[T]().Name())
if !ok {
@@ -24,10 +34,19 @@ func NewDelete[T any](orm *simpleorm.ORM, toDelete []T) (Delete[T], error) {
return Delete[T]{target: *table, toDelete: toDelete}, nil
}
// Execute executes the delete operation.
func (d *Delete[T]) Execute(conn *simpleorm.DBConnection) error {
return d.execute(conn, nil)
}
// execute constructs and executes the DELETE SQL statement.
//
// Parameters:
// - conn: The database connection to use for executing the query
// - tx: Optional transaction to use instead of a connection
//
// Returns:
// - error: An error if the operation fails
func (d *Delete[T]) execute(conn *simpleorm.DBConnection, tx *sql.Tx) error {
count := len(d.toDelete)
dml, err := d.target.GetDeleteDML(count)