Give dialects control over how insert and update queries are performed (#79946)

* Refactor insert, update
* Add separate insert, update methods
* Refactor Insert, Update signatures
This commit is contained in:
Arati R
2024-01-11 19:55:45 +01:00
committed by GitHub
parent 4e6b0fd9ce
commit ca9d147a44
2 changed files with 37 additions and 37 deletions
@@ -443,31 +443,13 @@ func (s *sqlEntityServer) Create(ctx context.Context, r *entity.CreateEntityRequ
}
// 1. Add row to the `entity_history` values
query, args, err := s.dialect.InsertQuery("entity_history", values)
if err != nil {
s.log.Error("error building entity history insert", "msg", err.Error())
return err
}
s.log.Debug("create", "query", query, "args", args)
_, err = tx.Exec(ctx, query, args...)
if err != nil {
s.log.Error("error writing entity history", "msg", err.Error())
if err := s.dialect.Insert(ctx, tx, "entity_history", values); err != nil {
s.log.Error("error inserting entity history", "msg", err.Error())
return err
}
// 2. Add row to the main `entity` table
query, args, err = s.dialect.InsertQuery("entity", values)
if err != nil {
s.log.Error("error building entity insert sql", "msg", err.Error())
return err
}
s.log.Debug("create", "query", query, "args", args)
_, err = tx.Exec(ctx, query, args...)
if err != nil {
if err := s.dialect.Insert(ctx, tx, "entity", values); err != nil {
s.log.Error("error inserting entity", "msg", err.Error())
return err
}
@@ -666,15 +648,8 @@ func (s *sqlEntityServer) Update(ctx context.Context, r *entity.UpdateEntityRequ
}
// 1. Add the `entity_history` values
query, args, err := s.dialect.InsertQuery("entity_history", values)
if err != nil {
s.log.Error("error building entity history insert", "msg", err.Error())
return err
}
_, err = tx.Exec(ctx, query, args...)
if err != nil {
s.log.Error("error writing entity history", "msg", err.Error())
if err := s.dialect.Insert(ctx, tx, "entity_history", values); err != nil {
s.log.Error("error inserting entity history", "msg", err.Error())
return err
}
@@ -690,19 +665,15 @@ func (s *sqlEntityServer) Update(ctx context.Context, r *entity.UpdateEntityRequ
delete(values, "created_at")
delete(values, "created_by")
query, args, err = s.dialect.UpdateQuery(
err = s.dialect.Update(
ctx,
tx,
"entity",
values,
map[string]any{
"guid": current.Guid,
},
)
if err != nil {
s.log.Error("error building entity update sql", "msg", err.Error())
return err
}
_, err = tx.Exec(ctx, query, args...)
if err != nil {
s.log.Error("error updating entity", "msg", err.Error())
return err