WIP: Insert sets PK

This commit is contained in:
2026-05-23 20:19:25 +02:00
parent 890151b490
commit 5d892a15ef
6 changed files with 59 additions and 54 deletions
+15 -5
View File
@@ -36,9 +36,10 @@ type Select[T any] struct {
}
func CreateSelect[T any](orm *simpleorm.ORM, whereStmt string, args ...any) (Select[T], error) {
table, ok := orm.Cache().Get(reflect.TypeFor[T]().Name())
typeName := reflect.TypeFor[T]().Name()
table, ok := orm.Cache().Get(typeName)
if !ok {
return Select[T]{}, errors.New("Failed to get table from schema cache")
return Select[T]{}, errors.New("Failed to get table from schema cache: " + typeName)
}
return Select[T]{target: *table, whereStmt: whereStmt, args: args}, nil
@@ -48,7 +49,10 @@ func (s Select[T]) GetResult() []T {
return s.result
}
func (s Select[T]) Execute(conn *simpleorm.DBConnection) error {
func (s *Select[T]) Execute(conn *simpleorm.DBConnection) error {
// Clear before executing
s.result = []T{}
dml, err := s.target.GetSelectDML()
if err != nil {
return err
@@ -122,7 +126,9 @@ type Insert[T any] struct {
}
func NewInsert[T any](orm *simpleorm.ORM, toInsert ...T) (Insert[T], error) {
table, ok := orm.Cache().Get(reflect.TypeFor[T]().Name())
typeName := reflect.TypeFor[T]().Name()
log.LogDebug("Searching Table cache by type: %s", typeName)
table, ok := orm.Cache().Get(typeName)
if !ok {
return Insert[T]{}, errors.New("Failed to get table from schema cache")
}
@@ -130,7 +136,7 @@ func NewInsert[T any](orm *simpleorm.ORM, toInsert ...T) (Insert[T], error) {
return Insert[T]{target: *table, toInsert: toInsert}, nil
}
func (ins Insert[T]) Execute(conn *simpleorm.DBConnection) error {
func (ins *Insert[T]) Execute(conn *simpleorm.DBConnection) error {
dml, err := ins.target.GetInsertDML(len(ins.toInsert))
if err != nil {
return err
@@ -170,6 +176,10 @@ func (ins Insert[T]) LastInsertId() int64 {
return ins.lastInsertId
}
func (ins Insert[T]) Target() schema.Table {
return ins.target
}
type Update[T any] struct {
target schema.Table
toUpdate T