-- 1) Add `updated_at` to shops (backfilled with default for existing rows)
alter table public.shops
add column if not exists updated_at timestamp with time zone
not null default (now() at time zone 'gmt-2'::text);
-- 2) (Re)create the updated_at trigger for shops
drop trigger if exists zz_handle_updated_at on public.shops;
create trigger zz_handle_updated_at
before update on public.shops
for each row
execute function moddatetime('updated_at');
-- 3) Drop the old view before recreating
drop view if exists public.shops_view;
-- 4) Extend the view with phone, computed address, created_at, updated_at
create or replace view public.shops_view as
select
s.id as shop_id,
s.code as shop_code,
s.name as shop_name,
-- new: expose phone
s.phone as shop_phone,
-- new: computed, gracefully joins address parts that exist
nullif(
trim(both ', ' from concat_ws(
', ',
nullif(s.address, ''),
nullif(concat_ws(' ', nullif(s.postal_code, ''), nullif(s.city, '')), ''),
nullif(s.province, '')
)),
''
) as shop_address,
c.id as company_id,
c.name as company_name,
c.created_by as company_created_by,
-- new: timestamps so you can sort by recency
s.created_at,
s.updated_at
from
public.shops s
join public.companies c on s.company = c.id;
-- 1) Add `updated_at` to shops (backfilled with default for existing rows)
alter table public.shops
add column if not exists updated_at timestamp with time zone
not null default (now() at time zone 'gmt-2'::text);
-- 2) (Re)create the updated_at trigger for shops
drop trigger if exists zz_handle_updated_at on public.shops;
create trigger zz_handle_updated_at
before update on public.shops
for each row
execute function moddatetime('updated_at');
-- 3) Drop the old view before recreating
drop view if exists public.shops_view;
-- 4) Extend the view with phone, computed address, created_at, updated_at
create or replace view public.shops_view as
select
s.id as shop_id,
s.code as shop_code,
s.name as shop_name,
-- new: expose phone
s.phone as shop_phone,
-- new: computed, gracefully joins address parts that exist
nullif(
trim(both ', ' from concat_ws(
', ',
nullif(s.address, ''),
nullif(concat_ws(' ', nullif(s.postal_code, ''), nullif(s.city, '')), ''),
nullif(s.province, '')
)),
''
) as shop_address,
c.id as company_id,
c.name as company_name,
c.created_by as company_created_by,
-- new: timestamps so you can sort by recency
s.created_at,
s.updated_at
from
public.shops s
join public.companies c on s.company = c.id;