Files
project-panel/database.py
hz4th_coder 69edd1c63e refactor: 模块化重构 v3.4.0
🎯 重构目标:
- 将 3700+ 行单文件拆分为多个模块
- 清晰的职责分离,便于维护和扩展

📁 模块结构:
- config.py: 配置常量和路径
- database.py: 数据库操作
- utils.py: 工具函数(日志、进程、cron等)
- routes_cron.py: Cron管理API
- routes_system.py: 系统监控API
- routes_config.py: 配置管理API
- routes_email.py: 邮件通知API
- routes_project.py: 项目管理API
- templates.py: HTML模板
- app.py: 主入口文件

 优势:
- 易于维护:每个模块职责明确
- 易于扩展:新增功能只需添加对应模块
- 易于测试:模块独立,便于单元测试
- 易于理解:新人能快速上手

📝 更新 README.md,详细说明项目结构和API接口
2026-06-01 12:30:24 +08:00

76 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""
数据库操作模块
"""
import sqlite3
from flask import g
from config import DB_FILE
def get_db():
"""获取数据库连接"""
if 'db' not in g:
g.db = sqlite3.connect(DB_FILE)
g.db.row_factory = sqlite3.Row
return g.db
def close_db(error):
"""关闭数据库连接"""
if hasattr(g, 'db'):
g.db.close()
def init_db():
"""初始化数据库"""
conn = sqlite3.connect(DB_FILE)
conn.row_factory = sqlite3.Row
c = conn.cursor()
# Cron 任务表
c.execute('''CREATE TABLE IF NOT EXISTS cron_tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
expression TEXT NOT NULL,
command TEXT NOT NULL,
description TEXT,
category TEXT DEFAULT 'other',
enabled INTEGER DEFAULT 1,
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT DEFAULT CURRENT_TIMESTAMP
)''')
# Cron 历史版本表
c.execute('''CREATE TABLE IF NOT EXISTS cron_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
task_id INTEGER NOT NULL,
version INTEGER NOT NULL,
name TEXT,
expression TEXT,
command TEXT,
description TEXT,
category TEXT,
enabled INTEGER,
operation TEXT,
operator TEXT DEFAULT 'system',
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (task_id) REFERENCES cron_tasks(id)
)''')
# Cron 执行日志表
c.execute('''CREATE TABLE IF NOT EXISTS cron_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
task_id INTEGER,
execution_time TEXT DEFAULT CURRENT_TIMESTAMP,
status TEXT,
output TEXT,
FOREIGN KEY (task_id) REFERENCES cron_tasks(id)
)''')
# 创建索引
c.execute('CREATE INDEX IF NOT EXISTS idx_cron_history_task ON cron_history(task_id)')
c.execute('CREATE INDEX IF NOT EXISTS idx_cron_logs_task ON cron_logs(task_id)')
conn.commit()
conn.close()