File size: 2,278 Bytes
17e971c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

-- 创建脚本表
CREATE TABLE IF NOT EXISTS scripts (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL CHECK(length(name) <= 255),
    script_type TEXT NOT NULL CHECK(length(script_type) <= 255),
    content TEXT NOT NULL,
    description TEXT CHECK(length(description) <= 255),
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    group_id INTEGER NOT NULL DEFAULT 0
);

-- 创建脚本组表
CREATE TABLE IF NOT EXISTS script_groups (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL CHECK(length(name) <= 255),
    description TEXT CHECK(length(description) <= 255),
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-- 创建执行任务表
CREATE TABLE IF NOT EXISTS executor_tasks (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    server_ids TEXT NOT NULL,
    script_id INTEGER NOT NULL,
    script_content TEXT NOT NULL,
    script_type TEXT NOT NULL CHECK(length(script_type) <= 255),
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-- 创建执行日志表
CREATE TABLE IF NOT EXISTS executor_logs (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    executor_task_id INTEGER NOT NULL,
    server_id INTEGER NOT NULL,
    ssh_host TEXT NOT NULL,
    status INTEGER NOT NULL DEFAULT 0 CHECK(status IN (0,1,2,3)),
    log_name TEXT CHECK(length(log_name) <= 255),
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);


-- 创建索引(分开创建以避免SQLite语法错误)
-- 脚本表索引
CREATE INDEX IF NOT EXISTS idx_scripts_name ON scripts(name);
CREATE INDEX IF NOT EXISTS idx_scripts_script_type ON scripts(script_type);
CREATE INDEX IF NOT EXISTS idx_scripts_group_id ON scripts(group_id);

-- 脚本组索引
CREATE INDEX IF NOT EXISTS idx_script_groups_name ON script_groups(name);

-- 执行任务索引
CREATE INDEX IF NOT EXISTS idx_executor_tasks_script_id ON executor_tasks(script_id);

-- 执行日志索引
CREATE INDEX IF NOT EXISTS idx_executor_logs_task_server ON executor_logs(executor_task_id, server_id);
CREATE INDEX IF NOT EXISTS idx_executor_logs_status ON executor_logs(status);