003_trigger.sql
1-- +goose up
2-- +goose StatementBegin
3
4-- cleanup old anonymous user records if no registration in 30 days
5CREATE TRIGGER IF NOT EXISTS anon_cleanup AFTER INSERT ON users
6 BEGIN
7 DELETE FROM users WHERE email IS NULL AND handle IS NULL AND ctime < datetime('now', '-30 days');
8 END;
9
10-- auto update modified time
11CREATE TRIGGER IF NOT EXISTS adjust_mtime AFTER UPDATE ON users
12 BEGIN
13 UPDATE users SET mtime=datetime('now') WHERE id=old.id;
14 END;
15
16-- create registered user views
17CREATE VIEW IF NOT EXISTS users_registered AS SELECT * FROM users WHERE email IS NOT NULL OR handle IS NOT NULL;
18
19-- create normalized handle and email view
20CREATE VIEW IF NOT EXISTS users_normalized AS SELECT id, lower(email) AS email, lower(handle) AS handle, password_hash, metadata, ctime, mtime FROM users;
21
22-- +goose StatementEnd