-- Category type enum
create type category_type as enum (
  'income', 'bill', 'variable_expense', 'debt', 'saving', 'investment'
);

-- Categories table
create table categories (
  id          uuid primary key default gen_random_uuid(),
  user_id     uuid not null references auth.users(id) on delete cascade,
  name        text not null,
  type        category_type not null,
  icon        text,
  sort_order  int not null default 0,
  created_at  timestamptz not null default now(),
  updated_at  timestamptz not null default now()
);

create index categories_user_id_idx on categories(user_id);

alter table categories enable row level security;

create policy "Users can CRUD own categories"
  on categories for all
  using (user_id = auth.uid())
  with check (user_id = auth.uid());
