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