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 lens_selections ( id uuid not null primary key, lens_id uuid not null references lenses(id) on delete cascade, attr_filters jsonb not null default '[]'::jsonb, label text, field_type jsonb, visible boolean not null default true, width_px int not null default 200 );