ci: MySql切换为PG

This commit is contained in:
mazxd
2025-05-11 14:16:03 +08:00
parent b1d91bef88
commit 60aac8c818
11 changed files with 776 additions and 4627 deletions
+1 -2
View File
@@ -10,7 +10,7 @@ alwaysApply: false
- TypeScript
- Prisma (ORM)
- Redis
- MySQL 8.0
- PostgreSQL 15
## 目录结构规范
```
@@ -73,5 +73,4 @@ backend/
1. 使用 Docker 容器化
2. 环境变量配置
3. 健康检查
4. 监控指标
+1 -2
View File
@@ -6,7 +6,7 @@ alwaysApply: false
# 数据库设计规范
## 数据库选型
- 主数据库:MySQL 8.0
- 主数据库:PostgreSQL 15
- ORMPrisma
- 缓存:Redis
@@ -64,5 +64,4 @@ alwaysApply: false
1. 性能监控
2. 容量监控
3. 慢查询监控
4. 异常监控
+1 -1
View File
@@ -13,7 +13,7 @@
- 前端:Nuxt.js (Vue 3) + TypeScript + Tailwind CSS
- 后端:Express.js + TypeScript
- 数据库:MySQL 8.0 + Prisma ORM
- 数据库:Postgres14 + Prisma ORM
- 缓存:Redis
- 部署:Docker + Docker Compose
+7 -6
View File
@@ -3,10 +3,11 @@ SEARCH_SERVICE_URL=http://192.168.1.99:8008
REDIS_HOST=192.168.1.99
REDIS_PORT=6379
REDIS_PASSWORD=
MYSQL_HOST=192.168.1.126
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=rootroot
MYSQL_DATABASE=bps
POSTGRES_HOST=192.168.1.99
POSTGRES_PORT=5432
POSTGRES_USER=mzaxd
POSTGRES_PASSWORD=rootroot
POSTGRES_DATABASE=bps
SEARCH_SERVICE_USERNAME=mzaxd
SEARCH_SERVICE_PASSWORD=200712
SEARCH_SERVICE_PASSWORD=200712
DATABASE_URL="postgres://mzaxd:roootroot@192.168.1.99:5432/bps"
+735 -297
View File
File diff suppressed because it is too large Load Diff
-4292
View File
File diff suppressed because it is too large Load Diff
+9 -4
View File
@@ -6,7 +6,7 @@ generator client {
}
datasource db {
provider = "mysql"
provider = "postgresql"
url = env("DATABASE_URL")
}
@@ -25,7 +25,7 @@ model Account {
model TranscodeRecord {
id Int @id @default(autoincrement())
itemId String @index
itemId String
sourceLink String @db.Text
driveType String
managedAccountId Int
@@ -36,10 +36,13 @@ model TranscodeRecord {
transferEndTime DateTime?
errorCode String?
errorMessage String? @db.Text
cleanupStatus String @default("pending") @index
cleanupStatus String @default("pending")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
account Account @relation(fields: [managedAccountId], references: [id])
@@index([itemId])
@@index([cleanupStatus])
}
model ActivityLog {
@@ -48,7 +51,7 @@ model ActivityLog {
operationType String
clientIp String?
keyword String?
itemId String? @index
itemId String?
driveType String?
managedAccountId Int?
generatedLink String? @db.Text
@@ -57,4 +60,6 @@ model ActivityLog {
durationMs Int?
details String? @db.Text
account Account? @relation(fields: [managedAccountId], references: [id])
@@index([itemId])
}
+10 -10
View File
@@ -9,10 +9,10 @@ console.log('Environment variables loaded:', {
PORT: process.env.PORT,
SEARCH_SERVICE_URL: process.env.SEARCH_SERVICE_URL,
JWT_SECRET: process.env.JWT_SECRET,
MYSQL_HOST: process.env.MYSQL_HOST,
MYSQL_PORT: process.env.MYSQL_PORT,
MYSQL_USER: process.env.MYSQL_USER,
MYSQL_PASSWORD: process.env.MYSQL_PASSWORD,
POSTGRES_HOST: process.env.POSTGRES_HOST,
POSTGRES_PORT: process.env.POSTGRES_PORT,
POSTGRES_USER: process.env.POSTGRES_USER,
POSTGRES_PASSWORD: process.env.POSTGRES_PASSWORD,
});
export const config = {
@@ -31,12 +31,12 @@ export const config = {
port: parseInt(process.env.REDIS_PORT || '6379'),
password: process.env.REDIS_PASSWORD,
},
mysql: {
host: process.env.MYSQL_HOST || 'localhost',
port: parseInt(process.env.MYSQL_PORT || '3306'),
user: process.env.MYSQL_USER || 'root',
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE || 'search_service',
postgres: {
host: process.env.POSTGRES_HOST || 'localhost',
port: parseInt(process.env.POSTGRES_PORT || '5432'),
user: process.env.POSTGRES_USER || 'bps',
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DB || 'bps',
},
jwt: {
secret: process.env.JWT_SECRET || 'your-secret-key',
+2 -2
View File
@@ -9,7 +9,7 @@
- **技术栈**
- 前端:Nuxt.jsTypeScript模式)
- 后端:Express.jsTypeScript模式)
- 数据库:MySQL 8.0ORM使用Prisma
- 数据库:Postgres14 ORM使用Prisma
- 缓存:Redis
- 接口协议:RESTful API
- **核心原则**
@@ -165,7 +165,7 @@ interface DriveAdapter {
- 灵活配置中间件(如 Redis连接池、CORS)
- 与TypeScript结合良好,支持接口强类型定义
### **数据库(MySQL + Prisma**
### **数据库(Postgres + Prisma**
- **优势**
- Prisma提供TypeScript类型安全的数据库操作
+2 -2
View File
@@ -27,7 +27,7 @@
* **前端:** Nuxt.js (使用TypeScript)
* **后端:** Express.js (使用TypeScript)
* **数据库:** MySQL 8.0 (ORM: Prisma)
* **数据库:** Postgres 14 (ORM: Prisma)
* **缓存:** Redis
## **3\. 架构概述**
@@ -103,7 +103,7 @@
1. 查询 TranscodeRecord 表,筛选条件为:status \== 'success', cleanupStatus \== 'pending', 且 transferEndTime 早于当前时间减去约10分钟。
2. 对每个符合条件的记录: a. 获取 transferredFileId, driveType, managedAccountId。 b. 获取对应的 Account 信息和 DriveAdapter 实例。 c. 调用 adapter.delete(transferredFileId, managedAccount) 方法删除网盘中的文件。 d. **若删除成功:** 更新 TranscodeRecord 的 cleanupStatus 为 'done'。记录清理成功 (CLEANUP\_SUCCESS) 到 ActivityLog。 e. **若删除失败:** 更新 TranscodeRecord 的 cleanupStatus 为 'failed'。记录清理失败 (CLEANUP\_FAILURE) 到 ActivityLog,包含错误信息。
## **7\. 数据模型 (Database \- MySQL/Prisma)**
## **7\. 数据模型 (Database \- Postgres/Prisma)**
### **7.1. Account 表 (管理系统自有的网盘账号)**
+8 -9
View File
@@ -20,23 +20,22 @@ services:
- "4000:4000"
environment:
- NODE_ENV=production
- DATABASE_URL=mysql://bps:bps_password@db:3306/bps
- DATABASE_URL=postgresql://bps:bps_password@db:5432/bps
- REDIS_URL=redis://redis:6379
depends_on:
- db
- redis
db:
image: mysql:8.0
image: postgres:15
ports:
- "3306:3306"
- "5432:5432"
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=bps
- MYSQL_USER=bps
- MYSQL_PASSWORD=bps_password
- POSTGRES_USER=bps
- POSTGRES_PASSWORD=bps_password
- POSTGRES_DB=bps
volumes:
- mysql_data:/var/lib/mysql
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7.0
@@ -46,5 +45,5 @@ services:
- redis_data:/data
volumes:
mysql_data:
postgres_data:
redis_data: