95 lines
2.6 KiB
Makefile
95 lines
2.6 KiB
Makefile
include .env
|
|
.PHONY: test
|
|
test:
|
|
@docker compose up -d test
|
|
@docker compose exec test go test ./...
|
|
@docker compose stop test
|
|
|
|
.PHONY: coverage
|
|
coverage:
|
|
@mkdir -p coverage
|
|
@docker compose up -d test
|
|
@docker compose exec test sh -c "go test -coverprofile=coverage.out ./internal/... && go tool cover -func=coverage.out -o coverage/coverage.txt"
|
|
@docker cp $(shell docker ps -q -f "name=fortunebet-test-1"):/app/coverage ./ || true
|
|
@docker compose stop test
|
|
|
|
.PHONY: build
|
|
build:
|
|
@docker compose build app
|
|
|
|
.PHONY: run
|
|
run:
|
|
@docker compose up
|
|
|
|
.PHONY: stop
|
|
stop:
|
|
@docker compose down
|
|
|
|
.PHONY: air
|
|
air:
|
|
@echo "Running air locally (not in Docker)"
|
|
@air -c .air.toml
|
|
.PHONY: migrations/new
|
|
migrations/new:
|
|
@echo 'Creating migration files for DB_URL'
|
|
@migrate create -seq -ext=.sql -dir=./db/migrations $(name)
|
|
|
|
.PHONY: migrations/up
|
|
migrations/up:
|
|
@echo 'Running up migrations...'
|
|
@docker compose up migrate
|
|
|
|
.PHONY: postgres
|
|
postgres:
|
|
@echo 'Running postgres db...'
|
|
docker compose -f docker-compose.yml exec postgres psql -U root -d gh
|
|
.PHONY: backup
|
|
backup:
|
|
@mkdir -p backup
|
|
@docker exec -t fortunebet-backend-postgres-1 pg_dumpall -c -U root | gzip > backup/dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gz
|
|
|
|
restore:
|
|
@echo "Restoring latest backup..."
|
|
@latest_file=$$(ls -t backup/dump_*.sql.gz | head -n 1); \
|
|
echo "Restoring from $$latest_file"; \
|
|
gunzip -c $$latest_file | docker exec -i fortunebet-backend-postgres-1 psql -U root -d gh
|
|
restore_file:
|
|
@echo "Restoring latest backup..."
|
|
gunzip -c $(file) | docker exec -i fortunebet-backend-postgres-1 psql -U root -d gh
|
|
|
|
.PHONY: seed_data
|
|
seed_data:
|
|
|
|
@echo "Waiting for PostgreSQL to be ready..."
|
|
@until docker exec fortunebet-backend-postgres-1 pg_isready -U root -d gh; do \
|
|
echo "PostgreSQL is not ready yet..."; \
|
|
sleep 1; \
|
|
done
|
|
@for file in db/data/*.sql; do \
|
|
echo "Seeding $$file..."; \
|
|
cat $$file | docker exec -i fortunebet-backend-postgres-1 psql -U root -d gh; \
|
|
done
|
|
postgres_log:
|
|
docker logs fortunebet-backend-postgres-1
|
|
.PHONY: swagger
|
|
swagger:
|
|
@swag init -g cmd/main.go
|
|
.PHONY: db-up
|
|
logs:
|
|
@mkdir -p logs
|
|
db-up: | logs
|
|
@mkdir -p logs
|
|
@docker compose up -d postgres migrate mongo redis
|
|
@docker logs fortunebet-backend-postgres-1 > logs/postgres.log 2>&1 &
|
|
.PHONY: db-down
|
|
db-down:
|
|
@docker compose down -v
|
|
# @docker volume rm fortunebet-backend_postgres_data
|
|
.PHONY: sqlc-gen
|
|
sqlc-gen:
|
|
@sqlc generate
|
|
app_log:
|
|
@mkdir -p app_logs
|
|
export_logs: | app_log
|
|
@docker exec fortunebet-mongo mongoexport --db=logdb --collection=applogs -u root -p secret --authenticationDatabase=admin --out - > app_logs/log_`date +%Y-%m-%d"_"%H_%M_%S`.json
|