Readur/migrations/20250701000000_add_webdav_d...

22 lines
1.0 KiB
SQL

-- Add directory-level ETag tracking for efficient WebDAV sync
-- This optimization allows skipping unchanged directories entirely
CREATE TABLE IF NOT EXISTS webdav_directories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
directory_path TEXT NOT NULL,
directory_etag TEXT NOT NULL,
last_scanned_at TIMESTAMPTZ DEFAULT NOW(),
file_count BIGINT DEFAULT 0,
total_size_bytes BIGINT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(user_id, directory_path)
);
-- Create indexes for performance
CREATE INDEX IF NOT EXISTS idx_webdav_directories_user_id ON webdav_directories(user_id);
CREATE INDEX IF NOT EXISTS idx_webdav_directories_path ON webdav_directories(user_id, directory_path);
CREATE INDEX IF NOT EXISTS idx_webdav_directories_etag ON webdav_directories(directory_etag);
CREATE INDEX IF NOT EXISTS idx_webdav_directories_last_scanned ON webdav_directories(last_scanned_at);