BEGIN; CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, email TEXT UNIQUE, password TEXT NOT NULL, enabled BOOLEAN DEFAULT false, admin BOOLEAN DEFAULT false, pubkey TEXT UNIQUE NOT NULL, relays TEXT DEFAULT NULL, create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, update_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ); CREATE FUNCTION users_update_ts() RETURNS TRIGGER AS $$ BEGIN NEW.update_ts = now(); RETURN NEW; END; $$ language 'plpgsql'; CREATE TRIGGER update_users_update_ts BEFORE UPDATE ON users FOR EACH ROW EXECUTE PROCEDURE users_update_ts(); CREATE TABLE IF NOT EXISTS nip05s ( id SERIAL PRIMARY KEY, owner_id INT NOT NULL, name TEXT UNIQUE NOT NULL, domain TEXT NOT NULL, create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, update_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT fk_owner FOREIGN KEY(owner_id) REFERENCES users(id), CONSTRAINT ck_name CHECK (name ~ '^[a-z0-9]*$') ); CREATE FUNCTION nip05s_update_ts() RETURNS TRIGGER AS $$ BEGIN NEW.update_ts = now(); RETURN NEW; END; $$ language 'plpgsql'; CREATE TRIGGER update_nip05s_update_ts BEFORE UPDATE ON nip05s FOR EACH ROW EXECUTE PROCEDURE nip05s_update_ts(); COMMIT;