mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 05:21:57 +00:00
139 lines
4.5 KiB
Makefile
139 lines
4.5 KiB
Makefile
# ============================================================
|
|
# 🧠 MAKEFILE — DEV ENVIRONMENT (SSO-MBUGROUP)
|
|
# ============================================================
|
|
|
|
# --- Load environment ---
|
|
ifneq (,$(wildcard .env.dev))
|
|
include .env.dev
|
|
export
|
|
endif
|
|
|
|
# --- Configuration ---
|
|
COMPOSE ?= docker compose -f docker-compose.dev.yaml
|
|
NETWORK ?= lti-api_lti-network
|
|
APP_CONTAINER ?= dev-api-sso
|
|
DB_CONTAINER ?= dev-postgres-sso
|
|
REDIS_CONTAINER?= dev-redis-sso
|
|
MIGRATE_IMAGE ?= migrate/migrate:v4.15.2
|
|
MIGRATIONS_DIR := $(PWD)/internal/database/migrations
|
|
|
|
DB_USER ?= postgres
|
|
DB_PASSWORD ?= Postgres@Secure2025!
|
|
DB_NAME ?= db_lti_erp
|
|
DB_PORT ?= 5432
|
|
DB_HOST ?= dev-postgres-lti
|
|
|
|
DB_URL := postgres://$(DB_USER):$(DB_PASSWORD)@$(DB_HOST):$(DB_PORT)/$(DB_NAME)?sslmode=disable
|
|
|
|
# ============================================================
|
|
# 🧱 DATABASE MIGRATION COMMANDS
|
|
# ============================================================
|
|
|
|
migrate-up:
|
|
@echo "🧱 Running database migrations..."
|
|
@docker run --rm \
|
|
--network $(NETWORK) \
|
|
-v $(MIGRATIONS_DIR):/migrations \
|
|
$(MIGRATE_IMAGE) \
|
|
-path=/migrations/ -database "$(DB_URL)" up
|
|
|
|
migrate-down:
|
|
@echo "⬇️ Rolling back last migration..."
|
|
@docker run --rm \
|
|
--network $(NETWORK) \
|
|
-v $(MIGRATIONS_DIR):/migrations \
|
|
$(MIGRATE_IMAGE) \
|
|
-path=/migrations/ -database "$(DB_URL)" down 1
|
|
|
|
migrate-fresh:
|
|
@echo "🧱 Rebuilding database from scratch..."
|
|
@echo "🔹 Terminating active connections..."
|
|
@docker exec -i $(DB_CONTAINER) psql -U $(DB_USER) -d postgres -c \
|
|
"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='$(DB_NAME)' AND pid <> pg_backend_pid();" || true
|
|
@echo "🔹 Dropping and recreating database..."
|
|
@docker exec -i $(DB_CONTAINER) psql -U $(DB_USER) -d postgres -c "DROP DATABASE IF EXISTS $(DB_NAME);" || true
|
|
@docker exec -i $(DB_CONTAINER) psql -U $(DB_USER) -d postgres -c "CREATE DATABASE $(DB_NAME);" || true
|
|
@sleep 3
|
|
@make -f Makefile.dev migrate-up
|
|
@make -f Makefile.dev seed
|
|
@echo "✅ Fresh migration complete!"
|
|
|
|
# ==========================================
|
|
# 🧹 FIX DIRTY MIGRATION / FORCE VERSION
|
|
# ==========================================
|
|
|
|
# Pakai: make migrate-force v=20250825071938
|
|
migrate-force:
|
|
@if [ -z "$(v)" ]; then \
|
|
echo "❌ Error: versi migrasi belum ditentukan!"; \
|
|
echo "Gunakan contoh: make migrate-force v=20250825071938"; \
|
|
exit 1; \
|
|
fi; \
|
|
echo "⚙️ Forcing migration version $(v)..."; \
|
|
docker run --rm \
|
|
-v $(PWD)/internal/database/migrations:/migrations \
|
|
--network $(NETWORK) \
|
|
$(MIGRATE_IMAGE) \
|
|
-path=/migrations/ -database "$(DB_URL)" force $(v); \
|
|
echo "✅ Migration forced to version $(v)"
|
|
|
|
|
|
migrate-super:
|
|
@echo "🚀 Running migration as superuser..."
|
|
@docker cp internal/database/migrations/superuser_migrations.sql $(DB_CONTAINER):/tmp/superuser_migrations.sql
|
|
@docker exec -it $(DB_CONTAINER) psql -U $(DB_USER) -d $(DB_NAME) -f /tmp/superuser_migrations.sql
|
|
@echo "✅ Superuser migrations complete!"
|
|
|
|
# ============================================================
|
|
# 🌱 SEEDER
|
|
# ============================================================
|
|
|
|
seed:
|
|
@echo "🌱 Running Go-based seeder..."
|
|
@docker run --rm \
|
|
--network $(NETWORK) \
|
|
--env-file .env.dev \
|
|
-v $(PWD):/app \
|
|
-w /app \
|
|
golang:1.23-alpine \
|
|
sh -c "apk add --no-cache git && go run cmd/seed/main.go"
|
|
@echo "✅ Seeder completed successfully!"
|
|
|
|
# ============================================================
|
|
# 🐳 DOCKER MANAGEMENT
|
|
# ============================================================
|
|
|
|
up:
|
|
@echo "🚀 Starting all containers..."
|
|
@$(COMPOSE) up -d
|
|
|
|
down:
|
|
@echo "🧹 Stopping all containers..."
|
|
@$(COMPOSE) down --remove-orphans
|
|
|
|
restart:
|
|
@echo "♻️ Restarting application container..."
|
|
@docker restart $(APP_CONTAINER)
|
|
|
|
ps:
|
|
@$(COMPOSE) ps
|
|
|
|
logs:
|
|
@docker logs -f $(APP_CONTAINER)
|
|
|
|
psql:
|
|
@docker exec -it $(DB_CONTAINER) psql -U $(DB_USER) -d $(DB_NAME)
|
|
|
|
# ============================================================
|
|
# ⚙️ UTILITIES
|
|
# ============================================================
|
|
|
|
fix-db:
|
|
@echo "🔧 Checking if database exists..."
|
|
@docker exec -i $(DB_CONTAINER) psql -U $(DB_USER) -tc "SELECT 1 FROM pg_database WHERE datname='$(DB_NAME)';" | grep -q 1 \
|
|
&& echo "✅ Database exists: $(DB_NAME)" \
|
|
|| (echo "⚠️ Creating database..." && docker exec -i $(DB_CONTAINER) psql -U $(DB_USER) -c "CREATE DATABASE $(DB_NAME);")
|
|
|
|
clean:
|
|
@echo "🧹 Removing dangling images and cache..."
|
|
@docker builder prune -f
|