From 7dfa3363c024d220cc5bf4937b4b48ec74720e98 Mon Sep 17 00:00:00 2001 From: gearnode Date: Sun, 2 Feb 2025 11:33:47 -0800 Subject: [PATCH] Style Signed-off-by: gearnode --- pkg/probo/get_control.go | 43 ++ pkg/probo/get_evidence.go | 43 ++ pkg/probo/get_framework.go | 43 ++ pkg/probo/get_organization.go | 48 +++ pkg/probo/get_people.go | 43 ++ pkg/probo/get_task.go | 43 ++ pkg/probo/get_vendor.go | 43 ++ pkg/probo/list_control_state_transitions.go | 51 +++ pkg/probo/list_control_tasks.go | 51 +++ pkg/probo/list_evidence_state_transitions.go | 51 +++ pkg/probo/list_framework_controls.go | 51 +++ pkg/probo/list_organization_frameworks.go | 51 +++ pkg/probo/list_organization_peoples.go | 51 +++ pkg/probo/list_organization_vendors.go | 51 +++ pkg/probo/list_task_evidences.go | 51 +++ pkg/probo/list_task_state_transitions.go | 51 +++ pkg/probo/probo.go | 390 ------------------- 17 files changed, 765 insertions(+), 390 deletions(-) create mode 100644 pkg/probo/get_control.go create mode 100644 pkg/probo/get_evidence.go create mode 100644 pkg/probo/get_framework.go create mode 100644 pkg/probo/get_organization.go create mode 100644 pkg/probo/get_people.go create mode 100644 pkg/probo/get_task.go create mode 100644 pkg/probo/get_vendor.go create mode 100644 pkg/probo/list_control_state_transitions.go create mode 100644 pkg/probo/list_control_tasks.go create mode 100644 pkg/probo/list_evidence_state_transitions.go create mode 100644 pkg/probo/list_framework_controls.go create mode 100644 pkg/probo/list_organization_frameworks.go create mode 100644 pkg/probo/list_organization_peoples.go create mode 100644 pkg/probo/list_organization_vendors.go create mode 100644 pkg/probo/list_task_evidences.go create mode 100644 pkg/probo/list_task_state_transitions.go diff --git a/pkg/probo/get_control.go b/pkg/probo/get_control.go new file mode 100644 index 000000000..50aa9ea5f --- /dev/null +++ b/pkg/probo/get_control.go @@ -0,0 +1,43 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) GetControl( + ctx context.Context, + controlID gid.GID, +) (*coredata.Control, error) { + control := &coredata.Control{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return control.LoadByID(ctx, conn, s.scope, controlID) + }, + ) + + if err != nil { + return nil, err + } + + return control, nil +} diff --git a/pkg/probo/get_evidence.go b/pkg/probo/get_evidence.go new file mode 100644 index 000000000..fb9f53574 --- /dev/null +++ b/pkg/probo/get_evidence.go @@ -0,0 +1,43 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) GetEvidence( + ctx context.Context, + evidenceID gid.GID, +) (*coredata.Evidence, error) { + evidence := &coredata.Evidence{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return evidence.LoadByID(ctx, conn, s.scope, evidenceID) + }, + ) + + if err != nil { + return nil, err + } + + return evidence, nil +} diff --git a/pkg/probo/get_framework.go b/pkg/probo/get_framework.go new file mode 100644 index 000000000..4dbd3d07c --- /dev/null +++ b/pkg/probo/get_framework.go @@ -0,0 +1,43 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) GetFramework( + ctx context.Context, + frameworkID gid.GID, +) (*coredata.Framework, error) { + framework := &coredata.Framework{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return framework.LoadByID(ctx, conn, s.scope, frameworkID) + }, + ) + + if err != nil { + return nil, err + } + + return framework, nil +} diff --git a/pkg/probo/get_organization.go b/pkg/probo/get_organization.go new file mode 100644 index 000000000..99247107a --- /dev/null +++ b/pkg/probo/get_organization.go @@ -0,0 +1,48 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) GetOrganization( + ctx context.Context, + organizationID gid.GID, +) (*coredata.Organization, error) { + organization := &coredata.Organization{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return organization.LoadByID( + ctx, + conn, + s.scope, + organizationID, + ) + }, + ) + + if err != nil { + return nil, err + } + + return organization, nil +} diff --git a/pkg/probo/get_people.go b/pkg/probo/get_people.go new file mode 100644 index 000000000..3c4080501 --- /dev/null +++ b/pkg/probo/get_people.go @@ -0,0 +1,43 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) GetPeople( + ctx context.Context, + peopleID gid.GID, +) (*coredata.People, error) { + people := &coredata.People{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return people.LoadByID(ctx, conn, s.scope, peopleID) + }, + ) + + if err != nil { + return nil, err + } + + return people, nil +} diff --git a/pkg/probo/get_task.go b/pkg/probo/get_task.go new file mode 100644 index 000000000..10184900f --- /dev/null +++ b/pkg/probo/get_task.go @@ -0,0 +1,43 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) GetTask( + ctx context.Context, + taskID gid.GID, +) (*coredata.Task, error) { + task := &coredata.Task{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return task.LoadByID(ctx, conn, s.scope, taskID) + }, + ) + + if err != nil { + return nil, err + } + + return task, nil +} diff --git a/pkg/probo/get_vendor.go b/pkg/probo/get_vendor.go new file mode 100644 index 000000000..50e6a28d4 --- /dev/null +++ b/pkg/probo/get_vendor.go @@ -0,0 +1,43 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) GetVendor( + ctx context.Context, + vendorID gid.GID, +) (*coredata.Vendor, error) { + vendor := &coredata.Vendor{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return vendor.LoadByID(ctx, conn, s.scope, vendorID) + }, + ) + + if err != nil { + return nil, err + } + + return vendor, nil +} diff --git a/pkg/probo/list_control_state_transitions.go b/pkg/probo/list_control_state_transitions.go new file mode 100644 index 000000000..c270348db --- /dev/null +++ b/pkg/probo/list_control_state_transitions.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListControlStateTransitions( + ctx context.Context, + controlID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.ControlStateTransition], error) { + var controlStateTransitions coredata.ControlStateTransitions + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return controlStateTransitions.LoadByControlID( + ctx, + conn, + s.scope, + controlID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(controlStateTransitions, cursor), nil +} diff --git a/pkg/probo/list_control_tasks.go b/pkg/probo/list_control_tasks.go new file mode 100644 index 000000000..73f3e2831 --- /dev/null +++ b/pkg/probo/list_control_tasks.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListControlTasks( + ctx context.Context, + controlID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.Task], error) { + var tasks coredata.Tasks + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return tasks.LoadByControlID( + ctx, + conn, + s.scope, + controlID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(tasks, cursor), nil +} diff --git a/pkg/probo/list_evidence_state_transitions.go b/pkg/probo/list_evidence_state_transitions.go new file mode 100644 index 000000000..cbfa8900a --- /dev/null +++ b/pkg/probo/list_evidence_state_transitions.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListEvidenceStateTransitions( + ctx context.Context, + evidenceID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.EvidenceStateTransition], error) { + var evidenceStateTransitions coredata.EvidenceStateTransitions + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return evidenceStateTransitions.LoadByEvidenceID( + ctx, + conn, + s.scope, + evidenceID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(evidenceStateTransitions, cursor), nil +} diff --git a/pkg/probo/list_framework_controls.go b/pkg/probo/list_framework_controls.go new file mode 100644 index 000000000..2ff4e7d02 --- /dev/null +++ b/pkg/probo/list_framework_controls.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListFrameworkControls( + ctx context.Context, + frameworkID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.Control], error) { + var controls coredata.Controls + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return controls.LoadByFrameworkID( + ctx, + conn, + s.scope, + frameworkID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(controls, cursor), nil +} diff --git a/pkg/probo/list_organization_frameworks.go b/pkg/probo/list_organization_frameworks.go new file mode 100644 index 000000000..cf60e834b --- /dev/null +++ b/pkg/probo/list_organization_frameworks.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListOrganizationFrameworks( + ctx context.Context, + organizationID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.Framework], error) { + var frameworks coredata.Frameworks + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return frameworks.LoadByOrganizationID( + ctx, + conn, + s.scope, + organizationID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(frameworks, cursor), nil +} diff --git a/pkg/probo/list_organization_peoples.go b/pkg/probo/list_organization_peoples.go new file mode 100644 index 000000000..14c3a7fc6 --- /dev/null +++ b/pkg/probo/list_organization_peoples.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListOrganizationPeoples( + ctx context.Context, + organizationID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.People], error) { + var peoples coredata.Peoples + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return peoples.LoadByOrganizationID( + ctx, + conn, + s.scope, + organizationID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(peoples, cursor), nil +} diff --git a/pkg/probo/list_organization_vendors.go b/pkg/probo/list_organization_vendors.go new file mode 100644 index 000000000..044151c05 --- /dev/null +++ b/pkg/probo/list_organization_vendors.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListOrganizationVendors( + ctx context.Context, + organizationID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.Vendor], error) { + var vendors coredata.Vendors + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return vendors.LoadByOrganizationID( + ctx, + conn, + s.scope, + organizationID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(vendors, cursor), nil +} diff --git a/pkg/probo/list_task_evidences.go b/pkg/probo/list_task_evidences.go new file mode 100644 index 000000000..f8018a59e --- /dev/null +++ b/pkg/probo/list_task_evidences.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListTaskEvidences( + ctx context.Context, + taskID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.Evidence], error) { + var evidences coredata.Evidences + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return evidences.LoadByTaskID( + ctx, + conn, + s.scope, + taskID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(evidences, cursor), nil +} diff --git a/pkg/probo/list_task_state_transitions.go b/pkg/probo/list_task_state_transitions.go new file mode 100644 index 000000000..a96b64e59 --- /dev/null +++ b/pkg/probo/list_task_state_transitions.go @@ -0,0 +1,51 @@ +// Copyright (c) 2025 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +package probo + +import ( + "context" + + "github.com/getprobo/probo/pkg/gid" + "github.com/getprobo/probo/pkg/page" + "github.com/getprobo/probo/pkg/probo/coredata" + "go.gearno.de/kit/pg" +) + +func (s Service) ListTaskStateTransitions( + ctx context.Context, + taskID gid.GID, + cursor *page.Cursor, +) (*page.Page[*coredata.TaskStateTransition], error) { + var taskStateTransitions coredata.TaskStateTransitions + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return taskStateTransitions.LoadByTaskID( + ctx, + conn, + s.scope, + taskID, + cursor, + ) + }, + ) + + if err != nil { + return nil, err + } + + return page.NewPage(taskStateTransitions, cursor), nil +} diff --git a/pkg/probo/probo.go b/pkg/probo/probo.go index a033ee23f..a58cd015f 100644 --- a/pkg/probo/probo.go +++ b/pkg/probo/probo.go @@ -18,8 +18,6 @@ import ( "context" "fmt" - "github.com/getprobo/probo/pkg/gid" - "github.com/getprobo/probo/pkg/page" "github.com/getprobo/probo/pkg/probo/coredata" "go.gearno.de/kit/migrator" "go.gearno.de/kit/pg" @@ -43,391 +41,3 @@ func NewService(ctx context.Context, pgClient *pg.Client) (*Service, error) { scope: coredata.NewScope(), // must be created from auth }, nil } - -func (s Service) GetOrganization( - ctx context.Context, - organizationID gid.GID, -) (*coredata.Organization, error) { - organization := &coredata.Organization{} - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return organization.LoadByID( - ctx, - conn, - s.scope, - organizationID, - ) - }, - ) - - if err != nil { - return nil, err - } - - return organization, nil -} - -func (s Service) GetPeople( - ctx context.Context, - peopleID gid.GID, -) (*coredata.People, error) { - people := &coredata.People{} - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return people.LoadByID(ctx, conn, s.scope, peopleID) - }, - ) - - if err != nil { - return nil, err - } - - return people, nil -} - -func (s Service) GetVendor( - ctx context.Context, - vendorID gid.GID, -) (*coredata.Vendor, error) { - vendor := &coredata.Vendor{} - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return vendor.LoadByID(ctx, conn, s.scope, vendorID) - }, - ) - - if err != nil { - return nil, err - } - - return vendor, nil -} - -func (s Service) GetFramework( - ctx context.Context, - frameworkID gid.GID, -) (*coredata.Framework, error) { - framework := &coredata.Framework{} - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return framework.LoadByID(ctx, conn, s.scope, frameworkID) - }, - ) - - if err != nil { - return nil, err - } - - return framework, nil -} - -func (s Service) GetControl( - ctx context.Context, - controlID gid.GID, -) (*coredata.Control, error) { - control := &coredata.Control{} - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return control.LoadByID(ctx, conn, s.scope, controlID) - }, - ) - - if err != nil { - return nil, err - } - - return control, nil -} - -func (s Service) GetTask( - ctx context.Context, - taskID gid.GID, -) (*coredata.Task, error) { - task := &coredata.Task{} - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return task.LoadByID(ctx, conn, s.scope, taskID) - }, - ) - - if err != nil { - return nil, err - } - - return task, nil -} - -func (s Service) GetEvidence( - ctx context.Context, - evidenceID gid.GID, -) (*coredata.Evidence, error) { - evidence := &coredata.Evidence{} - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return evidence.LoadByID(ctx, conn, s.scope, evidenceID) - }, - ) - - if err != nil { - return nil, err - } - - return evidence, nil -} - -func (s Service) ListOrganizationFrameworks( - ctx context.Context, - organizationID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.Framework], error) { - var frameworks coredata.Frameworks - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return frameworks.LoadByOrganizationID( - ctx, - conn, - s.scope, - organizationID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(frameworks, cursor), nil -} - -func (s Service) ListFrameworkControls( - ctx context.Context, - frameworkID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.Control], error) { - var controls coredata.Controls - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return controls.LoadByFrameworkID( - ctx, - conn, - s.scope, - frameworkID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(controls, cursor), nil -} - -func (s Service) ListControlTasks( - ctx context.Context, - controlID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.Task], error) { - var tasks coredata.Tasks - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return tasks.LoadByControlID( - ctx, - conn, - s.scope, - controlID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(tasks, cursor), nil -} - -func (s Service) ListControlStateTransitions( - ctx context.Context, - controlID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.ControlStateTransition], error) { - var controlStateTransitions coredata.ControlStateTransitions - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return controlStateTransitions.LoadByControlID( - ctx, - conn, - s.scope, - controlID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(controlStateTransitions, cursor), nil -} - -func (s Service) ListTaskEvidences( - ctx context.Context, - taskID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.Evidence], error) { - var evidences coredata.Evidences - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return evidences.LoadByTaskID( - ctx, - conn, - s.scope, - taskID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(evidences, cursor), nil -} - -func (s Service) ListOrganizationVendors( - ctx context.Context, - organizationID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.Vendor], error) { - var vendors coredata.Vendors - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return vendors.LoadByOrganizationID( - ctx, - conn, - s.scope, - organizationID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(vendors, cursor), nil -} - -func (s Service) ListOrganizationPeoples( - ctx context.Context, - organizationID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.People], error) { - var peoples coredata.Peoples - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return peoples.LoadByOrganizationID( - ctx, - conn, - s.scope, - organizationID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(peoples, cursor), nil -} - -func (s Service) ListTaskStateTransitions( - ctx context.Context, - taskID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.TaskStateTransition], error) { - var taskStateTransitions coredata.TaskStateTransitions - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return taskStateTransitions.LoadByTaskID( - ctx, - conn, - s.scope, - taskID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(taskStateTransitions, cursor), nil -} - -func (s Service) ListEvidenceStateTransitions( - ctx context.Context, - evidenceID gid.GID, - cursor *page.Cursor, -) (*page.Page[*coredata.EvidenceStateTransition], error) { - var evidenceStateTransitions coredata.EvidenceStateTransitions - - err := s.pg.WithConn( - ctx, - func(conn pg.Conn) error { - return evidenceStateTransitions.LoadByEvidenceID( - ctx, - conn, - s.scope, - evidenceID, - cursor, - ) - }, - ) - - if err != nil { - return nil, err - } - - return page.NewPage(evidenceStateTransitions, cursor), nil -}