60 lines
1.7 KiB
PL/PgSQL
60 lines
1.7 KiB
PL/PgSQL
|
|
-- Criar tabela para cadastro de peças
|
|
CREATE TABLE public.pecas (
|
|
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
of_number TEXT NOT NULL,
|
|
etapa_fase TEXT,
|
|
marca TEXT NOT NULL,
|
|
descricao TEXT,
|
|
quantidade INTEGER DEFAULT 0,
|
|
peso_unitario NUMERIC(10,3) DEFAULT 0,
|
|
peso_total NUMERIC(10,3) DEFAULT 0,
|
|
tratamento_superficial TEXT,
|
|
material TEXT,
|
|
perfil_principal TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
user_id UUID REFERENCES auth.users
|
|
);
|
|
|
|
-- Habilitar RLS (Row Level Security)
|
|
ALTER TABLE public.pecas ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Política para permitir que usuários vejam todas as peças
|
|
CREATE POLICY "Users can view all pecas"
|
|
ON public.pecas
|
|
FOR SELECT
|
|
USING (true);
|
|
|
|
-- Política para permitir que usuários criem peças
|
|
CREATE POLICY "Users can create pecas"
|
|
ON public.pecas
|
|
FOR INSERT
|
|
WITH CHECK (auth.uid() = user_id);
|
|
|
|
-- Política para permitir que usuários atualizem suas próprias peças
|
|
CREATE POLICY "Users can update their own pecas"
|
|
ON public.pecas
|
|
FOR UPDATE
|
|
USING (auth.uid() = user_id);
|
|
|
|
-- Política para permitir que usuários deletem suas próprias peças
|
|
CREATE POLICY "Users can delete their own pecas"
|
|
ON public.pecas
|
|
FOR DELETE
|
|
USING (auth.uid() = user_id);
|
|
|
|
-- Trigger para atualizar updated_at automaticamente
|
|
CREATE OR REPLACE FUNCTION update_pecas_updated_at()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = now();
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER update_pecas_updated_at_trigger
|
|
BEFORE UPDATE ON public.pecas
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_pecas_updated_at();
|