From a4611f54334f2c1dccd41d30ec52ebd9335e49f4 Mon Sep 17 00:00:00 2001 From: gearnode Date: Mon, 10 Mar 2025 10:27:30 +0100 Subject: [PATCH] Force scope usage even for insert Signed-off-by: gearnode --- pkg/probo/coredata/control.go | 10 ++-- .../coredata/control_state_transition.go | 6 ++- pkg/probo/coredata/evidence.go | 10 ++-- .../coredata/evidence_state_transition.go | 8 ++- pkg/probo/coredata/framework.go | 12 +++-- pkg/probo/coredata/organization.go | 7 ++- pkg/probo/coredata/people.go | 12 +++-- pkg/probo/coredata/policy.go | 12 +++-- pkg/probo/coredata/scope.go | 49 +++++++++++++++++-- pkg/probo/coredata/task.go | 10 ++-- pkg/probo/coredata/task_state_transition.go | 6 ++- pkg/probo/coredata/vendor.go | 12 +++-- pkg/probo/create_control.go | 4 +- pkg/probo/create_evidence.go | 4 +- pkg/probo/create_framework.go | 2 +- pkg/probo/create_organization.go | 2 +- pkg/probo/create_people.go | 2 +- pkg/probo/create_task.go | 4 +- pkg/probo/create_vendor.go | 2 +- pkg/probo/policy_service.go | 2 +- pkg/probo/service.go | 17 ++++++- pkg/probo/update_task_state.go | 2 +- 22 files changed, 145 insertions(+), 50 deletions(-) diff --git a/pkg/probo/coredata/control.go b/pkg/probo/coredata/control.go index a2e373540..d7ab2e846 100644 --- a/pkg/probo/coredata/control.go +++ b/pkg/probo/coredata/control.go @@ -59,7 +59,7 @@ func (c Control) CursorKey() page.CursorKey { func (c *Control) LoadByID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, controlID gid.GID, ) error { q := ` @@ -121,10 +121,12 @@ LIMIT 1; func (c Control) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO controls ( + tenant_id, id, framework_id, category, @@ -136,6 +138,7 @@ INSERT INTO version ) VALUES ( + @tenant_id, @control_id, @framework_id, @category, @@ -149,6 +152,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "control_id": c.ID, "framework_id": c.FrameworkID, "category": c.Category, @@ -166,7 +170,7 @@ VALUES ( func (c *Controls) LoadByFrameworkID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, frameworkID gid.GID, cursor *page.Cursor, ) error { @@ -227,7 +231,7 @@ WHERE func (c *Control) Update( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, params UpdateControlParams, ) error { q := ` diff --git a/pkg/probo/coredata/control_state_transition.go b/pkg/probo/coredata/control_state_transition.go index 17ef3871b..c69c924e4 100644 --- a/pkg/probo/coredata/control_state_transition.go +++ b/pkg/probo/coredata/control_state_transition.go @@ -42,10 +42,12 @@ func (cst ControlStateTransition) CursorKey() page.CursorKey { func (cst ControlStateTransition) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO control_state_transitions ( + tenant_id, id, control_id, from_state, @@ -55,6 +57,7 @@ INSERT INTO updated_at ) VALUES ( + @tenant_id, @control_state_transition_id, @control_id, @from_state, @@ -66,6 +69,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "control_state_transition_id": cst.ID, "control_id": cst.ControlID, "from_state": cst.FromState, @@ -81,7 +85,7 @@ VALUES ( func (cst *ControlStateTransitions) LoadByControlID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, controlID gid.GID, cursor *page.Cursor, ) error { diff --git a/pkg/probo/coredata/evidence.go b/pkg/probo/coredata/evidence.go index 6bb67e25d..1fdcd1b1a 100644 --- a/pkg/probo/coredata/evidence.go +++ b/pkg/probo/coredata/evidence.go @@ -49,10 +49,12 @@ func (e Evidence) CursorKey() page.CursorKey { func (e Evidence) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO evidences ( + tenant_id, id, task_id, object_key, @@ -63,6 +65,7 @@ INSERT INTO updated_at ) VALUES ( + @tenant_id, @evidence_id, @task_id, @object_key, @@ -75,6 +78,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "evidence_id": e.ID, "task_id": e.TaskID, "object_key": e.ObjectKey, @@ -91,7 +95,7 @@ VALUES ( func (e *Evidence) LoadByID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, evidenceID gid.GID, ) error { q := ` @@ -153,7 +157,7 @@ LIMIT 1; func (e *Evidences) LoadByTaskID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, taskID gid.GID, cursor *page.Cursor, ) error { @@ -215,7 +219,7 @@ WHERE func (e Evidence) Delete( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, ) error { q := ` DELETE FROM diff --git a/pkg/probo/coredata/evidence_state_transition.go b/pkg/probo/coredata/evidence_state_transition.go index a802f0c7e..e4acce68e 100644 --- a/pkg/probo/coredata/evidence_state_transition.go +++ b/pkg/probo/coredata/evidence_state_transition.go @@ -42,10 +42,12 @@ func (cst EvidenceStateTransition) CursorKey() page.CursorKey { func (est EvidenceStateTransition) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO evidence_state_transitions ( + tenant_id, id, evidence_id, from_state, @@ -55,6 +57,7 @@ INSERT INTO updated_at ) VALUES ( + @tenant_id, @evidence_state_transition_id, @evidence_id, @from_state, @@ -66,6 +69,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "evidence_state_transition_id": est.ID, "evidence_id": est.EvidenceID, "from_state": est.FromState, @@ -81,7 +85,7 @@ VALUES ( func (cst *EvidenceStateTransitions) LoadByEvidenceID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, evidenceID gid.GID, cursor *page.Cursor, ) error { @@ -125,7 +129,7 @@ WHERE func (cst *EvidenceStateTransitions) DeleteForEvidenceID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, evidenceID gid.GID, ) error { q := ` diff --git a/pkg/probo/coredata/framework.go b/pkg/probo/coredata/framework.go index b5c59778d..233117936 100644 --- a/pkg/probo/coredata/framework.go +++ b/pkg/probo/coredata/framework.go @@ -54,7 +54,7 @@ func (f Framework) CursorKey() page.CursorKey { func (f *Frameworks) LoadByOrganizationID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, organizationID gid.GID, cursor *page.Cursor, ) error { @@ -100,7 +100,7 @@ WHERE func (f *Framework) LoadByID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, frameworkID gid.GID, ) error { q := ` @@ -143,10 +143,12 @@ LIMIT 1; func (f Framework) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO frameworks ( + tenant_id, id, organization_id, name, @@ -157,6 +159,7 @@ INSERT INTO version ) VALUES ( + @tenant_id, @framework_id, @organization_id, @name, @@ -169,6 +172,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "framework_id": f.ID, "organization_id": f.OrganizationID, "name": f.Name, @@ -185,7 +189,7 @@ VALUES ( func (f Framework) Delete( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, ) error { q := ` DELETE @@ -207,7 +211,7 @@ WHERE func (f *Framework) Update( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, params UpdateFrameworkParams, ) error { q := ` diff --git a/pkg/probo/coredata/organization.go b/pkg/probo/coredata/organization.go index bf24e2409..3c16ea7a8 100644 --- a/pkg/probo/coredata/organization.go +++ b/pkg/probo/coredata/organization.go @@ -38,7 +38,7 @@ type ( func (o *Organization) LoadByID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, organizationID gid.GID, ) error { q := ` @@ -79,18 +79,21 @@ LIMIT 1; func (o *Organization) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO organizations ( + tenant_id, id, name, logo_url, created_at, updated_at -) VALUES (@id, @name, @logo_url, @created_at, @updated_at) +) VALUES (@tenant_id, @id, @name, @logo_url, @created_at, @updated_at) ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "id": o.ID, "name": o.Name, "logo_url": o.LogoURL, diff --git a/pkg/probo/coredata/people.go b/pkg/probo/coredata/people.go index 11fb33a97..82f2cce83 100644 --- a/pkg/probo/coredata/people.go +++ b/pkg/probo/coredata/people.go @@ -57,7 +57,7 @@ func (p People) CursorKey() page.CursorKey { func (p *People) LoadByID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, peopleID gid.GID, ) error { q := ` @@ -102,10 +102,12 @@ LIMIT 1; func (p People) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO peoples ( + tenant_id, id, organization_id, kind, @@ -117,6 +119,7 @@ INSERT INTO version ) VALUES ( + @tenant_id, @people_id, @organization_id, @kind, @@ -130,6 +133,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "people_id": p.ID, "organization_id": p.OrganizationID, "kind": p.Kind, @@ -147,7 +151,7 @@ VALUES ( func (p People) Delete( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, ) error { q := ` DELETE FROM peoples WHERE %s AND id = @people_id @@ -165,7 +169,7 @@ DELETE FROM peoples WHERE %s AND id = @people_id func (p *Peoples) LoadByOrganizationID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, organizationID gid.GID, cursor *page.Cursor, ) error { @@ -212,7 +216,7 @@ WHERE func (p *People) Update( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, params UpdatePeopleParams, ) error { q := ` diff --git a/pkg/probo/coredata/policy.go b/pkg/probo/coredata/policy.go index 77dec0902..8c12284bf 100644 --- a/pkg/probo/coredata/policy.go +++ b/pkg/probo/coredata/policy.go @@ -45,7 +45,7 @@ func (p Policy) CursorKey() page.CursorKey { func (p *Policy) LoadByID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, policyID gid.GID, ) error { q := ` @@ -91,7 +91,7 @@ LIMIT 1; func (p *Policies) LoadByOrganizationID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, organizationID gid.GID, cursor *page.Cursor, ) error { @@ -139,10 +139,12 @@ WHERE func (p Policy) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO policies ( + tenant_id, id, organization_id, owner_id, @@ -155,6 +157,7 @@ INSERT INTO version ) VALUES ( + @tenant_id, @policy_id, @organization_id, @owner_id, @@ -169,6 +172,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "policy_id": p.ID, "organization_id": p.OrganizationID, "owner_id": p.OwnerID, @@ -187,7 +191,7 @@ VALUES ( func (p Policy) Delete( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, ) error { q := ` DELETE FROM policies WHERE %s AND id = @policy_id @@ -205,7 +209,7 @@ DELETE FROM policies WHERE %s AND id = @policy_id func (p *Policy) Update( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, params UpdatePolicyParams, ) error { q := ` diff --git a/pkg/probo/coredata/scope.go b/pkg/probo/coredata/scope.go index e472aeb05..b2bc1abe3 100644 --- a/pkg/probo/coredata/scope.go +++ b/pkg/probo/coredata/scope.go @@ -19,17 +19,56 @@ import ( ) type ( - Scope struct{} + Scoper interface { + SQLArguments() pgx.StrictNamedArgs + SQLFragment() string + GetTenantID() *string + } + + NoScope struct{} + + Scope struct { + TenantID string + } ) -func NewScope() *Scope { - return &Scope{} +var ( + _ Scoper = (*NoScope)(nil) + _ Scoper = (*Scope)(nil) +) + +func NewNoScope() *NoScope { + return &NoScope{} } -func (*Scope) SQLArguments() pgx.StrictNamedArgs { +func (*NoScope) SQLArguments() pgx.StrictNamedArgs { return pgx.StrictNamedArgs{} } -func (*Scope) SQLFragment() string { +func (*NoScope) SQLFragment() string { return "TRUE" } + +func (*NoScope) GetTenantID() *string { + return nil +} + +func NewScope(tenantID string) *Scope { + return &Scope{ + TenantID: tenantID, + } +} + +func (s *Scope) SQLArguments() pgx.StrictNamedArgs { + return pgx.StrictNamedArgs{ + "tenant_id": s.TenantID, + } +} + +func (*Scope) SQLFragment() string { + return "tenant_id = @tenant_id" +} + +func (s *Scope) GetTenantID() *string { + return &s.TenantID +} diff --git a/pkg/probo/coredata/task.go b/pkg/probo/coredata/task.go index c3d062f1f..31baa7c01 100644 --- a/pkg/probo/coredata/task.go +++ b/pkg/probo/coredata/task.go @@ -49,7 +49,7 @@ func (t Task) CursorKey() page.CursorKey { func (t *Task) LoadByID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, taskID gid.GID, ) error { q := ` @@ -127,10 +127,12 @@ LIMIT 1; func (t Task) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` WITH task_insert AS ( INSERT INTO tasks ( + tenant_id, id, name, description, @@ -139,6 +141,7 @@ WITH task_insert AS ( updated_at ) VALUES ( + @tenant_id, @task_id, @name, @description, @@ -161,6 +164,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "task_id": t.ID, "control_id": t.ControlID, "name": t.Name, @@ -176,7 +180,7 @@ VALUES ( func (t *Tasks) LoadByControlID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, controlID gid.GID, cursor *page.Cursor, ) error { @@ -253,7 +257,7 @@ WHERE func (t *Task) Delete( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, ) error { q := ` WITH control_count AS ( diff --git a/pkg/probo/coredata/task_state_transition.go b/pkg/probo/coredata/task_state_transition.go index ad0c4338a..e84cf1643 100644 --- a/pkg/probo/coredata/task_state_transition.go +++ b/pkg/probo/coredata/task_state_transition.go @@ -41,10 +41,12 @@ func (tst TaskStateTransition) CursorKey() page.CursorKey { func (tst TaskStateTransition) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO task_state_transitions ( + tenant_id, id, task_id, from_state, @@ -54,6 +56,7 @@ INSERT INTO updated_at ) VALUES ( + @tenant_id, @task_state_transition_id, @task_id, @from_state, @@ -65,6 +68,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "task_state_transition_id": tst.ID, "task_id": tst.TaskID, "from_state": tst.FromState, @@ -80,7 +84,7 @@ VALUES ( func (tst *TaskStateTransitions) LoadByTaskID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, taskID gid.GID, cursor *page.Cursor, ) error { diff --git a/pkg/probo/coredata/vendor.go b/pkg/probo/coredata/vendor.go index 74677631f..632241894 100644 --- a/pkg/probo/coredata/vendor.go +++ b/pkg/probo/coredata/vendor.go @@ -70,7 +70,7 @@ func (v Vendor) CursorKey() page.CursorKey { func (v *Vendor) LoadByID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, vendorID gid.GID, ) error { q := ` @@ -121,10 +121,12 @@ LIMIT 1; func (v Vendor) Insert( ctx context.Context, conn pg.Conn, + scope Scoper, ) error { q := ` INSERT INTO vendors ( + tenant_id, id, organization_id, name, @@ -141,6 +143,7 @@ INSERT INTO version ) VALUES ( + @tenant_id, @vendor_id, @organization_id, @name, @@ -159,6 +162,7 @@ VALUES ( ` args := pgx.StrictNamedArgs{ + "tenant_id": scope.GetTenantID(), "vendor_id": v.ID, "organization_id": v.OrganizationID, "name": v.Name, @@ -180,7 +184,7 @@ VALUES ( func (v Vendor) Delete( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, ) error { q := ` DELETE FROM vendors WHERE %s AND id = @vendor_id @@ -198,7 +202,7 @@ DELETE FROM vendors WHERE %s AND id = @vendor_id func (v *Vendors) LoadByOrganizationID( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, organizationID gid.GID, cursor *page.Cursor, ) error { @@ -250,7 +254,7 @@ WHERE func (v *Vendor) Update( ctx context.Context, conn pg.Conn, - scope *Scope, + scope Scoper, params UpdateVendorParams, ) error { q := ` diff --git a/pkg/probo/create_control.go b/pkg/probo/create_control.go index 9372cb9b0..c7dcdcbb3 100644 --- a/pkg/probo/create_control.go +++ b/pkg/probo/create_control.go @@ -81,11 +81,11 @@ func (s Service) CreateControl( return fmt.Errorf("cannot load framework %q: %w", req.FrameworkID, err) } - if err := control.Insert(ctx, conn); err != nil { + if err := control.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert control: %w", err) } - if err := controlStateTransition.Insert(ctx, conn); err != nil { + if err := controlStateTransition.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert control state transition: %w", err) } diff --git a/pkg/probo/create_evidence.go b/pkg/probo/create_evidence.go index 742391eac..536d2f48a 100644 --- a/pkg/probo/create_evidence.go +++ b/pkg/probo/create_evidence.go @@ -117,11 +117,11 @@ func (s Service) CreateEvidence( return fmt.Errorf("cannot load task %q: %w", req.TaskID, err) } - if err := evidence.Insert(ctx, conn); err != nil { + if err := evidence.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert evidence: %w", err) } - if err := evidenceStateTransition.Insert(ctx, conn); err != nil { + if err := evidenceStateTransition.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert evidence state transition: %w", err) } diff --git a/pkg/probo/create_framework.go b/pkg/probo/create_framework.go index 344202730..74fd5291a 100644 --- a/pkg/probo/create_framework.go +++ b/pkg/probo/create_framework.go @@ -56,7 +56,7 @@ func (s Service) CreateFramework( err = s.pg.WithConn( ctx, func(conn pg.Conn) error { - return framework.Insert(ctx, conn) + return framework.Insert(ctx, conn, s.scope) }, ) diff --git a/pkg/probo/create_organization.go b/pkg/probo/create_organization.go index ae062571a..572e6f12a 100644 --- a/pkg/probo/create_organization.go +++ b/pkg/probo/create_organization.go @@ -50,7 +50,7 @@ func (s Service) CreateOrganization( err = s.pg.WithConn( ctx, func(conn pg.Conn) error { - if err := organization.Insert(ctx, conn); err != nil { + if err := organization.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert control: %w", err) } diff --git a/pkg/probo/create_people.go b/pkg/probo/create_people.go index de435d7b2..b96a26a2d 100644 --- a/pkg/probo/create_people.go +++ b/pkg/probo/create_people.go @@ -63,7 +63,7 @@ func (s Service) CreatePeople( return fmt.Errorf("cannot load organization %q: %w", req.OrganizationID, err) } - if err := people.Insert(ctx, conn); err != nil { + if err := people.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert people: %w", err) } diff --git a/pkg/probo/create_task.go b/pkg/probo/create_task.go index 30e11281b..7f4b430f5 100644 --- a/pkg/probo/create_task.go +++ b/pkg/probo/create_task.go @@ -79,11 +79,11 @@ func (s Service) CreateTask( return fmt.Errorf("cannot laod control %q: %w", req.ControlID, err) } - if err := task.Insert(ctx, conn); err != nil { + if err := task.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert task: %w", err) } - if err := taskStateTransition.Insert(ctx, conn); err != nil { + if err := taskStateTransition.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert task state transition: %w", err) } diff --git a/pkg/probo/create_vendor.go b/pkg/probo/create_vendor.go index 096b1d9d4..2efb93b3f 100644 --- a/pkg/probo/create_vendor.go +++ b/pkg/probo/create_vendor.go @@ -73,7 +73,7 @@ func (s Service) CreateVendor( return fmt.Errorf("cannot load organization %q: %w", req.OrganizationID, err) } - if err := vendor.Insert(ctx, conn); err != nil { + if err := vendor.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert vendor: %w", err) } diff --git a/pkg/probo/policy_service.go b/pkg/probo/policy_service.go index 9ffd1433f..5b5e768de 100644 --- a/pkg/probo/policy_service.go +++ b/pkg/probo/policy_service.go @@ -86,7 +86,7 @@ func (s *PolicyService) Create( return fmt.Errorf("cannot load organization %q: %w", req.OrganizationID, err) } - if err := policy.Insert(ctx, conn); err != nil { + if err := policy.Insert(ctx, conn, s.svc.scope); err != nil { return fmt.Errorf("cannot insert policy: %w", err) } diff --git a/pkg/probo/service.go b/pkg/probo/service.go index 9fcb31e6a..94dc8d803 100644 --- a/pkg/probo/service.go +++ b/pkg/probo/service.go @@ -27,9 +27,9 @@ import ( type ( Service struct { pg *pg.Client - scope *coredata.Scope s3 *s3.Client bucket string + scope coredata.Scoper Policies *PolicyService } @@ -53,11 +53,24 @@ func NewService( svc := &Service{ pg: pgClient, s3: s3Client, - scope: coredata.NewScope(), // must be created from auth bucket: bucket, + scope: coredata.NewNoScope(), } svc.Policies = &PolicyService{svc: svc} return svc, nil } + +func (s *Service) WithTenant(tenantID string) *Service { + newSvc := &Service{ + pg: s.pg, + s3: s.s3, + bucket: s.bucket, + scope: coredata.NewScope(tenantID), + } + + newSvc.Policies = &PolicyService{svc: newSvc} + + return newSvc +} diff --git a/pkg/probo/update_task_state.go b/pkg/probo/update_task_state.go index 56670d15f..db31fabce 100644 --- a/pkg/probo/update_task_state.go +++ b/pkg/probo/update_task_state.go @@ -72,7 +72,7 @@ func (s Service) UpdateTaskState( err = s.pg.WithConn( ctx, func(conn pg.Conn) error { - if err := taskStateTransition.Insert(ctx, conn); err != nil { + if err := taskStateTransition.Insert(ctx, conn, s.scope); err != nil { return fmt.Errorf("cannot insert task state transition: %w", err) }