فهرست منبع

📦 chore(deps): 迁移数据库从MySQL到PostgreSQL

- 移除mysql2依赖包,添加pg依赖包
- 更新环境变量示例文件,修改数据库连接参数
- 调整Docker Compose配置,使用PostgreSQL服务

📝 docs: 更新文档中的数据库相关内容

- 修改架构文档中的技术栈说明,将MySQL替换为PostgreSQL
- 更新开发指南中的数据库配置步骤和命令
- 调整测试文档中的数据库服务配置
- 修改PRD和需求文档中的数据库技术栈描述

🔧 chore(config): 更新数据库连接配置

- 修改.env.example和.env.test.example中的数据库连接URL
- 更新数据库配置参数名,如DB_NAME改为DB_DATABASE
- 调整开发文档中的数据库配置说明
yourname 2 ماه پیش
والد
کامیت
87feb89db5

+ 3 - 3
.env.example

@@ -10,11 +10,11 @@ PORT=8080
 NODE_ENV=development
 BASE=/
 
-# 数据库配置
+# 数据库配置 (PostgreSQL)
 DB_HOST=localhost
 DB_PORT=5432
-DB_NAME=d8dai
-DB_USER=postgres
+DB_DATABASE=d8dai
+DB_USERNAME=postgres
 DB_PASSWORD=your_password_here
 
 # Redis配置

+ 1 - 1
.env.test.example

@@ -1,7 +1,7 @@
 # Test Environment Configuration
 NODE_ENV=test
 
-# Database
+# Database (PostgreSQL)
 DATABASE_URL=postgresql://postgres:test_password@localhost:5432/test_d8dai
 
 # Server

+ 3 - 3
docs/architecture.md

@@ -22,7 +22,7 @@
 
 ### 当前项目状态
 - **主要用途**: 现代化的全栈Web应用启动模板,专注于开发者体验
-- **技术栈总结**: Node.js 20.18.3 + Hono 4.8.5 + React 19.1.0 + TypeORM 0.3.25 + MySQL 8.0.36
+- **技术栈总结**: Node.js 20.18.3 + Hono 4.8.5 + React 19.1.0 + TypeORM 0.3.25 + PostgreSQL 15
 - **架构风格**: 分层架构,前后端分离但统一仓库管理
 - **部署方式**: Docker Compose本地开发,Node.js生产部署
 
@@ -41,7 +41,7 @@
 
 ### 识别出的约束
 - 必须保持与现有shadcn设计系统的兼容性
-- 需要支持MySQL关系型数据库
+- 需要支持PostgreSQL关系型数据库
 - 前端构建基于Vite,后端基于Hono
 - 部署环境支持Docker容器化
 - 现有代码中存在一些`any`类型需要修复
@@ -74,7 +74,7 @@
 | 框架 | Hono | 4.8.5 | Web框架和API路由 | RPC类型安全 |
 | 前端框架 | React | 19.1.0 | 用户界面构建 | 最新版本 |
 | 构建工具 | Vite | 7.0.0 | 开发服务器和构建 | 热重载支持 |
-| 数据库 | MySQL | 8.0.36 | 数据持久化存储 | 通过TypeORM |
+| 数据库 | PostgreSQL | 15 | 数据持久化存储 | 通过TypeORM |
 | ORM | TypeORM | 0.3.25 | 数据库操作抽象 | 实体管理 |
 | 样式 | Tailwind CSS | 4.1.11 | 原子化CSS框架 | 设计一致性 |
 | 状态管理 | React Query | 5.83.0 | 服务端状态管理 | 数据同步 |

+ 2 - 2
docs/architecture/existing-project-analysis.md

@@ -2,7 +2,7 @@
 
 ## 当前项目状态
 - **主要用途**: 现代化的全栈Web应用启动模板,专注于开发者体验
-- **技术栈总结**: Node.js 20.18.3 + Hono 4.8.5 + React 19.1.0 + TypeORM 0.3.25 + MySQL 8.0.36
+- **技术栈总结**: Node.js 20.18.3 + Hono 4.8.5 + React 19.1.0 + TypeORM 0.3.25 + PostgreSQL 15
 - **架构风格**: 分层架构,前后端分离但统一仓库管理
 - **部署方式**: Docker Compose本地开发,Node.js生产部署
 
@@ -21,7 +21,7 @@
 
 ## 识别出的约束
 - 必须保持与现有shadcn设计系统的兼容性
-- 需要支持MySQL关系型数据库
+- 需要支持PostgreSQL关系型数据库
 - 前端构建基于Vite,后端基于Hono
 - 部署环境支持Docker容器化
 - 现有代码中存在一些`any`类型需要修复

