dbnexus 0.1.3

An enterprise-grade database abstraction layer for Rust with built-in permission control and connection pooling
.PHONY: help test-all test-sqlite test-postgres test-mysql test-minimal test-microservice test-ultra-minimal docker-up docker-down docker-logs clippy-all validate-test-features

help: ## 显示帮助信息
	@echo "DBNexus 测试命令"
	@echo ""
	@echo "数据库相关:"
	@echo "  make docker-up       - 启动 PostgreSQL 和 MySQL 容器"
	@echo "  make docker-down     - 停止数据库容器"
	@echo "  make docker-logs     - 查看数据库日志"
	@echo ""
	@echo "数据库测试:"
	@echo "  make test-sqlite     - 运行 SQLite 测试"
	@echo "  make test-postgres   - 运行 PostgreSQL 测试"
	@echo "  make test-mysql      - 运行 MySQL 测试"
	@echo "  make test-all        - 运行所有数据库测试"
	@echo ""
	@echo "预设配置测试:"
	@echo "  make test-minimal    - 运行 minimal 预设测试"
	@echo "  make test-microservice - 运行 microservice 预设测试"
	@echo "  make test-ultra-minimal - 运行 ultra-minimal 预设测试"
	@echo ""
	@echo "验证:"
	@echo "  make validate-test-features - 验证测试特性配置"
	@echo ""
	@echo "代码质量:"
	@echo "  make clippy-sqlite   - 运行 SQLite 的 clippy 检查"
	@echo "  make clippy-postgres - 运行 PostgreSQL 的 clippy 检查"
	@echo "  make clippy-mysql    - 运行 MySQL 的 clippy 检查"
	@echo "  make clippy-all      - 运行所有数据库的 clippy 检查"

# 数据库相关
docker-up: ## 启动数据库容器
	@echo "启动数据库容器..."
	docker compose up -d
	@echo "等待数据库就绪..."
	@sleep 15
	@./scripts/test-databases.sh

docker-down: ## 停止数据库容器
	docker compose down

docker-logs: ## 查看数据库日志
	docker compose logs -f

# 测试相关
test-sqlite: ## 运行 SQLite 测试
	@echo "运行 SQLite 测试..."
	TEST_DB_TYPE=sqlite cargo test -p dbnexus --no-default-features --features "runtime-tokio-rustls,sqlite,permission,sql-parser,macros,config-yaml,config-toml,all-optional"

test-postgres: ## 运行 PostgreSQL 测试
	@echo "运行 PostgreSQL 测试..."
	TEST_DB_TYPE=postgres DATABASE_URL=postgres://dbnexus:dbnexus_password@localhost:15433/dbnexus_test cargo test -p dbnexus --no-default-features --features "runtime-tokio-rustls,postgres,permission,sql-parser,macros,config-yaml,config-toml,all-optional" -- --test-threads=1

test-mysql: ## 运行 MySQL 测试
	@echo "运行 MySQL 测试..."
	TEST_DB_TYPE=mysql DATABASE_URL=mysql://dbnexus:dbnexus_password@localhost:13308/dbnexus_test cargo test -p dbnexus --no-default-features --features "runtime-tokio-rustls,mysql,permission,sql-parser,macros,config-yaml,config-toml,all-optional" -- --test-threads=1

# 预设配置测试
test-minimal: ## 运行 minimal 预设测试
	@echo "运行 minimal 预设测试..."
	TEST_DB_TYPE=sqlite cargo test -p dbnexus --no-default-features --features "minimal" --test mod -- --test-threads=1

test-microservice: ## 运行 microservice 预设测试
	@echo "运行 microservice 预设测试..."
	TEST_DB_TYPE=postgres DATABASE_URL=postgres://dbnexus:dbnexus_password@localhost:15433/dbnexus_test cargo test -p dbnexus --no-default-features --features "microservice" --test mod -- --test-threads=1

test-ultra-minimal: ## 运行 ultra-minimal 预设测试
	@echo "运行 ultra-minimal 预设测试..."
	TEST_DB_TYPE=sqlite cargo test -p dbnexus --no-default-features --features "ultra-minimal" --test mod -- --test-threads=1

test-all: ## 运行所有数据库测试
	@echo "运行所有数据库测试..."
	@make test-sqlite
	@make test-postgres
	@make test-mysql

# 验证
validate-test-features: ## 验证测试特性配置
	@echo "验证测试特性配置..."
	@./scripts/validate-test-features.sh

# Clippy 检查
clippy-sqlite: ## 运行 SQLite 的 clippy 检查
	@echo "运行 SQLite clippy 检查..."
	cargo clippy -p dbnexus --no-default-features --features "runtime-tokio-rustls,sqlite,permission,sql-parser,macros,all-optional"

clippy-postgres: ## 运行 PostgreSQL 的 clippy 检查
	@echo "运行 PostgreSQL clippy 检查..."
	cargo clippy -p dbnexus --no-default-features --features "runtime-tokio-rustls,postgres,permission,sql-parser,macros,all-optional"

clippy-mysql: ## 运行 MySQL 的 clippy 检查
	@echo "运行 MySQL clippy 检查..."
	cargo clippy -p dbnexus --no-default-features --features "runtime-tokio-rustls,mysql,permission,sql-parser,macros,all-optional"

clippy-all: ## 运行所有数据库的 clippy 检查
	@echo "运行所有数据库的 clippy 检查..."
	@make clippy-sqlite
	@make clippy-postgres
	@make clippy-mysql