🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
-- Criar tabela para histórico de empréstimos de equipamentos
|
||||
CREATE TABLE public.equipamentos_emprestimos (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
equipamento_id UUID NOT NULL REFERENCES public.equipamentos(id) ON DELETE CASCADE,
|
||||
of_number TEXT,
|
||||
destino_outro TEXT,
|
||||
data_saida DATE NOT NULL,
|
||||
retirado_por UUID NOT NULL REFERENCES auth.users(id),
|
||||
data_retorno DATE,
|
||||
devolvido_por UUID REFERENCES auth.users(id),
|
||||
status TEXT NOT NULL DEFAULT 'emprestado' CHECK (status IN ('emprestado', 'devolvido')),
|
||||
observacoes TEXT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
|
||||
created_by UUID REFERENCES auth.users(id),
|
||||
|
||||
-- Constraint para garantir que pelo menos um destino seja preenchido
|
||||
CONSTRAINT check_destino CHECK (
|
||||
(of_number IS NOT NULL AND of_number != '') OR
|
||||
(destino_outro IS NOT NULL AND destino_outro != '')
|
||||
)
|
||||
);
|
||||
|
||||
-- Índices para melhorar performance
|
||||
CREATE INDEX idx_equipamentos_emprestimos_equipamento_id ON public.equipamentos_emprestimos(equipamento_id);
|
||||
CREATE INDEX idx_equipamentos_emprestimos_status ON public.equipamentos_emprestimos(status);
|
||||
CREATE INDEX idx_equipamentos_emprestimos_data_saida ON public.equipamentos_emprestimos(data_saida);
|
||||
|
||||
-- Trigger para atualizar updated_at
|
||||
CREATE OR REPLACE FUNCTION update_equipamentos_emprestimos_updated_at()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = now();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER update_equipamentos_emprestimos_updated_at
|
||||
BEFORE UPDATE ON public.equipamentos_emprestimos
|
||||
FOR EACH ROW EXECUTE FUNCTION update_equipamentos_emprestimos_updated_at();
|
||||
|
||||
-- Habilitar RLS
|
||||
ALTER TABLE public.equipamentos_emprestimos ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- Políticas RLS
|
||||
CREATE POLICY "Usuários autenticados podem visualizar empréstimos"
|
||||
ON public.equipamentos_emprestimos FOR SELECT
|
||||
USING (auth.uid() IS NOT NULL);
|
||||
|
||||
CREATE POLICY "Usuários autenticados podem criar empréstimos"
|
||||
ON public.equipamentos_emprestimos FOR INSERT
|
||||
WITH CHECK (auth.uid() IS NOT NULL);
|
||||
|
||||
CREATE POLICY "Usuários autenticados podem atualizar empréstimos"
|
||||
ON public.equipamentos_emprestimos FOR UPDATE
|
||||
USING (auth.uid() IS NOT NULL);
|
||||
|
||||
CREATE POLICY "Usuários autenticados podem deletar empréstimos"
|
||||
ON public.equipamentos_emprestimos FOR DELETE
|
||||
USING (auth.uid() IS NOT NULL);
|
||||
Reference in New Issue
Block a user