+ 1 - 1
docs/architecture/tech-stack.md

@@ -7,7 +7,7 @@
 | 框架 | Hono | 4.8.5 | Web框架和API路由 | RPC类型安全 |
 | 前端框架 | React | 19.1.0 | 用户界面构建 | 最新版本 |
 | 构建工具 | Vite | 7.0.0 | 开发服务器和构建 | 热重载支持 |
-| 数据库 | MySQL | 8.0.36 | 数据持久化存储 | 通过TypeORM |
+| 数据库 | PostgreSQL | 15 | 数据持久化存储 | 通过TypeORM |
 | ORM | TypeORM | 0.3.25 | 数据库操作抽象 | 实体管理 |
 | 样式 | Tailwind CSS | 4.1.11 | 原子化CSS框架 | 设计一致性 |
 | 状态管理 | React Query | 5.83.0 | 服务端状态管理 | 数据同步 |

+ 2 - 2
docs/brief.md

@@ -157,7 +157,7 @@
 ### Technology Preferences
 - **Frontend:** React + TypeScript,shadcn/ui组件库,Vite构建工具
 - **Backend:** Node.js + TypeScript,Express/NestJS框架
-- **Database:** TypeORM/Prisma ORM,MySQL/PostgreSQL,Redis缓存
+- **Database:** TypeORM/Prisma ORM,PostgreSQL,Redis缓存
 - **Hosting/Infrastructure:** Docker容器化,Kubernetes就绪,云原生架构
 
 ### Architecture Considerations
@@ -172,7 +172,7 @@
 - **Budget:** 基于现有云端开发环境,无额外基础设施成本
 - **Timeline:** 3个月实现核心MVP,6个月达到生产就绪
 - **Resources:** 现有开发团队,基于多八多云端容器环境
-- **Technical:** 必须兼容Node.js 20.18.3,MySQL 8.0.36,Redis 7,MinIO存储
+- **Technical:** 必须兼容Node.js 20.18.3,PostgreSQL 15,Redis 7,MinIO存储
 
 ### Key Assumptions
 - 开发环境和生产环境配置一致性能够简化部署

+ 14 - 14
docs/development.md

@@ -54,13 +54,13 @@ cp .env.example .env
 
 编辑 `.env` 文件:
 ```env
-# 数据库配置
-DATABASE_URL=mysql://root:password@localhost:3306/d8dai
-DATABASE_HOST=localhost
-DATABASE_PORT=3306
-DATABASE_NAME=d8dai
-DATABASE_USER=root
-DATABASE_PASSWORD=password
+# 数据库配置 (PostgreSQL)
+DATABASE_URL=postgresql://postgres:password@localhost:5432/d8dai
+DB_HOST=localhost
+DB_PORT=5432
+DB_DATABASE=d8dai
+DB_USERNAME=postgres
+DB_PASSWORD=password
 
 # 应用配置
 NODE_ENV=development
@@ -114,8 +114,8 @@ npm run dev
 
 ### 3.1 使用 Docker 数据库
 ```bash
-# 启动 MySQL 和 Redis
-docker-compose up mysql redis -d
+# 启动 PostgreSQL 和 Redis
+docker-compose up postgres redis -d
 
 # 运行数据库迁移
 npm run db:migrate
@@ -125,7 +125,7 @@ npm run db:seed
 ```
 
 ### 3.2 手动数据库配置
-1. 安装 MySQL 8.0+ 和 Redis 7+
+1. 安装 PostgreSQL 15+ 和 Redis 7+
 2. 创建数据库: `CREATE DATABASE d8dai;`
 3. 配置连接信息在 `.env` 文件中
 
@@ -178,8 +178,8 @@ npm run typecheck    # 类型检查
 
 ### 5.1 测试数据库设置
 ```bash
-# 创建测试数据库
-echo "CREATE DATABASE d8dai_test;" | mysql -u root -p
+# 创建测试数据库 (PostgreSQL)
+createdb d8dai_test
 
 # 或者使用Docker测试数据库
 docker-compose -f docker-compose.test.yml up -d
@@ -189,7 +189,7 @@ docker-compose -f docker-compose.test.yml up -d
 创建 `.env.test` 文件:
 ```env
 NODE_ENV=test
-DATABASE_URL=mysql://root:password@localhost:3306/d8dai_test
+DATABASE_URL=postgresql://postgres:password@localhost:5432/d8dai_test
 JWT_SECRET=test-jwt-secret
 ```
 
