Add organization deletion
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
@@ -250,6 +250,25 @@ DELETE FROM documents WHERE %s AND id = @document_id
|
||||
return err
|
||||
}
|
||||
|
||||
func (p Document) DeleteByOrganizationID(
|
||||
ctx context.Context,
|
||||
conn pg.Conn,
|
||||
scope Scoper,
|
||||
organizationID gid.GID,
|
||||
) error {
|
||||
q := `
|
||||
DELETE FROM documents WHERE %s AND organization_id = @organization_id
|
||||
`
|
||||
|
||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||
|
||||
args := pgx.StrictNamedArgs{"organization_id": organizationID}
|
||||
maps.Copy(args, scope.SQLArguments())
|
||||
|
||||
_, err := conn.Exec(ctx, q, args)
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *Document) Update(
|
||||
ctx context.Context,
|
||||
conn pg.Conn,
|
||||
|
||||
45
pkg/coredata/migrations/20250807T141252Z.sql
Normal file
45
pkg/coredata/migrations/20250807T141252Z.sql
Normal file
@@ -0,0 +1,45 @@
|
||||
ALTER TABLE frameworks DROP CONSTRAINT IF EXISTS frameworks_organization_id_fkey;
|
||||
ALTER TABLE frameworks ADD CONSTRAINT frameworks_organization_id_fkey
|
||||
FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE peoples DROP CONSTRAINT IF EXISTS peoples_organization_id_fkey;
|
||||
ALTER TABLE peoples ADD CONSTRAINT peoples_organization_id_fkey
|
||||
FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE vendors DROP CONSTRAINT IF EXISTS vendors_organization_id_fkey;
|
||||
ALTER TABLE vendors ADD CONSTRAINT vendors_organization_id_fkey
|
||||
FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE documents DROP CONSTRAINT IF EXISTS policies_organization_id_fkey;
|
||||
ALTER TABLE documents DROP CONSTRAINT IF EXISTS documents_organization_id_fkey;
|
||||
ALTER TABLE documents ADD CONSTRAINT documents_organization_id_fkey
|
||||
FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE risks DROP CONSTRAINT IF EXISTS risks_organization_id_fkey;
|
||||
ALTER TABLE risks ADD CONSTRAINT risks_organization_id_fkey
|
||||
FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE connectors DROP CONSTRAINT IF EXISTS connectors_organization_id_fkey;
|
||||
ALTER TABLE connectors ADD CONSTRAINT connectors_organization_id_fkey
|
||||
FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE data DROP CONSTRAINT IF EXISTS data_organization_id_fkey;
|
||||
ALTER TABLE data ADD CONSTRAINT data_organization_id_fkey
|
||||
FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE users_organizations ADD CONSTRAINT users_organizations_organization_id_fkey
|
||||
FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE controls DROP CONSTRAINT IF EXISTS controls_framework_id_fkey;
|
||||
ALTER TABLE controls ADD CONSTRAINT controls_framework_id_fkey
|
||||
FOREIGN KEY (framework_id) REFERENCES frameworks(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE document_versions DROP CONSTRAINT IF EXISTS document_versions_document_id_fkey;
|
||||
ALTER TABLE document_versions ADD CONSTRAINT document_versions_document_id_fkey
|
||||
FOREIGN KEY (document_id) REFERENCES documents(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE document_versions DROP CONSTRAINT IF EXISTS document_versions_published_by_fkey;
|
||||
ALTER TABLE document_versions ADD CONSTRAINT document_versions_published_by_fkey
|
||||
FOREIGN KEY (published_by) REFERENCES peoples(id)
|
||||
ON DELETE SET NULL
|
||||
ON UPDATE CASCADE;
|
||||
@@ -156,3 +156,28 @@ WHERE
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *Organization) Delete(
|
||||
ctx context.Context,
|
||||
conn pg.Conn,
|
||||
scope Scoper,
|
||||
) error {
|
||||
q := `
|
||||
DELETE FROM organizations
|
||||
WHERE
|
||||
%s
|
||||
AND id = @id
|
||||
`
|
||||
|
||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||
|
||||
args := pgx.StrictNamedArgs{"id": o.ID}
|
||||
maps.Copy(args, scope.SQLArguments())
|
||||
|
||||
_, err := conn.Exec(ctx, q, args)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot delete organization: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user