🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
-- Create table for menu groups
|
||||
CREATE TABLE public.menu_groups (
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
color TEXT NOT NULL DEFAULT '#6366f1',
|
||||
order_index INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- Enable RLS
|
||||
ALTER TABLE public.menu_groups ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- Create policies for menu groups
|
||||
CREATE POLICY "Only admins can manage menu groups"
|
||||
ON public.menu_groups
|
||||
FOR ALL
|
||||
USING (has_role(auth.uid(), 'admin'::app_role));
|
||||
|
||||
-- Add group_id to interface_resources table
|
||||
ALTER TABLE public.interface_resources
|
||||
ADD COLUMN group_id UUID REFERENCES public.menu_groups(id);
|
||||
|
||||
-- Create trigger for updating updated_at
|
||||
CREATE OR REPLACE FUNCTION public.update_updated_at_column()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = now();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER update_menu_groups_updated_at
|
||||
BEFORE UPDATE ON public.menu_groups
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION public.update_updated_at_column();
|
||||
|
||||
-- Insert default menu groups
|
||||
INSERT INTO public.menu_groups (name, color, order_index) VALUES
|
||||
('Principal', '#6366f1', 0),
|
||||
('Administração', '#ef4444', 1);
|
||||
|
||||
-- Update existing interface resources to assign them to default group
|
||||
UPDATE public.interface_resources
|
||||
SET group_id = (SELECT id FROM public.menu_groups WHERE name = 'Principal' LIMIT 1)
|
||||
WHERE resource_key NOT IN ('admin', 'user-management');
|
||||
|
||||
UPDATE public.interface_resources
|
||||
SET group_id = (SELECT id FROM public.menu_groups WHERE name = 'Administração' LIMIT 1)
|
||||
WHERE resource_key IN ('admin', 'user-management');
|
||||
Reference in New Issue
Block a user