@@ -217,7 +217,7 @@ npm install
 ```
 
 **数据库连接问题**:
-- 确保 MySQL 服务正在运行
+- 确保 PostgreSQL 服务正在运行
 - 检查 `.env` 文件中的数据库配置
 - 验证网络连接和防火墙设置
 

+ 1 - 1
docs/epic-002-user-management-enhancement.md

@@ -48,7 +48,7 @@
 
 "请为此棕地史诗开发详细的用户故事。关键考虑因素:
 
-- 这是对运行Node.js 20.18.3 + React 19 + TypeORM + MySQL技术栈的现有系统的增强
+- 这是对运行Node.js 20.18.3 + React 19 + TypeORM + PostgreSQL技术栈的现有系统的增强
 - 集成点:现有用户API端点、认证中间件、数据库操作层
 - 现有模式遵循:shadcn/ui设计系统、TypeScript类型安全、响应式布局
 - 关键兼容性要求:API向后兼容、数据库schema不变、性能无退化

+ 6 - 6
docs/integration-testing-best-practices.md

@@ -337,15 +337,15 @@ jobs:
     runs-on: ubuntu-latest
 
     services:
-      mysql:
-        image: mysql:8.0
+      postgres:
+        image: postgres:15
         env:
-          MYSQL_ROOT_PASSWORD: root
-          MYSQL_DATABASE: test_db
+          POSTGRES_PASSWORD: postgres
+          POSTGRES_DB: test_db
         ports:
-          - 3306:3306
+          - 5432:5432
         options: >-
-          --health-cmd="mysqladmin ping"
+          --health-cmd="pg_isready"
           --health-interval=10s
           --health-timeout=5s
           --health-retries=3

+ 4 - 4
docs/prd.md

@@ -15,7 +15,7 @@
 - 🚀 **快速开发基础**: Node.js + React 技术栈
 - 🔐 **身份认证系统**: JWT-based 用户认证
 - 👥 **用户管理**: 完整的用户和角色管理功能
-- 📊 **数据库集成**: TypeORM + MySQL 数据持久化
+- 📊 **数据库集成**: TypeORM + PostgreSQL 数据持久化
 - 🎨 **现代化UI**: React 19 + Tailwind CSS 界面
 
 ### 1.2 可用文档分析
@@ -68,7 +68,7 @@ D8D Starter已经具备优秀的技术基础:
 **FR1: 用户认证和管理系统**
 - 必须提供完整的用户注册、登录、密码重置功能
 - 支持基于JWT的安全认证机制
-- 用户信息需要持久化存储到MySQL数据库
+- 用户信息需要持久化存储到PostgreSQL数据库
 - 提供用户角色和权限管理基础框架
 
 **FR2: 现代化前端界面**
@@ -87,7 +87,7 @@ D8D Starter已经具备优秀的技术基础:
 
 **FR4: 数据库集成和ORM**
 - 使用TypeORM进行数据库操作抽象
-- 支持MySQL数据库连接和连接池管理
+- 支持PostgreSQL数据库连接和连接池管理
 - 提供数据模型定义和迁移能力
 - 实现基础的数据验证和约束
 
@@ -164,7 +164,7 @@ D8D Starter已经具备优秀的技术基础:
 
 **技术约束**:
 - 必须保持与现有shadcn设计系统的兼容性
-- 需要支持MySQL关系型数据库
+- 需要支持PostgreSQL关系型数据库
 - 前端构建基于Vite,后端基于Hono
 - 部署环境支持Docker容器化
 

+ 2 - 2
docs/stories/001.002.story.md

@@ -37,7 +37,7 @@ Ready for Review
 ### 现有技术栈分析
 - **API框架**: Hono 4.8.5 [Source: package.json]
 - **测试库**: @testing-library/react 16.3.2 [Source: package.json]
-- **数据库**: MySQL 8.0.36 + TypeORM 0.3.25 [Source: package.json]
+- **数据库**: PostgreSQL 15 + TypeORM 0.3.25 [Source: package.json]
 - **现有配置**: Vitest支持happy-dom环境 [Source: vitest.config.ts]
 
 ### 集成测试需求
@@ -65,7 +65,7 @@ const testServer = () => {
 
 // 测试数据库配置
 const testDataSource = new DataSource({
-  type: 'mysql',
+  type: 'postgres',
   // 使用测试数据库或内存数据库
 })
 ```

+ 5 - 5
docs/stories/001.003.story.md

@@ -41,7 +41,7 @@ Ready for Review
 ### 现有技术栈分析
 - **前端框架**: React 19.1.0 + Vite 7.0.0 [Source: package.json]
 - **后端框架**: Hono 4.8.5 + Node.js 20.18.3 [Source: package.json]
