ci: MySql切换为PG
This commit is contained in:
@@ -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. 监控指标
|
||||
@@ -6,7 +6,7 @@ alwaysApply: false
|
||||
# 数据库设计规范
|
||||
|
||||
## 数据库选型
|
||||
- 主数据库:MySQL 8.0
|
||||
- 主数据库:PostgreSQL 15
|
||||
- ORM:Prisma
|
||||
- 缓存:Redis
|
||||
|
||||
@@ -64,5 +64,4 @@ alwaysApply: false
|
||||
1. 性能监控
|
||||
2. 容量监控
|
||||
3. 慢查询监控
|
||||
|
||||
4. 异常监控
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
DATABASE_URL="postgres://mzaxd:roootroot@192.168.1.99:5432/bps"
|
||||
Generated
+735
-297
File diff suppressed because it is too large
Load Diff
Generated
-4292
File diff suppressed because it is too large
Load Diff
@@ -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])
|
||||
}
|
||||
@@ -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
@@ -9,7 +9,7 @@
|
||||
- **技术栈**:
|
||||
- 前端:Nuxt.js(TypeScript模式)
|
||||
- 后端:Express.js(TypeScript模式)
|
||||
- 数据库:MySQL 8.0(ORM使用Prisma)
|
||||
- 数据库:Postgres14 (ORM使用Prisma)
|
||||
- 缓存:Redis
|
||||
- 接口协议:RESTful API
|
||||
- **核心原则**:
|
||||
@@ -165,7 +165,7 @@ interface DriveAdapter {
|
||||
- 灵活配置中间件(如 Redis连接池、CORS)
|
||||
- 与TypeScript结合良好,支持接口强类型定义
|
||||
|
||||
### **数据库(MySQL + Prisma)**
|
||||
### **数据库(Postgres + Prisma)**
|
||||
|
||||
- **优势**:
|
||||
- Prisma提供TypeScript类型安全的数据库操作
|
||||
|
||||
+2
-2
@@ -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
@@ -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:
|
||||
Reference in New Issue
Block a user