← back to Jill Website
src/migrations/005_create_link_checks_table.sql
34 lines
-- Create link_checks table for tracking link validation results
CREATE TABLE IF NOT EXISTS link_checks (
id SERIAL PRIMARY KEY,
url VARCHAR(2048) NOT NULL,
source_type VARCHAR(50) NOT NULL, -- 'property', 'activity', etc.
source_id INTEGER NOT NULL,
http_status INTEGER,
is_valid BOOLEAN DEFAULT false,
error_message TEXT,
response_time_ms INTEGER,
last_checked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(url, source_type, source_id)
);
-- Create index on URL for faster lookups
CREATE INDEX IF NOT EXISTS idx_link_checks_url ON link_checks(url);
-- Create index on source_type and source_id for faster lookups
CREATE INDEX IF NOT EXISTS idx_link_checks_source ON link_checks(source_type, source_id);
-- Create index on is_valid for filtering broken links
CREATE INDEX IF NOT EXISTS idx_link_checks_valid ON link_checks(is_valid);
-- Create index on last_checked_at for sorting by check date
CREATE INDEX IF NOT EXISTS idx_link_checks_last_checked ON link_checks(last_checked_at DESC);
-- Create trigger to update updated_at timestamp
CREATE TRIGGER update_link_checks_updated_at
BEFORE UPDATE ON link_checks
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();