mirror of https://github.com/kortix-ai/suna.git
42 lines
1.5 KiB
PL/PgSQL
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; |