DEPS=$(shell find . -name "*.go") go.mod go.sum

.PHONY: build serve migrate-up migrate-down migrate-status clean test
.PHONY: backend-lint frontend-lint lint frontend-build docs

build: server frontend-build

build-linux: docs frontend-build
	GOARCH=arm64 GOOS=linux go build -o server ./cmd/server

docs: $(DEPS)
	swag init -g cmd/server/main.go -o docs

server: docs $(DEPS)
	go build -o server ./cmd/server

lint: backend-lint frontend-lint

test:
	go test -count=1 ./...

migrate-up:
	@[ -z "$$DATABASE_URL" ] && echo "Please set DATABASE_URL" || :
	tern --config db/tern.conf --migrations db/migrations migrate

migrate-down:
	@[ -z "$$DATABASE_URL" ] && echo "Please set DATABASE_URL" || :
	tern --config db/tern.conf --migrations db/migrations migrate -d -1

migrate-status:
	@[ -z "$$DATABASE_URL" ] && echo "Please set DATABASE_URL" || :
	tern --config db/tern.conf --migrations db/migrations status

frontend-build:
	cd frontend && npm install && npm run build

backend-lint:
	golangci-lint run ./...

frontend-lint:
	cd frontend && npm run lint

serve:
	go run ./cmd/server

clean:
	@rm server
	@rm docs/docs.go docs/swagger.json docs/swagger.yaml
