21 lines
599 B
PL/PgSQL
21 lines
599 B
PL/PgSQL
-- Add migration script here
|
|
CREATE TABLE sessions (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id),
|
|
token TEXT NOT NULL UNIQUE,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
expires_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + INTERVAL '7 days'
|
|
);
|
|
|
|
CREATE OR REPLACE FUNCTION cleanup_expired_sessions()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
DELETE FROM sessions WHERE expires_at < NOW();
|
|
RETURN NULL;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER trigger_cleanup_sessions
|
|
AFTER INSERT ON sessions
|
|
EXECUTE FUNCTION cleanup_expired_sessions();
|