-- Expense categories table CREATE TABLE public.expense_categories ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name TEXT NOT NULL, description TEXT, color TEXT, is_active BOOLEAN NOT NULL DEFAULT true, sort_order INTEGER DEFAULT 0, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); -- Expense subcategories table CREATE TABLE public.expense_subcategories ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), category_id UUID REFERENCES public.expense_categories(id) ON DELETE CASCADE NOT NULL, name TEXT NOT NULL, description TEXT, is_active BOOLEAN NOT NULL DEFAULT true, sort_order INTEGER DEFAULT 0, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); -- Enable RLS ALTER TABLE public.expense_categories ENABLE ROW LEVEL SECURITY; ALTER TABLE public.expense_subcategories ENABLE ROW LEVEL SECURITY; -- RLS policies - authenticated users can manage CREATE POLICY "Authenticated users can manage expense categories" ON public.expense_categories FOR ALL TO authenticated USING (true) WITH CHECK (true); CREATE POLICY "Authenticated users can manage expense subcategories" ON public.expense_subcategories FOR ALL TO authenticated USING (true) WITH CHECK (true); -- Seed default categories INSERT INTO public.expense_categories (name, sort_order) VALUES ('Management', 1), ('Maintenance', 2), ('Labor', 3), ('Materials', 4), ('Service', 5), ('Expense', 6), ('Administrative', 7), ('Utilities', 8);