← back to Homesonspec

apps/workers/apply-lennar-images.sh

27 lines

#!/usr/bin/env bash
# Apply Mac-fetched Lennar images (/tmp/lennar-images.jsonl) to the Kamatera DB.
# Matches on (builderInventoryId, street) with an images='{}' guard so it ONLY fills
# currently-empty Lennar homes and never overwrites existing good images. [TK-10005]
set -euo pipefail
JSONL=/tmp/lennar-images.jsonl
[ -s "$JSONL" ] || { echo "no JSONL to apply"; exit 1; }
echo "shipping $(wc -l < "$JSONL") rows to Kamatera…"
gzip -c "$JSONL" | ssh root@45.61.58.125 'gunzip > /tmp/lennar-images.jsonl; cd /root/Projects/homesonspec && set -a; . .env; set +a; \
psql "$DATABASE_URL" -v ON_ERROR_STOP=1 <<SQL
CREATE TEMP TABLE _limg (j jsonb);
\copy _limg (j) FROM '"'"'/tmp/lennar-images.jsonl'"'"'
CREATE TEMP TABLE _lstage AS
  SELECT j->>'"'"'invId'"'"' AS inv, j->>'"'"'street'"'"' AS street,
         ARRAY(SELECT jsonb_array_elements_text(j->'"'"'images'"'"')) AS images
  FROM _limg;
-- de-dup: keep one image-set per (inv,street)
CREATE TEMP TABLE _lstage1 AS SELECT DISTINCT ON (inv,street) inv,street,images FROM _lstage;
WITH b AS (SELECT id FROM "Builder" WHERE name='"'"'Lennar'"'"')
UPDATE "InventoryHome" h SET images = s.images, "updatedAt"=now()
FROM _lstage1 s, b
WHERE h."builderId"=b.id AND h."builderInventoryId"=s.inv AND h.street=s.street
  AND h.images='"'"'{}'"'"' AND h.status='"'"'PUBLISHED'"'"';
SELECT '"'"'Lennar imaged now: '"'"'||count(*) filter (where images<>'"'"'{}'"'"')||'"'"'/'"'"'||count(*)||'"'"' ('"'"'||round(100.0*count(*) filter (where images<>'"'"'{}'"'"')/count(*),1)||'"'"'%)'"'"'
FROM "InventoryHome" h JOIN "Builder" b ON b.id=h."builderId" WHERE b.name='"'"'Lennar'"'"' AND h.status='"'"'PUBLISHED'"'"';
SQL'