-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb_schema.sql
More file actions
125 lines (116 loc) · 4.06 KB
/
Copy pathdb_schema.sql
File metadata and controls
125 lines (116 loc) · 4.06 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
PRAGMA foreign_keys = ON;
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
openclaw_user_id TEXT NOT NULL UNIQUE,
nickname TEXT,
energy INTEGER NOT NULL DEFAULT 0,
daily_energy_gained INTEGER NOT NULL DEFAULT 0,
daily_deep_energy_gained INTEGER NOT NULL DEFAULT 0,
energy_frozen_until TEXT,
last_energy_reset_at TEXT,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS rarity_config (
rarity TEXT PRIMARY KEY,
name TEXT NOT NULL,
probability REAL NOT NULL,
base_growth REAL NOT NULL,
frame_style TEXT NOT NULL,
sort_order INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS monster_species (
id INTEGER PRIMARY KEY AUTOINCREMENT,
code TEXT NOT NULL UNIQUE,
name TEXT NOT NULL UNIQUE,
rarity TEXT NOT NULL,
element TEXT NOT NULL,
personality TEXT NOT NULL,
body_type TEXT NOT NULL,
appearance TEXT NOT NULL,
skill_name TEXT NOT NULL,
skill_description TEXT NOT NULL,
growth_rate REAL NOT NULL,
base_power INTEGER NOT NULL,
image_prompt TEXT NOT NULL,
image_path TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (rarity) REFERENCES rarity_config(rarity)
);
CREATE TABLE IF NOT EXISTS user_monsters (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
species_id INTEGER NOT NULL,
nickname TEXT,
level INTEGER NOT NULL DEFAULT 1,
energy INTEGER NOT NULL DEFAULT 0,
star INTEGER NOT NULL DEFAULT 1,
slot_index INTEGER NOT NULL,
inherited_from_count INTEGER NOT NULL DEFAULT 0,
fusion_count INTEGER NOT NULL DEFAULT 0,
is_locked INTEGER NOT NULL DEFAULT 0,
adopted_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (species_id) REFERENCES monster_species(id),
UNIQUE(user_id, slot_index),
CHECK(slot_index BETWEEN 1 AND 3)
);
CREATE TABLE IF NOT EXISTS adoption_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
monster_id INTEGER NOT NULL,
pool_type TEXT NOT NULL,
cost_energy INTEGER NOT NULL,
rarity TEXT NOT NULL,
pity_counter_before INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (monster_id) REFERENCES user_monsters(id)
);
CREATE TABLE IF NOT EXISTS chat_energy_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
message_id TEXT,
quality_type TEXT NOT NULL,
energy_delta INTEGER NOT NULL,
reason TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS fusion_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
initiator_user_id INTEGER NOT NULL,
target_user_id INTEGER,
inherited_monster_id INTEGER NOT NULL,
consumed_monster_id INTEGER NOT NULL,
energy_inherited INTEGER NOT NULL,
mutation_result TEXT,
confirmed_by_initiator INTEGER NOT NULL DEFAULT 0,
confirmed_by_target INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (initiator_user_id) REFERENCES users(id),
FOREIGN KEY (target_user_id) REFERENCES users(id),
FOREIGN KEY (inherited_monster_id) REFERENCES user_monsters(id),
FOREIGN KEY (consumed_monster_id) REFERENCES user_monsters(id)
);
CREATE TABLE IF NOT EXISTS leaderboard_snapshots (
id INTEGER PRIMARY KEY AUTOINCREMENT,
board_type TEXT NOT NULL,
user_id INTEGER NOT NULL,
monster_id INTEGER,
rank INTEGER NOT NULL,
score INTEGER NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (monster_id) REFERENCES user_monsters(id)
);
CREATE TABLE IF NOT EXISTS user_adoption_pity (
user_id INTEGER PRIMARY KEY,
total_draws INTEGER NOT NULL DEFAULT 0,
since_sr_plus INTEGER NOT NULL DEFAULT 0,
since_ssr_plus INTEGER NOT NULL DEFAULT 0,
since_ur_plus INTEGER NOT NULL DEFAULT 0,
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);