From 0f9d349fa510988d2f9673d96531363c7472e1e2 Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 16 Feb 2026 01:40:18 -0800 Subject: [PATCH] feat: add db migration for session storage --- docs/DB_MIGRATION_WORKFLOW.md | 1 + packages/db/migrations/create_sessions_table.sql | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 packages/db/migrations/create_sessions_table.sql diff --git a/docs/DB_MIGRATION_WORKFLOW.md b/docs/DB_MIGRATION_WORKFLOW.md index 3eae37a..11dfac9 100644 --- a/docs/DB_MIGRATION_WORKFLOW.md +++ b/docs/DB_MIGRATION_WORKFLOW.md @@ -26,6 +26,7 @@ Current baseline files: - `add_modified_on_column.sql` - `add_notes_column.sql` - `create_item_classification_table.sql` +- `create_sessions_table.sql` - `multi_household_architecture.sql` ## Tracking table diff --git a/packages/db/migrations/create_sessions_table.sql b/packages/db/migrations/create_sessions_table.sql new file mode 100644 index 0000000..b398ab5 --- /dev/null +++ b/packages/db/migrations/create_sessions_table.sql @@ -0,0 +1,14 @@ +CREATE TABLE IF NOT EXISTS sessions ( + id VARCHAR(128) PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + expires_at TIMESTAMPTZ NOT NULL, + last_seen_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + user_agent TEXT +); + +CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions(user_id); +CREATE INDEX IF NOT EXISTS idx_sessions_expires_at ON sessions(expires_at); + +COMMENT ON TABLE sessions IS 'DB-backed application sessions'; +COMMENT ON COLUMN sessions.id IS 'Opaque session identifier stored in HttpOnly cookie';