-- **数据库**: MySQL 8.0.36 [Source: package.json]
+- **数据库**: PostgreSQL 15 [Source: package.json]
 - **部署环境**: Docker Compose [Source: architecture.md]
 
 ### E2E测试需求
@@ -77,16 +77,16 @@ Ready for Review
 ```yaml
 # docker-compose.test.yml
 test-db:
-  image: mysql:8.0.36
+  image: postgres:15
   environment:
-    MYSQL_DATABASE: test_d8dai
-    MYSQL_ROOT_PASSWORD: test_password
+    POSTGRES_DB: test_d8dai
+    POSTGRES_PASSWORD: test_password
 
 test-app:
   build: .
   environment:
     NODE_ENV: test
-    DATABASE_URL: mysql://root:test_password@test-db:3306/test_d8dai
+    DATABASE_URL: postgresql://postgres:test_password@test-db:5432/test_d8dai
 ```
 
 **CI/CD环境**:

+ 0 - 1
package.json

@@ -79,7 +79,6 @@
     "input-otp": "^1.4.2",
     "jsonwebtoken": "^9.0.2",
     "lucide-react": "^0.536.0",
-    "mysql2": "^3.14.2",
     "next-themes": "^0.4.6",
     "pg": "^8.16.3",
     "react": "^19.1.0",

+ 22 - 12
pnpm-lock.yaml

@@ -155,9 +155,6 @@ importers:
       lucide-react:
         specifier: ^0.536.0
         version: 0.536.0(react@19.1.0)
-      mysql2:
-        specifier: ^3.14.2
-        version: 3.14.2
       next-themes:
         specifier: ^0.4.6
         version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -5553,7 +5550,8 @@ snapshots:
     dependencies:
       possible-typed-array-names: 1.1.0
 
-  aws-ssl-profiles@1.1.2: {}
+  aws-ssl-profiles@1.1.2:
+    optional: true
 
   axios@1.11.0(debug@4.4.1):
     dependencies:
@@ -5817,7 +5815,8 @@ snapshots:
 
   delayed-stream@1.0.0: {}
 
-  denque@2.1.0: {}
+  denque@2.1.0:
+    optional: true
 
   dequal@2.0.3: {}
 
@@ -6221,6 +6220,7 @@ snapshots:
   generate-function@2.3.1:
     dependencies:
       is-property: 1.0.2
+    optional: true
 
   get-caller-file@2.0.5: {}
 
@@ -6343,6 +6343,7 @@ snapshots:
   iconv-lite@0.6.3:
     dependencies:
       safer-buffer: 2.1.2
+    optional: true
 
   ieee754@1.2.1: {}
 
@@ -6449,7 +6450,8 @@ snapshots:
   is-potential-custom-element-name@1.0.1:
     optional: true
 
-  is-property@1.0.2: {}
+  is-property@1.0.2:
+    optional: true
 
   is-regex@1.2.1:
     dependencies:
@@ -6687,7 +6689,8 @@ snapshots:
 
   lodash@4.17.21: {}
 
-  long@5.3.2: {}
+  long@5.3.2:
+    optional: true
 
   loose-envify@1.4.0:
     dependencies:
@@ -6697,9 +6700,11 @@ snapshots:
 
   lru-cache@10.4.3: {}
 
-  lru-cache@7.18.3: {}
+  lru-cache@7.18.3:
+    optional: true
 
-  lru.min@1.1.2: {}
+  lru.min@1.1.2:
+    optional: true
 
   lucide-react@0.536.0(react@19.1.0):
     dependencies:
@@ -6773,10 +6778,12 @@ snapshots:
       named-placeholders: 1.1.3
       seq-queue: 0.0.5
       sqlstring: 2.3.3
+    optional: true
 
   named-placeholders@1.1.3:
     dependencies:
       lru-cache: 7.18.3
+    optional: true
 
   nanoid@3.3.11: {}
 
@@ -7181,7 +7188,8 @@ snapshots:
       es-errors: 1.3.0
       is-regex: 1.2.1
 
-  safer-buffer@2.1.2: {}
+  safer-buffer@2.1.2:
+    optional: true
 
   saxes@6.0.0:
     dependencies:
@@ -7194,7 +7202,8 @@ snapshots:
 
   semver@7.7.2: {}
 
-  seq-queue@0.0.5: {}
+  seq-queue@0.0.5:
+    optional: true
 
   set-cookie-parser@2.7.1: {}
 
@@ -7284,7 +7293,8 @@ snapshots:
 
   sql-highlight@6.1.0: {}
 
-  sqlstring@2.3.3: {}
+  sqlstring@2.3.3:
+    optional: true
 
   stackback@0.0.2: {}