1
0

Merge branch 'dev-mysql-support' into master

- 新增 MySQL 数据库驱动支持,支持跨设备数据同步
- 新增 MySQL 专项测试能力(并发、约束、迁移)
- 重构迁移目录结构:migrations/sqlite 和 migrations/mysql
- 修复 statsRepo 并发竞态条件,使用 upsert 保证原子性
- Makefile 合并:保留完整命令体系 + 新增 MySQL 测试命令
This commit is contained in:
2026-04-23 16:31:29 +08:00
26 changed files with 1421 additions and 251 deletions

View File

@@ -2,6 +2,7 @@
backend-build backend-run backend-dev backend-test backend-test-unit backend-test-integration backend-test-coverage \
backend-lint backend-clean backend-deps backend-generate \
backend-db-up backend-db-down backend-db-status backend-db-create \
test-mysql-up test-mysql-down test-mysql test-mysql-quick \
frontend-build frontend-dev frontend-test frontend-test-watch frontend-test-coverage frontend-test-e2e frontend-lint frontend-clean \
desktop-build desktop-build-mac desktop-build-win desktop-build-linux \
desktop-dev desktop-package-mac desktop-package-win desktop-package-linux desktop-clean \
@@ -66,17 +67,53 @@ backend-generate:
cd backend && go generate ./...
backend-db-up:
cd backend && goose -dir migrations sqlite3 $(DB_PATH) up
@echo "Running database migration up..."
cd backend && goose -dir migrations/sqlite3 sqlite3 "$(DB_PATH)" up
backend-db-down:
cd backend && goose -dir migrations sqlite3 $(DB_PATH) down
@echo "Running database migration down..."
cd backend && goose -dir migrations/sqlite3 sqlite3 "$(DB_PATH)" down
backend-db-status:
cd backend && goose -dir migrations sqlite3 $(DB_PATH) status
@echo "Checking database migration status..."
cd backend && goose -dir migrations/sqlite3 sqlite3 "$(DB_PATH)" status
backend-db-create:
@read -p "Migration name: " name; \
cd backend && goose -dir migrations create $$name sql
cd backend && goose -dir migrations/sqlite create $$name sql; \
cd backend && goose -dir migrations/mysql create $$name sql
# ============================================
# MySQL 专项测试
# ============================================
test-mysql-up:
@echo "Starting MySQL test container..."
cd backend/tests/mysql && docker-compose up -d
@echo "Waiting for MySQL to be ready..."
@for i in $$(seq 1 30); do \
if docker exec nex-mysql-test mysqladmin ping -h localhost -u root -ptestpass --silent 2>/dev/null; then \
echo "MySQL is ready!"; \
exit 0; \
fi; \
echo "Waiting... ($$i/30)"; \
sleep 1; \
done; \
echo "MySQL failed to start"; \
exit 1
test-mysql-down:
@echo "Stopping MySQL test container..."
cd backend/tests/mysql && docker-compose down -v
test-mysql: test-mysql-up
@echo "Running MySQL tests..."
cd backend && go test -tags=mysql ./tests/mysql/... -v -count=1
$(MAKE) test-mysql-down
test-mysql-quick:
@echo "Running MySQL tests (without container management)..."
cd backend && go test -tags=mysql ./tests/mysql/... -v -count=1
# ============================================
# 前端