This commit is contained in:
Wowieee4
2026-05-02 02:43:47 +07:00
parent f8ca77eeb9
commit c8d9eefa74
14 changed files with 1207 additions and 209 deletions
@@ -1,17 +1,27 @@
# Server Port
# ===== SERVER =====
server.port=8080
# === KONEKSI H2 VIRTUAL (GAK PAKE PASSWORD) ===
spring.datasource.url=jdbc:h2:mem:walkguidedb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# ===== POSTGRESQL CONNECTION =====
spring.datasource.url=jdbc:postgresql://202.46.28.160:2002/uas_5803024001
spring.datasource.username=5803024001
spring.datasource.password=pw5803024001
spring.datasource.driver-class-name=org.postgresql.Driver
# Biar Spring Boot otomatis bikin tabel
spring.jpa.hibernate.ddl-auto=update
# ===== JPA / HIBERNATE =====
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
# JWT Configuration
jwt.secret=WalkGuideSecretKeyYangSangatPanjangMinimal256BitUntukKeamananWalkGuide
jwt.expiration=86400000
# ===== FLYWAY =====
spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration
spring.flyway.baseline-on-migrate=true
# ===== JWT =====
jwt.secret=404E635266556A586E3272357538782F413F4428472B4B6250645367566B5970
jwt.expiration=86400000
# ===== SWAGGER =====
springdoc.swagger-ui.path=/swagger-ui.html
springdoc.api-docs.path=/v3/api-docs
@@ -0,0 +1,15 @@
-- V1__create_users_table.sql
-- Membuat tabel users dengan relasi self-referencing guardian <-> user
CREATE TABLE IF NOT EXISTS users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role VARCHAR(50) NOT NULL,
connected_to BIGINT REFERENCES users(id) ON DELETE SET NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
CREATE INDEX IF NOT EXISTS idx_users_connected_to ON users(connected_to);
@@ -0,0 +1,22 @@
-- V2__seed_users.sql
-- Insert akun Guardian dan User default (password sudah di-hash BCrypt)
-- guardian123 → BCrypt hash
-- user123 → BCrypt hash
INSERT INTO users (email, password, role, connected_to)
VALUES (
'guardian@walkguide.com',
'$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6WKGK', -- guardian123
'ROLE_GUARDIAN',
NULL -- akan di-update setelah user dibuat
)
ON CONFLICT (email) DO NOTHING;
INSERT INTO users (email, password, role, connected_to)
VALUES (
'user@walkguide.com',
'$2a$10$TJ.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6WK', -- user123
'ROLE_USER',
NULL
)
ON CONFLICT (email) DO NOTHING;
@@ -0,0 +1,18 @@
-- V2__link_guardian_user.sql
-- Menghubungkan Guardian <-> User setelah DataSeeder Java insert kedua akun
-- Script ini dijalankan SETELAH aplikasi sudah seed data via DataSeeder.java
-- Jika DataSeeder yang handle relasi, migration ini bisa jadi no-op safety net
DO $$
DECLARE
v_guardian_id BIGINT;
v_user_id BIGINT;
BEGIN
SELECT id INTO v_guardian_id FROM users WHERE email = 'guardian@walkguide.com';
SELECT id INTO v_user_id FROM users WHERE email = 'user@walkguide.com';
IF v_guardian_id IS NOT NULL AND v_user_id IS NOT NULL THEN
UPDATE users SET connected_to = v_user_id WHERE id = v_guardian_id;
UPDATE users SET connected_to = v_guardian_id WHERE id = v_user_id;
END IF;
END $$;