Personel Sayfası ve Uygulama renk değişiklikleri
This commit is contained in:
40
supabase/migrations/20240317000002_leave_balances.sql
Normal file
40
supabase/migrations/20240317000002_leave_balances.sql
Normal file
@@ -0,0 +1,40 @@
|
||||
-- Create leave_balances table
|
||||
CREATE TABLE public.leave_balances (
|
||||
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
employee_id UUID REFERENCES public.employees(id) ON DELETE CASCADE UNIQUE NOT NULL,
|
||||
total_days DECIMAL(5,2) DEFAULT 0 NOT NULL, -- Total accrued days
|
||||
used_days DECIMAL(5,2) DEFAULT 0 NOT NULL, -- Successfully used days
|
||||
pending_days DECIMAL(5,2) DEFAULT 0 NOT NULL, -- Days currently in pending status
|
||||
remaining_days DECIMAL(5,2) GENERATED ALWAYS AS (total_days - used_days) STORED,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
|
||||
);
|
||||
|
||||
-- RLS for leave_balances
|
||||
ALTER TABLE public.leave_balances ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
CREATE POLICY "Users can view their own leave balance"
|
||||
ON public.leave_balances
|
||||
FOR SELECT TO authenticated
|
||||
USING (
|
||||
employee_id IN (
|
||||
SELECT id FROM public.employees WHERE user_id = auth.uid()
|
||||
)
|
||||
);
|
||||
|
||||
-- Trigger to create a balance record when a new employee is added
|
||||
CREATE OR REPLACE FUNCTION public.handle_new_employee_balance()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
INSERT INTO public.leave_balances (employee_id, total_days)
|
||||
VALUES (NEW.id, 14); -- Defaulting to 14 days per year
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql SECURITY DEFINER;
|
||||
|
||||
CREATE TRIGGER on_employee_created
|
||||
AFTER INSERT ON public.employees
|
||||
FOR EACH ROW EXECUTE PROCEDURE public.handle_new_employee_balance();
|
||||
|
||||
-- Trigger updated_at for leave_balances
|
||||
CREATE TRIGGER update_leave_balances_modtime BEFORE UPDATE ON public.leave_balances FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();
|
||||
Reference in New Issue
Block a user