diff --git a/pkg/probo/coredata/gid/gid.go b/pkg/probo/coredata/gid/gid.go index 4d0a29813..e7c63cd43 100644 --- a/pkg/probo/coredata/gid/gid.go +++ b/pkg/probo/coredata/gid/gid.go @@ -50,11 +50,11 @@ func NewGID(et uint32) (GID, error) { binary.BigEndian.PutUint32(id[10:14], et) - return Nil, nil + return GID(id), nil } func (gid GID) Value() (driver.Value, error) { - return gid[:], nil + return gid.String(), nil } func (gid GID) EntityType() uint32 { @@ -64,19 +64,15 @@ func (gid GID) EntityType() uint32 { func (gid *GID) Scan(value interface{}) error { switch v := value.(type) { case string: - id, err := uuid.Parse(v) - if err != nil { - return err - } - *gid = GID(id) - case []byte: - id, err := uuid.ParseBytes(v) + enc := base64.RawURLEncoding + id, err := enc.DecodeString(v) if err != nil { return err } + *gid = GID(id) default: - return fmt.Errorf("invalid type for GID: expected string or []byte, got %T", value) + return fmt.Errorf("invalid type for GID: expected string, got %T", value) } return nil } diff --git a/pkg/probo/coredata/migrations/20250125T212400Z.sql b/pkg/probo/coredata/migrations/20250125T212400Z.sql new file mode 100644 index 000000000..8d252d1fc --- /dev/null +++ b/pkg/probo/coredata/migrations/20250125T212400Z.sql @@ -0,0 +1 @@ +ALTER TABLE organizations DROP COLUMN description; diff --git a/pkg/probo/coredata/migrations/20250125T214100Z.sql b/pkg/probo/coredata/migrations/20250125T214100Z.sql new file mode 100644 index 000000000..474b0021e --- /dev/null +++ b/pkg/probo/coredata/migrations/20250125T214100Z.sql @@ -0,0 +1,31 @@ +ALTER TABLE frameworks DROP CONSTRAINT IF EXISTS frameworks_organization_id_fkey; +ALTER TABLE controls DROP CONSTRAINT IF EXISTS controls_framework_id_fkey; +ALTER TABLE tasks DROP CONSTRAINT IF EXISTS tasks_control_id_fkey; + +ALTER TABLE organizations DROP CONSTRAINT organizations_pkey; +ALTER TABLE organizations ALTER COLUMN id TYPE TEXT USING id::text; +ALTER TABLE organizations ADD PRIMARY KEY (id); + +ALTER TABLE frameworks DROP CONSTRAINT frameworks_pkey; +ALTER TABLE frameworks ALTER COLUMN id TYPE TEXT USING id::text; +ALTER TABLE frameworks ADD PRIMARY KEY (id); +ALTER TABLE frameworks ALTER COLUMN organization_id TYPE TEXT USING organization_id::text; + +ALTER TABLE controls DROP CONSTRAINT controls_pkey; +ALTER TABLE controls ALTER COLUMN id TYPE TEXT USING id::text; +ALTER TABLE controls ADD PRIMARY KEY (id); +ALTER TABLE controls ALTER COLUMN framework_id TYPE TEXT USING framework_id::text; + +ALTER TABLE tasks DROP CONSTRAINT tasks_pkey; +ALTER TABLE tasks ALTER COLUMN id TYPE TEXT USING id::text; +ALTER TABLE tasks ADD PRIMARY KEY (id); +ALTER TABLE tasks ALTER COLUMN control_id TYPE TEXT USING control_id::text; + +ALTER TABLE frameworks ADD CONSTRAINT frameworks_organization_id_fkey + FOREIGN KEY (organization_id) REFERENCES organizations(id); + +ALTER TABLE controls ADD CONSTRAINT controls_framework_id_fkey + FOREIGN KEY (framework_id) REFERENCES frameworks(id); + +ALTER TABLE tasks ADD CONSTRAINT tasks_control_id_fkey + FOREIGN KEY (control_id) REFERENCES controls(id);