Files
Dramlog-Prod/sql/create_app_banners.sql
robin 1d02079df3 fix: Fix navigation links and restore LanguageSwitcher
- Add missing nav keys to types.ts, de.ts, en.ts (sessions, buddies, stats, wishlist)
- Add LanguageSwitcher back to authenticated header
- Create /sessions page with SessionList
- Create /buddies page with BuddyList
- Create /stats page with StatsDashboard
- Create /wishlist placeholder page
2026-01-18 21:18:25 +01:00

50 lines
1.4 KiB
PL/PgSQL

-- App Banners Table for dynamic hero content on home page
CREATE TABLE IF NOT EXISTS app_banners (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title TEXT NOT NULL,
image_url TEXT NOT NULL, -- 16:9 Banner Image
link_target TEXT, -- e.g., '/sessions'
cta_text TEXT DEFAULT 'Open',
is_active BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now()
);
-- Only one banner should be active at a time (optional constraint)
CREATE UNIQUE INDEX IF NOT EXISTS idx_app_banners_active
ON app_banners (is_active)
WHERE is_active = true;
-- RLS Policies
ALTER TABLE app_banners ENABLE ROW LEVEL SECURITY;
-- Everyone can view active banners
CREATE POLICY "Anyone can view active banners"
ON app_banners FOR SELECT
USING (is_active = true);
-- Admins can manage all banners
CREATE POLICY "Admins can manage banners"
ON app_banners FOR ALL
USING (
EXISTS (
SELECT 1 FROM admin_users
WHERE admin_users.user_id = auth.uid()
)
);
-- Trigger for updated_at
CREATE OR REPLACE FUNCTION update_app_banners_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_app_banners_updated_at
BEFORE UPDATE ON app_banners
FOR EACH ROW
EXECUTE FUNCTION update_app_banners_updated_at();