public
imalexnord
read
Slot
Calendar-first scheduling powered by Cloudflare Workers and Google Calendar.
Languages
Repository composition by tracked source files.
TypeScript
79%
CSS
19%
SQL
2%
HTML
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/user/imalexnord/slot.git
ssh://[email protected]:2222/user/imalexnord/slot.git
Trace
migrations/0001_init.sql
Trace helps you understand code history line by line. See who changed each line, when it changed, and which commit introduced it.
Author
Date
Commit
Line
Code
1
CREATE TABLE IF NOT EXISTS settings (
2
key TEXT PRIMARY KEY,
3
value TEXT NOT NULL,
4
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
5
);
7
CREATE TABLE IF NOT EXISTS oauth_states (
8
state TEXT PRIMARY KEY,
9
expires_at INTEGER NOT NULL
10
);
12
CREATE TABLE IF NOT EXISTS oauth_tokens (
13
provider TEXT PRIMARY KEY,
14
refresh_token_enc TEXT NOT NULL,
15
account_email TEXT NOT NULL,
16
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
17
);
19
CREATE TABLE IF NOT EXISTS bookings (
20
id TEXT PRIMARY KEY,
21
name TEXT NOT NULL,
22
email TEXT NOT NULL,
23
phone TEXT,
24
message TEXT,
25
start_time TEXT NOT NULL,
26
end_time TEXT NOT NULL,
27
duration_minutes INTEGER NOT NULL,
28
timezone TEXT NOT NULL,
29
meeting_mode TEXT NOT NULL,
30
google_event_id TEXT,
31
meet_url TEXT,
32
status TEXT NOT NULL DEFAULT 'pending',
33
created_at TEXT NOT NULL DEFAULT (datetime('now'))
34
);
36
CREATE INDEX IF NOT EXISTS idx_bookings_start ON bookings(start_time);
37
CREATE INDEX IF NOT EXISTS idx_bookings_status ON bookings(status);
39
CREATE TABLE IF NOT EXISTS slot_locks (
40
slot_key TEXT PRIMARY KEY,
41
booking_id TEXT NOT NULL,
42
expires_at INTEGER NOT NULL
43
);
45
CREATE INDEX IF NOT EXISTS idx_slot_locks_expiry ON slot_locks(expires_at);
47
CREATE TABLE IF NOT EXISTS rate_limits (
48
key TEXT PRIMARY KEY,
49
count INTEGER NOT NULL DEFAULT 1,
50
reset_at INTEGER NOT NULL
51
);
53
CREATE INDEX IF NOT EXISTS idx_rate_limits_reset ON rate_limits(reset_at);