|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+CREATE TABLE IF NOT EXISTS kickstarter_emails (
|
|
|
2
|
+ pk INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
3
|
+ guild_id INTEGER NOT NULL, -- Discord Guild.id
|
|
|
4
|
+ email_hash TEXT NOT NULL, -- base64(sha256(email.lower.trimmed))
|
|
|
5
|
+ imported_at INTEGER NOT NULL, -- unix timestamp
|
|
|
6
|
+ UNIQUE(guild_id, email_hash) ON CONFLICT FAIL
|
|
|
7
|
+);
|
|
|
8
|
+
|
|
|
9
|
+CREATE TABLE IF NOT EXISTS kickstarter_discord_users (
|
|
|
10
|
+ pk INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
11
|
+ guild_id INTEGER NOT NULL, -- Discord Guild.id
|
|
|
12
|
+ discord_username TEXT NOT NULL, -- Discord Member.name
|
|
|
13
|
+ discord_member_id INTEGER DEFAULT NULL, -- resolved member id
|
|
|
14
|
+ lookup_status INTEGER NOT NULL DEFAULT 0, -- enum defined in code
|
|
|
15
|
+ imported_at INTEGER NOT NULL, -- unix timestamp
|
|
|
16
|
+ UNIQUE(guild_id, discord_username COLLATE NOCASE) ON CONFLICT FAIL
|
|
|
17
|
+);
|
|
|
18
|
+CREATE INDEX IF NOT EXISTS idx_kickstarter_discord_users_discord_member_id
|
|
|
19
|
+ ON kickstarter_discord_users (discord_member_id);
|
|
|
20
|
+
|
|
|
21
|
+CREATE TABLE IF NOT EXISTS member_links (
|
|
|
22
|
+ pk INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
23
|
+ guild_id INTEGER NOT NULL, -- Discord Guild.id
|
|
|
24
|
+ member_id INTEGER NOT NULL, -- Discord Member.id
|
|
|
25
|
+ email_hash TEXT NOT NULL, -- base64(sha256(email.lower.trimmed))
|
|
|
26
|
+ complete INTEGER NOT NULL DEFAULT 0, -- link found, role assigned successfully
|
|
|
27
|
+ UNIQUE(guild_id, member_id) ON CONFLICT FAIL,
|
|
|
28
|
+ UNIQUE(guild_id, email_hash) ON CONFLICT FAIL
|
|
|
29
|
+);
|