Replace implemented column with CMMI maturity level
Drop the boolean implemented/not-implemented state in favor of a mandatory CMMI maturity level enum (NONE, INITIAL, MANAGED, DEFINED, QUANTITATIVELY_MANAGED, OPTIMIZING) stored as a Postgres enum type. The migration backfills existing rows (NOT_IMPLEMENTED → NONE, IMPLEMENTED → INITIAL), makes the column NOT NULL, and drops the old implemented column and its enum type. - maturityLevel is required on CreateControlInput and non-nullable (!) in the GraphQL schema - CLI displays human-readable CMMI labels instead of raw enum tokens - SOA table and published document use a single Maturity column in place of the old Implemented + Maturity columns - Remove ControlImplementationState type and all implemented references across backend, frontend, CLI, MCP, n8n, and E2E tests Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
@@ -12,4 +12,25 @@
|
||||
-- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
-- PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
ALTER TABLE controls ADD COLUMN maturity_level TEXT;
|
||||
CREATE TYPE control_maturity_level AS ENUM (
|
||||
'NONE',
|
||||
'INITIAL',
|
||||
'MANAGED',
|
||||
'DEFINED',
|
||||
'QUANTITATIVELY_MANAGED',
|
||||
'OPTIMIZING'
|
||||
);
|
||||
|
||||
ALTER TABLE controls ADD COLUMN maturity_level control_maturity_level;
|
||||
|
||||
UPDATE controls SET maturity_level = CASE
|
||||
WHEN implemented = 'NOT_IMPLEMENTED' THEN 'NONE'::control_maturity_level
|
||||
ELSE 'INITIAL'::control_maturity_level
|
||||
END;
|
||||
|
||||
ALTER TABLE controls ALTER COLUMN maturity_level SET NOT NULL;
|
||||
ALTER TABLE controls ALTER COLUMN implemented DROP NOT NULL;
|
||||
|
||||
-- TODO: drop column and type in a future migration
|
||||
-- ALTER TABLE controls DROP COLUMN implemented;
|
||||
-- DROP TYPE control_implementation_state;
|
||||
|
||||
Reference in New Issue
Block a user