From 6fc558fd41c24bb8a57a943816cc1e662b1bce47 Mon Sep 17 00:00:00 2001 From: Addin Munawwar <moonawar@protonmail.com> Date: Tue, 31 Oct 2023 17:46:46 +0700 Subject: [PATCH] feat : services data duplication --- Makefile | 4 +- .../V3__services_data_duplication.sql | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/db/migration/V3__services_data_duplication.sql diff --git a/Makefile b/Makefile index 6fef2ea..edae0ec 100644 --- a/Makefile +++ b/Makefile @@ -22,10 +22,10 @@ create-db: mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS $(DB_NAME)" exit -migration: +migrate: mvn flyway:migrate -Dflyway.url=jdbc:mysql://localhost:3306/$(DB_NAME) -Dflyway.user=$(DB_USER) -Dflyway.password=$(DB_PASSWORD) -migration-repair: +migrate-repair: mvn flyway:repair -Dflyway.url=jdbc:mysql://localhost:3306/$(DB_NAME) -Dflyway.user=$(DB_USER) -Dflyway.password=$(DB_PASSWORD) # Phony targets to prevent conflicts with filenames diff --git a/src/main/resources/db/migration/V3__services_data_duplication.sql b/src/main/resources/db/migration/V3__services_data_duplication.sql new file mode 100644 index 0000000..be6e134 --- /dev/null +++ b/src/main/resources/db/migration/V3__services_data_duplication.sql @@ -0,0 +1,40 @@ +BEGIN; + +-- This migration is made for synchronization purpose with PHP Service + +CREATE TABLE IF NOT EXISTS `user` ( + `username` varchar(32) PRIMARY KEY +); + +CREATE TABLE IF NOT EXISTS `book` ( + `book_id` integer PRIMARY KEY +); + +CREATE TABLE IF NOT EXISTS `author` ( + `author_id` integer PRIMARY KEY +); + +ALTER TABLE `book_collection` + ADD FOREIGN KEY (`created_by`) REFERENCES `user` (`username`) + ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `in_collection` + ADD FOREIGN KEY (`book_id`) REFERENCES `book` (`book_id`) + ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `collection_subscription` + ADD FOREIGN KEY (`username`) REFERENCES `user` (`username`) + ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `author_subscription` + ADD FOREIGN KEY (`author_id`) REFERENCES `author` (`author_id`) + ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `author_subscription` + ADD FOREIGN KEY (`username`) REFERENCES `user` (`username`) + ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `user_notification` + ADD FOREIGN KEY (`username`) REFERENCES `user` (`username`) + ON DELETE CASCADE ON UPDATE CASCADE;; + +COMMIT; \ No newline at end of file -- GitLab