From 0e18bb92bd7d30e1e83c68edd40021efd4ae4952 Mon Sep 17 00:00:00 2001
From: debbyalmadea <almadeaputri@gmail.com>
Date: Wed, 27 Sep 2023 17:50:20 +0700
Subject: [PATCH] add: migration script on init

---
 .env.example                     |  3 ++-
 docker-compose.yml               |  7 +++++--
 src/migration/db.sql             | 28 ++++------------------------
 src/{migration => seed}/seed.sql |  0
 4 files changed, 11 insertions(+), 27 deletions(-)
 rename src/{migration => seed}/seed.sql (100%)

diff --git a/.env.example b/.env.example
index 95ccfc5..0892687 100644
--- a/.env.example
+++ b/.env.example
@@ -1,2 +1,3 @@
 POSTGRES_USER=
-POSTGRES_PASSWORD=
\ No newline at end of file
+POSTGRES_PASSWORD=
+POSTGRES_DB=
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index c6c25d1..e29b689 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -12,10 +12,13 @@ services:
     restart: always
     volumes:
       - "./db:/var/lib/postgresql/data"
+      - "./src/migration:/docker-entrypoint-initdb.d/"
     ports:
       - "5432:5432"
-    env_file:
-      - .env
+    environment:
+      POSTGRES_USER: ${POSTGRES_USER}
+      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+      POSTGRES_DB: ${POSTGRES_DB}
   adminer:
     image: adminer:latest
     restart: always
diff --git a/src/migration/db.sql b/src/migration/db.sql
index 498f690..c0503ef 100644
--- a/src/migration/db.sql
+++ b/src/migration/db.sql
@@ -51,7 +51,7 @@ CREATE TABLE IF NOT EXISTS catalogs (
     CHECK (category IN ('ANIME', 'DRAMA'))
 );
 
-CREATE OR REPLACE FUNCTION user_updated_at()
+CREATE OR REPLACE FUNCTION updated_at()
 RETURNS TRIGGER
 LANGUAGE PLPGSQL
 AS $$ 
@@ -62,20 +62,10 @@ END;
 $$;
 
 CREATE OR REPLACE TRIGGER t_user_updated_at BEFORE UPDATE 
-ON users FOR EACH ROW EXECUTE PROCEDURE user_updated_at();
-
-CREATE OR REPLACE FUNCTION catalog_updated_at()
-RETURNS TRIGGER
-LANGUAGE PLPGSQL
-AS $$ 
-BEGIN
-    NEW.updated_at = NOW();
-    return NEW;
-END;
-$$;
+ON users FOR EACH ROW EXECUTE PROCEDURE updated_at();
 
 CREATE OR REPLACE TRIGGER t_catalog_updated_at BEFORE UPDATE 
-ON catalogs FOR EACH ROW EXECUTE PROCEDURE catalog_updated_at();
+ON catalogs FOR EACH ROW EXECUTE PROCEDURE updated_at();
 
 DO $$
 BEGIN
@@ -101,18 +91,8 @@ CREATE TABLE IF NOT EXISTS watchlists (
     FOREIGN KEY (user_id) REFERENCES users(id)
 );
 
-CREATE OR REPLACE FUNCTION watchlist_updated_at()
-RETURNS TRIGGER
-LANGUAGE PLPGSQL
-AS $$ 
-BEGIN
-    NEW.updated_at = NOW();
-    return NEW;
-END;
-$$;
-
 CREATE OR REPLACE TRIGGER t_watchlist_updated_at BEFORE UPDATE 
-ON watchlists FOR EACH ROW EXECUTE PROCEDURE watchlist_updated_at();
+ON watchlists FOR EACH ROW EXECUTE PROCEDURE updated_at();
 
 CREATE TABLE IF NOT EXISTS watchlist_catalog (
     watchlist_id integer NOT NULL,
diff --git a/src/migration/seed.sql b/src/seed/seed.sql
similarity index 100%
rename from src/migration/seed.sql
rename to src/seed/seed.sql
-- 
GitLab