WIP: Insert sets PK
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
@@ -11,6 +12,7 @@ import (
|
||||
|
||||
type HasPK interface {
|
||||
IsInsertable() bool
|
||||
SetPk(pks ...any)
|
||||
}
|
||||
|
||||
type Repository[T HasPK] struct {
|
||||
@@ -87,32 +89,36 @@ func (r *Repository[T]) SelectByPk(pks ...any) *T {
|
||||
return &res[0]
|
||||
}
|
||||
|
||||
func (r *Repository[T]) Save(entity T) {
|
||||
func (r *Repository[T]) Save(entity T) (*T, error) {
|
||||
// Insert
|
||||
if entity.IsInsertable() {
|
||||
insertExec, err := exec.NewInsert[T](r.orm, entity)
|
||||
if err != nil {
|
||||
log.LogError("Failed to create insert execution: %s", err)
|
||||
return
|
||||
return nil, errors.New("")
|
||||
}
|
||||
if _, err := insertExec.Execute(r.conn); err != nil {
|
||||
log.LogError("Insert failed for entity: %s", entity)
|
||||
}
|
||||
|
||||
return
|
||||
return nil, errors.New("")
|
||||
}
|
||||
|
||||
updateExec, err := exec.NewUpdate[T](r.orm, entity)
|
||||
if err != nil {
|
||||
log.LogError("Failed to create update execution: %s", err)
|
||||
return
|
||||
return nil, errors.New("")
|
||||
|
||||
}
|
||||
|
||||
_, err = updateExec.Execute(r.conn)
|
||||
if err != nil {
|
||||
log.LogError("Update failed: %s", err)
|
||||
return
|
||||
return nil, errors.New("")
|
||||
|
||||
}
|
||||
|
||||
return &entity, nil
|
||||
}
|
||||
|
||||
func (r *Repository[T]) Delete(entity T) {
|
||||
|
||||
Reference in New Issue
Block a user