41 lines
1.3 KiB
PL/PgSQL
41 lines
1.3 KiB
PL/PgSQL
|
|
-- Criar tabela para armazenar prompts de instrução
|
|
CREATE TABLE public.prompts (
|
|
id uuid NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
name text NOT NULL,
|
|
content text NOT NULL,
|
|
created_at timestamp with time zone NOT NULL DEFAULT now(),
|
|
updated_at timestamp with time zone NOT NULL DEFAULT now(),
|
|
created_by uuid REFERENCES auth.users(id) NOT NULL
|
|
);
|
|
|
|
-- Adicionar RLS à tabela
|
|
ALTER TABLE public.prompts ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Políticas para prompts
|
|
CREATE POLICY "Users can view their own prompts" ON public.prompts
|
|
FOR SELECT USING (auth.uid() = created_by);
|
|
|
|
CREATE POLICY "Users can create their own prompts" ON public.prompts
|
|
FOR INSERT WITH CHECK (auth.uid() = created_by);
|
|
|
|
CREATE POLICY "Users can update their own prompts" ON public.prompts
|
|
FOR UPDATE USING (auth.uid() = created_by);
|
|
|
|
CREATE POLICY "Users can delete their own prompts" ON public.prompts
|
|
FOR DELETE USING (auth.uid() = created_by);
|
|
|
|
-- Trigger para atualizar updated_at automaticamente
|
|
CREATE OR REPLACE FUNCTION update_updated_at_prompts()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = now();
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER update_prompts_updated_at
|
|
BEFORE UPDATE ON public.prompts
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_updated_at_prompts();
|