Files
base/Makefile
2026-04-10 18:25:21 +03:30

73 lines
1.9 KiB
Makefile

# Set GOPATH from `go env`
GOPATH:=$(shell go env GOPATH)
MIGRATIONS_DIR:=./database/migrations
SCHEMA_DIR:=./database/schema
DEV_URL:=docker://postgres/18-alpine/test
DATABASE_URL:=postgres://alinmeuser:password@localhost:5430/alinmedb?sslmode=disable
.PHONY: init test generate buf
init:
@echo "Initializing project..."
make buf
buf:
buf generate --verbose
# Run unit tests
test:
@echo "Running tests..."
go test ./... -v
# Generate code using go generate
generate:
@echo "Running go generate..."
go generate ./...
env:
cp -rf ./.env-example ./.env
lint:
@ test -e $(LINT) || $(LINT_DOWNLOAD)
@ $(LINT) --version
@ $(LINT) run
protoc:
@ protoc \
--go_out=api --go_opt=paths=source_relative \
--go-grpc_out=api --go-grpc_opt=paths=source_relative \
pb/*.proto
swagger:
@echo Starting swagger generating
swag init -g main.go
# Start Postgres in Docker (required before migrate-apply)
docker-up:
@echo "Starting Postgres in Docker..."
docker compose up -d pg
@echo "Waiting for Postgres to be ready..."
@until docker compose exec pg pg_isready -U alinmeuser -d alinmedb 2>/dev/null; do sleep 1; done
@echo "Postgres is ready."
# Apply migrations to local Postgres
migrate-apply:
@echo "Applying migrations..."
atlas migrate apply --dir "file://$(MIGRATIONS_DIR)" --url "$(DATABASE_URL)"
# Run Docker + migrations (use for local setup)
migrate-local: docker-up migrate-apply
@echo "Migrations applied successfully."
# Run mock OAuth server for local dev (no Docker - use when testing OAuth flow)
mock-oauth:
@echo "Starting mock OAuth server on http://localhost:9999"
go run ./cmd/mock-oauth
migrate-diff:
@echo "Generating migration diff..."
atlas migrate diff --dir "file://$(MIGRATIONS_DIR)" --to "file://$(SCHEMA_DIR)" --dev-url "$(DEV_URL)"
# Update atlas.sum with new migration checksums (run after adding migrations)
migrate-hash:
@echo "Updating migration checksums..."
atlas migrate hash --dir "file://$(MIGRATIONS_DIR)"