diff --git a/pkg/probo/coredata/framework.go b/pkg/probo/coredata/framework.go index f6df4c009..a4b21c0ed 100644 --- a/pkg/probo/coredata/framework.go +++ b/pkg/probo/coredata/framework.go @@ -165,7 +165,7 @@ VALUES ( @content_ref, @created_at, @updated_at -) +); ` args := pgx.NamedArgs{ @@ -180,3 +180,25 @@ VALUES ( _, err := conn.Exec(ctx, q, args) return err } + +func (f Framework) Delete( + ctx context.Context, + conn pg.Conn, + scope *Scope, +) error { + q := ` +DELETE +FROM + frameworks +WHERE + %s + AND id = @framework_id; +` + + args := pgx.NamedArgs{"framework_id": f.ID} + maps.Copy(args, scope.SQLArguments()) + q = fmt.Sprintf(q, scope.SQLFragment()) + + _, err := conn.Exec(ctx, q, args) + return err +} diff --git a/pkg/probo/delete_framework.go b/pkg/probo/delete_framework.go new file mode 100644 index 000000000..3e446b680 --- /dev/null +++ b/pkg/probo/delete_framework.go @@ -0,0 +1,37 @@ +// 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) DeleteFramework( + ctx context.Context, + frameworkID gid.GID, +) error { + framework := &coredata.Framework{ID: frameworkID} + + return s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return framework.Delete(ctx, conn, s.scope) + }, + ) +}