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()
|