fix(msk): миграция 299 заводит схему msk_raw сама, а не полагается на прод
Some checks failed
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Failing after 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m12s
Some checks failed
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Failing after 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m12s
CI Trade-In падал до единого теста: «schema "msk_raw" does not exist», job backend-tests, run 10854. Схему и первые две таблицы (`batches`, `avito_cards`) заводили на проде руками 08.09 — сбор сырья стартовал раньше модели данных, и msk_raw сознательно жила вне линейки миграций. На чистой базе CI этого контекста нет, а 299 сразу создаёт таблицы внутри схемы и вешает внешний ключ на `msk_raw.batches`. DDL продовских объектов повторён в 299 идемпотентно, определения сняты `pg_dump -s -n msk_raw`, чтобы CI и прод не разъехались молча. На проде это no-op. Проверено на пустой базе migtest_msk: применяется с ON_ERROR_STOP=1, даёт все пять таблиц и четыре вью, повторное применение проходит без ошибок. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQ8jqr4SFirX5tFLwdSrXh
This commit is contained in:
parent
de5f4a32cd
commit
7b84e4d2a5
1 changed files with 47 additions and 0 deletions
|
|
@ -34,6 +34,53 @@
|
|||
|
||||
BEGIN;
|
||||
|
||||
-- Схема и две первые таблицы заводились на проде РУКАМИ 08.09, мимо линейки
|
||||
-- миграций: сбор сырья стартовал раньше, чем модель данных, и msk_raw сознательно
|
||||
-- жила вне приложения (её никто в проде не читает, переезжает одним
|
||||
-- `pg_dump -n msk_raw`). Из-за этого миграция роняла CI на чистой базе —
|
||||
-- «schema "msk_raw" does not exist», а до тестов дело не доходило вовсе.
|
||||
--
|
||||
-- Поэтому DDL продовских объектов повторён здесь идемпотентно: на проде это
|
||||
-- no-op (всё уже есть), на чистой базе — единственное место, где msk_raw
|
||||
-- появляется. Определения сняты с прода `pg_dump -s -n msk_raw`, чтобы CI и
|
||||
-- прод не разъехались молча; `batches` нужна и по существу — на неё ссылается
|
||||
-- внешний ключ всех трёх таблиц ниже.
|
||||
CREATE SCHEMA IF NOT EXISTS msk_raw;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS msk_raw.batches (
|
||||
batch_id text PRIMARY KEY,
|
||||
kind text NOT NULL DEFAULT 'serp',
|
||||
query text,
|
||||
started_at timestamptz,
|
||||
finished_at timestamptz,
|
||||
rows_sent integer,
|
||||
rows_new integer,
|
||||
notes text,
|
||||
uploaded_at timestamptz NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS msk_raw.avito_cards (
|
||||
id bigserial PRIMARY KEY,
|
||||
source_id bigint NOT NULL,
|
||||
observed_at timestamptz NOT NULL,
|
||||
batch_id text NOT NULL REFERENCES msk_raw.batches(batch_id),
|
||||
kind text NOT NULL DEFAULT 'serp',
|
||||
url text,
|
||||
price numeric,
|
||||
payload jsonb NOT NULL,
|
||||
UNIQUE (source_id, batch_id, kind)
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS avito_cards_observed_idx
|
||||
ON msk_raw.avito_cards (observed_at);
|
||||
CREATE INDEX IF NOT EXISTS avito_cards_payload_gin
|
||||
ON msk_raw.avito_cards USING gin (payload jsonb_path_ops);
|
||||
CREATE INDEX IF NOT EXISTS avito_cards_source_observed_idx
|
||||
ON msk_raw.avito_cards (source_id, observed_at DESC);
|
||||
|
||||
CREATE OR REPLACE VIEW msk_raw.avito_latest AS
|
||||
SELECT DISTINCT ON (source_id) id, source_id, observed_at, batch_id, kind, url, price, payload
|
||||
FROM msk_raw.avito_cards ORDER BY source_id, observed_at DESC;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS msk_raw.cian_cards (
|
||||
id bigserial PRIMARY KEY,
|
||||
source_id bigint NOT NULL,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue