.PHONY: build test clean docker-build run-cluster stop-cluster

# Build binaries
build:
	@echo "Building dbnode..."
	go build -o bin/dbnode ./cmd/dbnode
	@echo "Building dbclient..."
	go build -o bin/dbclient ./cmd/dbclient
	@echo "Build complete!"

# Run tests
test:
	go test -v ./...

# Run benchmarks
benchmark:
	go test -bench=. -benchmem ./benchmarks/...

# Clean build artifacts
clean:
	rm -rf bin/ data/ /tmp/test-*

# Build Docker image
docker-build:
	docker build -t distributed-db:latest .

# Start 3-node cluster with docker-compose
run-cluster:
	docker-compose up -d

# Stop cluster
stop-cluster:
	docker-compose down -v

# View logs
logs:
	docker-compose logs -f

# Format code
fmt:
	go fmt ./...

# Run linter
lint:
	golangci-lint run

# Generate protobuf files
proto:
	protoc --go_out=. --go-grpc_out=. proto/*.proto
