1
0
mirror of https://github.com/ZeroCatDev/ClassworksKV.git synced 2025-07-02 21:09:23 +00:00

Compare commits

...

6 Commits
v1.0.3 ... main

7 changed files with 787 additions and 737 deletions

View File

@ -2,6 +2,11 @@
[Classworks](https://cs.houlangs.com)用于班级大屏的作业板小工具 [Classworks](https://cs.houlangs.com)用于班级大屏的作业板小工具
ClassworksKV 是 Classworks 的后端实现这是一个KV存储服务用于存储和查询数据信息如作业、花名册等也可以用于其他用途。
此项目由[厚浪云](https://houlangs.com)提供,访问公开实例零配置使用 [Classworks](https://cs.houlangs.com)
[![通过雨云一键部署](https://rainyun-apps.cn-nb1.rains3.com/materials/deploy-on-rainyun-cn.svg)](https://app.rainyun.com/apps/rca/store/6229/wuyuan_) [![通过雨云一键部署](https://rainyun-apps.cn-nb1.rains3.com/materials/deploy-on-rainyun-cn.svg)](https://app.rainyun.com/apps/rca/store/6229/wuyuan_)
## 文档 ## 文档

View File

@ -24,7 +24,7 @@ var server = createServer(app);
* Listen on provided port, on all network interfaces. * Listen on provided port, on all network interfaces.
*/ */
server.listen(port); server.listen(port, '0.0.0.0');
server.on('error', onError); server.on('error', onError);
server.on('listening', onListening); server.on('listening', onListening);
@ -82,5 +82,5 @@ function onError(error) {
function onListening() { function onListening() {
var addr = server.address(); var addr = server.address();
console.log("可以在 http://localhost:"+addr.port+" 访问"); console.log(`Server running at http://0.0.0.0:${addr.port}`);
} }

View File

@ -13,6 +13,18 @@ const DATABASE_URL =
? "file:/data/db.sqlite" ? "file:/data/db.sqlite"
: process.env.DATABASE_URL; : process.env.DATABASE_URL;
// 🔄 执行数据库迁移函数
function runDatabaseMigration() {
try {
console.log("🔄 执行数据库迁移...");
execSync("npx prisma migrate deploy", { stdio: "inherit" });
console.log("✅ 数据库迁移完成");
} catch (error) {
console.error("❌ 数据库迁移失败:", error.message);
process.exit(1);
}
}
// 🧱 数据库初始化函数 // 🧱 数据库初始化函数
function setupDatabase() { function setupDatabase() {
try { try {
@ -58,11 +70,8 @@ function setupDatabase() {
} }
console.log(`✅ 已复制 ${DATABASE_TYPE} 数据库配置文件和目录`); console.log(`✅ 已复制 ${DATABASE_TYPE} 数据库配置文件和目录`);
// 设置 Prisma 的 DATABASE_URL // 执行数据库迁移
process.env.DATABASE_URL = DATABASE_URL; runDatabaseMigration();
// 检查数据库表并执行必要的迁移
execSync("npx prisma migrate deploy", { stdio: "inherit" });
} catch (error) { } catch (error) {
console.error("❌ 数据库初始化失败:", error.message); console.error("❌ 数据库初始化失败:", error.message);
process.exit(1); process.exit(1);
@ -72,6 +81,8 @@ function setupDatabase() {
// 🔨 本地构建函数 // 🔨 本地构建函数
function buildLocal() { function buildLocal() {
try { try {
// 确保数据库迁移已执行
runDatabaseMigration();
execSync("npm install", { stdio: "inherit" }); // 安装依赖 execSync("npm install", { stdio: "inherit" }); // 安装依赖
execSync("npx prisma generate", { stdio: "inherit" }); // 生成 Prisma 客户端 execSync("npx prisma generate", { stdio: "inherit" }); // 生成 Prisma 客户端
console.log("✅ 构建完成"); console.log("✅ 构建完成");

View File

@ -1,6 +1,6 @@
{ {
"name": "ClassworksKV", "name": "ClassworksKV",
"version": "1.0.3", "version": "1.0.5",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "node ./bin/www", "start": "node ./bin/www",
@ -11,19 +11,19 @@
}, },
"type": "module", "type": "module",
"dependencies": { "dependencies": {
"@opentelemetry/auto-instrumentations-node": "^0.58.1", "@opentelemetry/auto-instrumentations-node": "^0.59.0",
"@opentelemetry/exporter-trace-otlp-proto": "^0.200.0", "@opentelemetry/exporter-trace-otlp-proto": "^0.201.1",
"@opentelemetry/resources": "^2.0.0", "@opentelemetry/resources": "^2.0.1",
"@opentelemetry/sdk-node": "^0.200.0", "@opentelemetry/sdk-node": "^0.201.1",
"@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.1",
"@opentelemetry/semantic-conventions": "^1.33.0", "@opentelemetry/semantic-conventions": "^1.34.0",
"@prisma/client": "6.8.2", "@prisma/client": "6.8.2",
"axios": "^1.9.0", "axios": "^1.9.0",
"bcrypt": "^6.0.0", "bcrypt": "^6.0.0",
"body-parser": "^2.2.0", "body-parser": "^2.2.0",
"cookie-parser": "~1.4.4", "cookie-parser": "~1.4.4",
"cors": "^2.8.5", "cors": "^2.8.5",
"debug": "~4.4.0", "debug": "~4.4.1",
"dotenv": "^16.5.0", "dotenv": "^16.5.0",
"ejs": "^3.1.10", "ejs": "^3.1.10",
"express": "~5.1.0", "express": "~5.1.0",

1478
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.