refactor, удалены интерфейс БД из-за слабой необходимости

This commit is contained in:
Artem Tsyrulnikov
2026-01-18 13:08:04 +03:00
parent 049024ebe8
commit 4705e88663
8 changed files with 193 additions and 427 deletions

View File

@@ -83,9 +83,27 @@ async def upgrade(db: BaseDBAsyncClient) -> str:
op.creative_id, op.purchase_channel_id, op.post_id, op.project_id
FROM "old_placement" op;
-- Шаг 6: Обновить subscription (placement_id -> publication_id)
-- Шаг 6: Обновить foreign keys для таблиц, ссылающихся на old_placement
-- 6.1: Обновить subscription (placement_id -> publication_id)
-- Удалить constraint ДО переименования колонки
ALTER TABLE "subscription"
DROP CONSTRAINT IF EXISTS "subscription_placement_id_fkey";
-- Переименовать колонку
ALTER TABLE "subscription" RENAME COLUMN "placement_id" TO "publication_id";
-- 6.2: Обновить workspace_user_permission_scope.placement_id
-- Удалить старый foreign key constraint ДО обновления данных
ALTER TABLE "workspace_user_permission_scope"
DROP CONSTRAINT IF EXISTS "workspace_user_permission_scope_placement_id_fkey";
-- Обновить данные: старые placement_id -> новые placement_id (через purchase_channel_id)
UPDATE "workspace_user_permission_scope" wups
SET placement_id = op.purchase_channel_id
FROM "old_placement" op
WHERE wups.placement_id = op.id;
-- Шаг 7: Создать индексы и constraints
CREATE INDEX "idx_placement_project_4155ce"
ON "placement" ("project_id", "status");
@@ -108,6 +126,11 @@ async def upgrade(db: BaseDBAsyncClient) -> str:
CREATE UNIQUE INDEX "uid_subscriptio_publica_578bfb"
ON "subscription" ("publication_id", "telegram_user_id");
ALTER TABLE "workspace_user_permission_scope"
ADD CONSTRAINT "fk_workspac_placemen_8c5d3f2a"
FOREIGN KEY ("placement_id")
REFERENCES "placement" ("id") ON DELETE CASCADE;
-- Шаг 8: Добавить комментарии
COMMENT ON TABLE "placement"
IS 'Размещение, управляемое пользователем (бывший PurchaseChannel + Purchase)';
@@ -262,10 +285,28 @@ async def downgrade(db: BaseDBAsyncClient) -> str:
pub.creative_id, pub.placement_id, pub.post_id, pub.project_id
FROM "publication" pub;
-- Шаг 8: Обновить subscription (publication_id -> placement_id)
-- Шаг 8: Обновить foreign keys обратно
-- 8.1: Обновить subscription (publication_id -> placement_id)
-- Удалить новый foreign key constraint
ALTER TABLE "subscription"
DROP CONSTRAINT IF EXISTS "fk_subscrip_publicat_1959be9e";
-- Переименовать колонку обратно
ALTER TABLE "subscription" RENAME COLUMN "publication_id" TO "placement_id";
-- Шаг 9: Создать индексы
-- 8.2: Обновить workspace_user_permission_scope.placement_id обратно
-- Удалить constraint на новый placement
ALTER TABLE "workspace_user_permission_scope"
DROP CONSTRAINT IF EXISTS "fk_workspac_placemen_8c5d3f2a";
-- Обновить данные обратно: новые placement_id -> старые placement_id
UPDATE "workspace_user_permission_scope" wups
SET placement_id = pub.id
FROM "publication" pub
WHERE wups.placement_id = pub.placement_id;
-- Шаг 9: Создать индексы и constraints
CREATE INDEX "idx_purchase_project_status" ON "purchase" ("project_id", "status");
CREATE INDEX "idx_placement_purchas_61f9e6"
ON "placement" ("purchase_channel_id");
@@ -279,6 +320,11 @@ async def downgrade(db: BaseDBAsyncClient) -> str:
CREATE UNIQUE INDEX "uid_subscriptio_placeme_75b40b"
ON "subscription" ("placement_id", "telegram_user_id");
ALTER TABLE "workspace_user_permission_scope"
ADD CONSTRAINT "fk_workspac_placemen_8c5d3f2a"
FOREIGN KEY ("placement_id")
REFERENCES "placement" ("id") ON DELETE CASCADE;
-- Шаг 10: Удалить новые таблицы
DROP TABLE IF EXISTS "publication";
DROP TABLE IF EXISTS "new_placement";