Update the migration scripts to alter table FK constraints and AM_API_DEFAULT_VERSION table by adding new column
Nobody has claimed this yet.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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