.PHONY: help \ migrate/new migrate/up migrate/down migrate/status \ clickhouse/up clickhouse/down \ run/api run/workers run/console \ build/api build/workers \ test test/integration \ lint fmt tidy # --------------------------------------------------------------------------- # Configuration # --------------------------------------------------------------------------- POSTGRES_DSN ?= postgres://cdp:cdp@localhost:5432/cdp?sslmode=disable CLICKHOUSE_DSN ?= clickhouse://default:@localhost:9000/cdp MIGRATE_BIN ?= migrate MIGRATIONS_DIR := infra/migrations CLICKHOUSE_DIR := infra/clickhouse # --------------------------------------------------------------------------- # Help # --------------------------------------------------------------------------- help: @echo "CDP Analytics (data-layer) - common tasks" @echo "" @echo " make migrate/new name=X create new PG migration" @echo " make migrate/up apply PG migrations" @echo " make migrate/down rollback one" @echo " make migrate/status migration status" @echo "" @echo " make clickhouse/up apply analytics ClickHouse DDL" @echo " make clickhouse/down drop analytics ClickHouse schema" @echo "" @echo " make run/api run analytics API (port 4000)" @echo " make run/workers run analytics worker (port 4001)" @echo " make run/console run analytics console (port 4002)" @echo "" @echo " make test unit tests" @echo " make test/integration integration tests (testcontainers)" @echo "" @echo " Shared infra (postgres, redis, clickhouse) lives in ../ingestion." @echo " Run 'make up' from there first." # --------------------------------------------------------------------------- # PostgreSQL migrations # --------------------------------------------------------------------------- migrate/new: @if [ -z "$(name)" ]; then echo "usage: make migrate/new name=add_xxx"; exit 1; fi $(MIGRATE_BIN) create -ext sql -dir $(MIGRATIONS_DIR) -seq $(name) migrate/up: $(MIGRATE_BIN) -path $(MIGRATIONS_DIR) -database "$(POSTGRES_DSN)" up migrate/down: $(MIGRATE_BIN) -path $(MIGRATIONS_DIR) -database "$(POSTGRES_DSN)" down 1 migrate/status: $(MIGRATE_BIN) -path $(MIGRATIONS_DIR) -database "$(POSTGRES_DSN)" version # --------------------------------------------------------------------------- # ClickHouse DDL # --------------------------------------------------------------------------- clickhouse/up: @bash infra/scripts/clickhouse_apply.sh up clickhouse/down: @bash infra/scripts/clickhouse_apply.sh down # --------------------------------------------------------------------------- # Run services # --------------------------------------------------------------------------- run/api: cd api && go run ./cmd/server run/workers: cd workers && go run ./cmd/worker run/console: cd console && npm run dev # --------------------------------------------------------------------------- # Build # --------------------------------------------------------------------------- build/api: cd api && CGO_ENABLED=0 go build -o ../bin/api ./cmd/server build/workers: cd workers && CGO_ENABLED=0 go build -o ../bin/worker ./cmd/worker # --------------------------------------------------------------------------- # Tests # --------------------------------------------------------------------------- test: cd api && go test ./... -count=1 cd workers && go test ./... -count=1 test/integration: cd api && go test -tags=integration ./... -count=1 -timeout=5m cd workers && go test -tags=integration ./... -count=1 -timeout=5m # --------------------------------------------------------------------------- # Code quality # --------------------------------------------------------------------------- lint: cd api && golangci-lint run ./... cd workers && golangci-lint run ./... fmt: cd api && gofmt -w . cd workers && gofmt -w . tidy: cd api && go mod tidy cd workers && go mod tidy