wso2 / wso2/docs-apim

Update the migration scripts to alter table FK constraints and AM_API_DEFAULT_VERSION table by adding new column

Open
#5,240 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

API-M-4.1.0 component/migration Docs/Waiting on SME Priority/High Type/Improvement
Dominant language
CSS
Stars
99
Forks
708
Avg merge
1d 7h
Merged PRs (30d)
22

Description

Description:
With [1], one new columns has been added to AM_API_DEFAULT_VERSION table and with [2], added missing FK constraint to tables. Migration scripts should be updated in the master branch with the following SQL statements for each DB types

[1] https://github.com/wso2-extensions/apim-migration-resources/pull/114/files
[2] https://github.com/wso2/carbon-apimgt/commit/8fe8f92d750fd1790cf1de86c57d533d964d6871

The below statements are for MySQL

create index IDX_AAI_ORG on AM_API (ORGANIZATION);
ALTER TABLE AM_API_DEFAULT_VERSION  ADD COLUMN ORGANIZATION VARCHAR(100) NULL;
ALTER TABLE AM_API_REVISION_METADATA MODIFY COLUMN REVISION_UUID VARCHAR(255);

ALTER TABLE AM_GW_API_DEPLOYMENTS DROP FOREIGN KEY AM_GW_API_DEPLOYMENTS_ibfk_1 ;
ALTER TABLE AM_GW_API_DEPLOYMENTS ADD CONSTRAINT AM_GW_API_DEPLOYMENTS_ibfk_1 FOREIGN KEY (API_ID) REFERENCES AM_GW_PUBLISHED_API_DETAILS(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_GW_API_ARTIFACTS DROP FOREIGN KEY AM_GW_API_ARTIFACTS_ibfk_1;
ALTER TABLE AM_GW_API_ARTIFACTS ADD CONSTRAINT AM_GW_API_ARTIFACTS_ibfk_1 FOREIGN KEY (API_ID) REFERENCES AM_GW_PUBLISHED_API_DETAILS(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_API_RATINGS DROP FOREIGN KEY AM_API_RATINGS_ibfk_1;
ALTER TABLE AM_API_RATINGS ADD CONSTRAINT AM_API_RATINGS_ibfk_1 FOREIGN KEY(API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_API_COMMENTS DROP FOREIGN KEY AM_API_COMMENTS_ibfk_1;
ALTER TABLE AM_API_COMMENTS ADD CONSTRAINT AM_API_COMMENTS_ibfk_1 FOREIGN KEY(API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_API_LC_EVENT DROP FOREIGN KEY AM_API_LC_EVENT_ibfk_1;
ALTER TABLE AM_API_LC_EVENT ADD CONSTRAINT AM_API_LC_EVENT_ibfk_1 FOREIGN KEY(API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_SUBSCRIPTION DROP FOREIGN KEY AM_SUBSCRIPTION_ibfk_2;
ALTER TABLE AM_SUBSCRIPTION ADD CONSTRAINT AM_SUBSCRIPTION_ibfk_2 FOREIGN KEY(API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_SECURITY_AUDIT_UUID_MAPPING DROP FOREIGN KEY AM_SECURITY_AUDIT_UUID_MAPPING_ibfk_1;
ALTER TABLE AM_SECURITY_AUDIT_UUID_MAPPING ADD CONSTRAINT AM_SECURITY_AUDIT_UUID_MAPPING_ibfk_1 FOREIGN KEY (API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_API_REVISION_METADATA ADD FOREIGN KEY(REVISION_UUID) REFERENCES AM_REVISION(REVISION_UUID) ON DELETE CASCADE;

ALTER TABLE AM_REVISION ADD FOREIGN KEY (API_UUID) REFERENCES AM_API(API_UUID) ON DELETE CASCADE;

ALTER TABLE AM_APPLICATION_REGISTRATION DROP FOREIGN KEY AM_APPLICATION_REGISTRATION_ibfk_2 ;
ALTER TABLE AM_APPLICATION_REGISTRATION ADD CONSTRAINT AM_APPLICATION_REGISTRATION_ibfk_2 FOREIGN KEY (APP_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_APPLICATION_KEY_MAPPING DROP FOREIGN KEY AM_APPLICATION_KEY_MAPPING_ibfk_1 ;
ALTER TABLE AM_APPLICATION_KEY_MAPPING ADD CONSTRAINT AM_APPLICATION_KEY_MAPPING_ibfk_1 FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_SUBSCRIPTION DROP FOREIGN KEY AM_SUBSCRIPTION_ibfk_1 ;
ALTER TABLE AM_SUBSCRIPTION ADD CONSTRAINT AM_SUBSCRIPTION_ibfk_1 FOREIGN KEY (APPLICATION_ID) REFERENCES AM_APPLICATION(APPLICATION_ID) ON UPDATE CASCADE ON DELETE CASCADE;

The below statements are for MSSQL

create index IDX_AAI_ORG on AM_API (ORGANIZATION);
ALTER TABLE AM_API_DEFAULT_VERSION  ADD ORGANIZATION VARCHAR(100) NULL;

ALTER TABLE AM_API_REVISION_METADATA ALTER COLUMN REVISION_UUID VARCHAR(255);

-- Remove Constraints

DECLARE @am_gw_api  VARCHAR(500);
SET @am_gw_api = (SELECT name FROM sys.foreign_keys WHERE parent_object_id = object_id('AM_GW_API_DEPLOYMENTS') AND referenced_object_id = object_id('AM_GW_PUBLISHED_API_DETAILS'));
EXEC ('ALTER TABLE AM_GW_API_DEPLOYMENTS DROP CONSTRAINT ' + @am_gw_api);

DECLARE @am_gw_arti  VARCHAR(500);
SET @am_gw_arti = (SELECT name FROM sys.foreign_keys WHERE parent_object_id = object_id('AM_GW_API_ARTIFACTS') AND referenced_object_id = object_id('AM_GW_PUBLISHED_API_DETAILS'));
EXEC ('ALTER TABLE AM_GW_API_ARTIFACTS DROP CONSTRAINT ' + @am_gw_arti);

DECLARE @am_api_ratings  VARCHAR(500);
SET @am_api_ratings = (SELECT name FROM sys.foreign_keys WHERE parent_object_id = object_id('AM_API_RATINGS') AND referenced_object_id = object_id('AM_API'));
EXEC ('ALTER TABLE AM_API_RATINGS DROP CONSTRAINT ' + @am_api_ratings);

DECLARE @am_api_comments  VARCHAR(500);
SET @am_api_comments = (SELECT name FROM sys.foreign_keys WHERE parent_object_id = object_id('AM_API_COMMENTS') AND referenced_object_id = object_id('AM_API'));
EXEC ('ALTER TABLE AM_API_COMMENTS DROP CONSTRAINT ' + @am_api_comments);

DECLARE @am_api_lc  VARCHAR(500);
SET @am_api_lc = (SELECT name FROM sys.foreign_keys WHERE parent_object_id = object_id('AM_API_LC_EVENT') AND referenced_object_id = object_id('AM_API'));
EXEC ('ALTER TABLE AM_API_LC_EVENT DROP CONSTRAINT ' + @am_api_lc);

DECLARE @am_sub_1  VARCHAR(500);
SET @am_sub_1 = (SELECT name FROM sys.foreign_keys WHERE parent_object_id = object_id('AM_SUBSCRIPTION') AND referenced_object_id = object_id('AM_API'));
EXEC ('ALTER TABLE AM_SUBSCRIPTION DROP CONSTRAINT ' + @am_sub_1);

DECLARE @am_sec_audit  VARCHAR(500);
SET @am_sec_audit = (SELECT name FROM sys.foreign_keys WHERE parent_object_id = object_id('AM_SECURITY_AUDIT_UUID_MAPPING') AND referenced_object_id = object_id('AM_API'));
EXEC ('ALTER TABLE AM_SECURITY_AUDIT_UUID_MAPPING DROP CONSTRAINT ' + @am_sec_audit);

ALTER TABLE AM_GW_API_DEPLOYMENTS ADD FOREIGN KEY (API_ID) REFERENCES AM_GW_PUBLISHED_API_DETAILS(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_GW_API_ARTIFACTS ADD FOREIGN KEY (API_ID) REFERENCES AM_GW_PUBLISHED_API_DETAILS(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_API_RATINGS ADD FOREIGN KEY(API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_API_COMMENTS ADD FOREIGN KEY(API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_API_LC_EVENT ADD FOREIGN KEY(API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_SUBSCRIPTION ADD FOREIGN KEY(API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_SECURITY_AUDIT_UUID_MAPPING ADD FOREIGN KEY (API_ID) REFERENCES AM_API(API_ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE AM_API_REVISION_METADATA ADD FOREIGN KEY(REVISION_UUID) REFERENCES AM_REVISION(REVISION_UUID) ON DELETE CASCADE;

ALTER TABLE AM_REVISION ADD FOREIGN KEY (API_UUID) REFERENCES AM_API(API_UUID) ON DELETE CASCADE;

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the master-branch migration scripts for MySQL and MSSQL, then compare them with PR 114 and commit 8fe8f92d750fd1790cf1de86c57d533d964d6871. Update the relevant scripts with the listed column, index, and foreign-key changes for each database type, and verify that the migration completes successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
sql
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.