suna/backend/supabase/migrations/20250819233248_template_sha...

42 lines
1.5 KiB
PL/PgSQL

BEGIN;
CREATE TABLE IF NOT EXISTS template_share_links (
share_id VARCHAR(12) PRIMARY KEY,
template_id UUID NOT NULL REFERENCES agent_templates(template_id) ON DELETE CASCADE,
created_by UUID NOT NULL REFERENCES basejump.accounts(id) ON DELETE CASCADE,
created_at TIMESTAMPTZ DEFAULT NOW(),
views_count INTEGER DEFAULT 0,
last_viewed_at TIMESTAMPTZ,
metadata JSONB DEFAULT '{}'::jsonb
);
CREATE INDEX IF NOT EXISTS idx_template_share_links_template_id ON template_share_links(template_id);
CREATE INDEX IF NOT EXISTS idx_template_share_links_created_by ON template_share_links(created_by);
CREATE INDEX IF NOT EXISTS idx_template_share_links_created_at ON template_share_links(created_at DESC);
ALTER TABLE template_share_links ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Share links are publicly viewable"
ON template_share_links FOR SELECT
USING (true);
CREATE POLICY "Template creators can create share links"
ON template_share_links FOR INSERT
WITH CHECK (
created_by = auth.uid()
AND EXISTS (
SELECT 1 FROM agent_templates
WHERE template_id = template_share_links.template_id
AND creator_id = auth.uid()
)
);
CREATE POLICY "Share link creators can update their links"
ON template_share_links FOR UPDATE
USING (created_by = auth.uid());
CREATE POLICY "Share link creators can delete their links"
ON template_share_links FOR DELETE
USING (created_by = auth.uid());
COMMIT;