🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
32 lines
1.9 KiB
SQL
32 lines
1.9 KiB
SQL
-- Add fields to support featured events and public calendar integration
|
|
ALTER TABLE events
|
|
ADD COLUMN IF NOT EXISTS end_time TIMESTAMP WITH TIME ZONE,
|
|
ADD COLUMN IF NOT EXISTS image_url TEXT,
|
|
ADD COLUMN IF NOT EXISTS category TEXT DEFAULT 'general',
|
|
ADD COLUMN IF NOT EXISTS is_featured BOOLEAN DEFAULT FALSE,
|
|
ADD COLUMN IF NOT EXISTS is_public BOOLEAN DEFAULT FALSE,
|
|
ADD COLUMN IF NOT EXISTS is_published BOOLEAN DEFAULT TRUE,
|
|
ADD COLUMN IF NOT EXISTS external_source TEXT; -- Track if event is from scraper
|
|
|
|
-- Add indexes for performance
|
|
CREATE INDEX IF NOT EXISTS idx_events_is_featured ON events(is_featured);
|
|
CREATE INDEX IF NOT EXISTS idx_events_is_public ON events(is_public);
|
|
CREATE INDEX IF NOT EXISTS idx_events_category ON events(category);
|
|
CREATE INDEX IF NOT EXISTS idx_events_start_time ON events(start_time);
|
|
CREATE INDEX IF NOT EXISTS idx_events_external_source ON events(external_source);
|
|
|
|
-- Add RLS policy for public events (anyone can view public events)
|
|
CREATE POLICY IF NOT EXISTS "Anyone can view public published events" ON events
|
|
FOR SELECT USING (is_public = true AND is_published = true);
|
|
|
|
-- Update existing events to be public by default for backward compatibility
|
|
UPDATE events SET is_public = true, is_published = true WHERE is_public IS NULL;
|
|
|
|
-- Add comments for clarity
|
|
COMMENT ON COLUMN events.end_time IS 'Event end time - optional, derived from start_time if not provided';
|
|
COMMENT ON COLUMN events.image_url IS 'Featured image for the event';
|
|
COMMENT ON COLUMN events.category IS 'Event category (music, arts, community, business, food, sports, etc.)';
|
|
COMMENT ON COLUMN events.is_featured IS 'Whether event should be featured prominently';
|
|
COMMENT ON COLUMN events.is_public IS 'Whether event appears in public calendar';
|
|
COMMENT ON COLUMN events.is_published IS 'Whether event is published and visible';
|
|
COMMENT ON COLUMN events.external_source IS 'Source of external events (e.g., "scraper", "manual")'; |