Add missing validation on relation existence

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-12-10 14:22:13 +01:00
parent 9c9a498f10
commit d94d101485
4 changed files with 46 additions and 0 deletions

View File

@@ -189,6 +189,10 @@ func (s AssetService) Update(
asset.Amount = *req.Amount
}
if req.OwnerID != nil {
people := &coredata.People{}
if err := people.LoadByID(ctx, conn, s.svc.scope, *req.OwnerID); err != nil {
return fmt.Errorf("cannot load owner: %w", err)
}
asset.OwnerID = *req.OwnerID
}
if req.AssetType != nil {
@@ -243,6 +247,11 @@ func (s AssetService) Create(
}
err := s.svc.pg.WithTx(ctx, func(conn pg.Conn) error {
people := &coredata.People{}
if err := people.LoadByID(ctx, conn, s.svc.scope, req.OwnerID); err != nil {
return fmt.Errorf("cannot load owner: %w", err)
}
if err := asset.Insert(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot insert asset: %w", err)
}

View File

@@ -196,6 +196,10 @@ func (s DatumService) Update(
datum.DataClassification = *req.DataClassification
}
if req.OwnerID != nil {
people := &coredata.People{}
if err := people.LoadByID(ctx, conn, s.svc.scope, *req.OwnerID); err != nil {
return fmt.Errorf("cannot load owner: %w", err)
}
datum.OwnerID = *req.OwnerID
}
datum.UpdatedAt = now
@@ -245,6 +249,11 @@ func (s DatumService) Create(
err := s.svc.pg.WithTx(
ctx,
func(conn pg.Conn) error {
people := &coredata.People{}
if err := people.LoadByID(ctx, conn, s.svc.scope, req.OwnerID); err != nil {
return fmt.Errorf("cannot load owner: %w", err)
}
if err := datum.Insert(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot insert datum: %w", err)
}

View File

@@ -209,9 +209,19 @@ func (s *NonconformityService) Update(
nonconformity.CorrectiveAction = *req.CorrectiveAction
}
if req.OwnerID != nil {
people := &coredata.People{}
if err := people.LoadByID(ctx, conn, s.svc.scope, *req.OwnerID); err != nil {
return fmt.Errorf("cannot load owner: %w", err)
}
nonconformity.OwnerID = *req.OwnerID
}
if req.AuditID != nil {
if *req.AuditID != nil {
audit := &coredata.Audit{}
if err := audit.LoadByID(ctx, conn, s.svc.scope, **req.AuditID); err != nil {
return fmt.Errorf("cannot load audit: %w", err)
}
}
nonconformity.AuditID = *req.AuditID
}
if req.DueDate != nil {

View File

@@ -111,6 +111,19 @@ func (s TaskService) Create(
err = s.svc.pg.WithTx(
ctx,
func(conn pg.Conn) error {
if req.MeasureID != nil {
measure := &coredata.Measure{}
if err := measure.LoadByID(ctx, conn, s.svc.scope, *req.MeasureID); err != nil {
return fmt.Errorf("cannot load measure: %w", err)
}
}
if req.AssignedToID != nil {
people := &coredata.People{}
if err := people.LoadByID(ctx, conn, s.svc.scope, *req.AssignedToID); err != nil {
return fmt.Errorf("cannot load assignee: %w", err)
}
}
if err := task.Insert(ctx, conn, s.svc.scope); err != nil {
return fmt.Errorf("cannot insert task: %w", err)
@@ -159,6 +172,11 @@ func (s TaskService) Assign(
return fmt.Errorf("cannot load task %q: %w", taskID, err)
}
people := &coredata.People{}
if err := people.LoadByID(ctx, conn, s.svc.scope, assignedToID); err != nil {
return fmt.Errorf("cannot load assignee: %w", err)
}
task.AssignedToID = &assignedToID
task.UpdatedAt = time.Now()