🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
|
||||
-- Criar tabela para logs de backup
|
||||
CREATE TABLE public.backup_logs (
|
||||
id uuid NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
operation_type text NOT NULL CHECK (operation_type IN ('backup', 'restore')),
|
||||
status text NOT NULL DEFAULT 'in_progress' CHECK (status IN ('in_progress', 'completed', 'failed')),
|
||||
file_name text NOT NULL,
|
||||
file_size bigint,
|
||||
tables_count integer,
|
||||
records_count integer,
|
||||
started_at timestamp with time zone NOT NULL DEFAULT now(),
|
||||
completed_at timestamp with time zone,
|
||||
error_message text,
|
||||
created_by uuid REFERENCES auth.users(id) NOT NULL,
|
||||
created_at timestamp with time zone NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- Habilitar RLS
|
||||
ALTER TABLE public.backup_logs ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- Política para admins poderem gerenciar logs de backup
|
||||
CREATE POLICY "Only admins can manage backup logs"
|
||||
ON public.backup_logs
|
||||
FOR ALL
|
||||
USING (has_role(auth.uid(), 'admin'::app_role));
|
||||
|
||||
-- Função para atualizar updated_at
|
||||
CREATE OR REPLACE FUNCTION public.update_backup_logs_updated_at()
|
||||
RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $function$
|
||||
BEGIN
|
||||
NEW.completed_at = now();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$function$;
|
||||
|
||||
-- Trigger para atualizar completed_at quando status muda para completed ou failed
|
||||
CREATE TRIGGER update_backup_logs_completed_at
|
||||
BEFORE UPDATE ON public.backup_logs
|
||||
FOR EACH ROW
|
||||
WHEN (OLD.status = 'in_progress' AND NEW.status IN ('completed', 'failed'))
|
||||
EXECUTE FUNCTION public.update_backup_logs_updated_at();
|
||||
Reference in New Issue
Block a user