🎯 重构目标: - 将 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接口
76 lines
2.0 KiB
Python
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() |