-- 012_sellers.sql
-- CREATE TABLE sellers — кэш продавцов с Avito (компании и частные лица)
--
-- Dependencies: 002_core_tables.sql (listings table exists — FK будет в 013)
-- Apply after: 011_listings_alter.sql
-- Apply before: 013_listings_alter_seller.sql
--
-- Source: decisions/Schema_Avito_Houses_Listings_History.md sec 25 (NEW sellers table)
-- Note: logos НЕ сохраняем (требование 2026-05-23 — без картинок).
--
-- Идемпотентно: безопасно запускать повторно.

BEGIN;

CREATE TABLE IF NOT EXISTS sellers (
    id                bigserial PRIMARY KEY,
    source            text NOT NULL,                     -- 'avito' / 'cian'
    ext_seller_id     text,                              -- из seller.url ("/brands/domrf66")

    name              text NOT NULL,                     -- "Самолёт Плюс Екатеринбург"
    seller_type       text,                              -- "Компания" / "Частное лицо"
    on_platform_since text,                              -- "На Авито с июля 2012" (raw text, не дата)
    profile_url       text,                              -- "/brands/domrf66"
    -- logos НЕ сохраняем (user req: без картинок)

    raw_payload       jsonb,
    first_seen_at     timestamptz NOT NULL DEFAULT NOW(),
    last_seen_at      timestamptz NOT NULL DEFAULT NOW(),

    UNIQUE (source, ext_seller_id)
);

CREATE INDEX IF NOT EXISTS sellers_source_idx ON sellers (source, ext_seller_id);

COMMENT ON TABLE sellers IS
    'Кэш продавцов Avito (компании + частные лица). 1 запись на (source, ext_seller_id). '
    'Logos не сохраняются. Связь с listings через sellers.id (FK в 013_listings_alter_seller.sql).';
COMMENT ON COLUMN sellers.on_platform_since IS
    'Raw текст из Avito (напр. "На Авито с июля 2012"). Не парсим в дату — слишком вариативно.';

COMMIT;
