create type lens_display_type as enum ('table'); create table if not exists lenses ( id uuid not null primary key, name text not null, base_id uuid not null references bases(id) on delete cascade, class_oid oid not null, filter jsonb not null default '{}'::jsonb, order_by jsonb not null default '[]'::jsonb, display_type lens_display_type not null default 'table' ); create index on lenses (base_id); create table if not exists fields ( id uuid not null primary key, lens_id uuid not null references lenses(id) on delete cascade, name text not null, label text, field_type jsonb not null, width_px int not null default 200 );