From edb59cf16c33c7d4d2b91bd67e4789e362d2966a Mon Sep 17 00:00:00 2001 From: pashko Date: Tue, 28 Jul 2026 12:43:51 +0800 Subject: [PATCH] Add mhd_task/local/clean_eds_tnt.sql --- mhd_task/local/clean_eds_tnt.sql | 187 +++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 mhd_task/local/clean_eds_tnt.sql diff --git a/mhd_task/local/clean_eds_tnt.sql b/mhd_task/local/clean_eds_tnt.sql new file mode 100644 index 0000000..1ed03b0 --- /dev/null +++ b/mhd_task/local/clean_eds_tnt.sql @@ -0,0 +1,187 @@ +-- ============================================================ +-- Скрипт приведения схемы eds_tnt (с проверкой существования) +-- PostgreSQL 16 +-- ============================================================ + +DO $$ +DECLARE + v_obj_name text; + v_obj_type text; + v_sql text; +BEGIN + RAISE NOTICE '=== Начало приведения схемы eds_tnt ==='; + + -- Разрешенные таблицы + CREATE TEMP TABLE IF NOT EXISTS allowed_tables AS + SELECT unnest(ARRAY[ + 'acceptanceinventorymodels', + 'AccessCrcModel', + 'AccessGroupModels', + 'AccountingSystemResendingModel', + 'archiveactdestroymodels', + 'archiveautoconnectwithdoctyperesultmodels', + 'AttachmentForIndexingModel', + 'AttachmentGarbageModel', + 'AttachmentModel', + 'AutoMigrationInfoModel', + 'BarcodeOldBarcodePair', + 'collectionpreferencesmodels', + 'costassetmodels', + 'DeferredReportModel', + 'DeletedModel', + 'DictionarySynchronizeInfoModel', + 'DocumentModel', + 'DvscResendingModel', + 'EdsDocumentModelTask', + 'EdsIntegrationSystemUploadingModel', + 'edsagreementdocumentmodels', + 'edsdocumentmodels', + 'edseventauditmodels', + 'edsloginauditmodels', + 'edsrepoinfos', + 'FileCacheModel', + 'IndexesFullTextSearchModel', + 'informationmodels', + 'integrationsynchronizemodels', + 'legacyrepoinfos', + 'lockmodels', + 'LoggerModel', + 'MSedLogModel', + 'MzedEdsDocumentModel', + 'MzedPackageDocumentModel', + 'nomenclaturefoldermodels', + 'notificationinfomodels', + 'NotificationSettingModel', + 'PackageAggregationModel', + 'PackageDocumentModelTask', + 'packagedocumenteventmodels', + 'packagedocumentmodels', + 'replacementtaskmodels', + 'RelationModel', + 'savedfiltersetmodels', + 'ScanFileModel', + 'ScanHistoryModel', + 'scanuploadingmodel', + 'sendintegrationstatus', + 'signatureverification', + 'StorageTempFileModel', + 'SystemConfigurationModel', + 'transferofcasetasklifecyclemodels', + 'UnionAttachmentsTaskModel', + 'UzdoFileModel', + 'UzdoSynchronizationStatusModel', + 'VersionModel', + 'versionedbarcodes', + 'withdrawtaskmodels' + ]) AS name; + + -- Разрешенные вьюхи + CREATE TEMP TABLE IF NOT EXISTS allowed_views AS + SELECT unnest(ARRAY[ + 'CountersMap', + 'EdsJournalMap', + 'EdsJournalMapTask', + 'NotificationInfoMap', + 'View_ArchiveAutoConnectWithDocTypeJournalMap', + 'View_ArchiveAutoConnectWithDocTypeReportMap', + 'View_ArchiveDepartmentMap', + 'View_ArchiveDocumentMap', + 'View_ArchiveExpiredCaseMap', + 'View_ArchiveFormMap', + 'View_ArchiveJournalMap', + 'View_ArchiveNomenclatureMap', + 'View_ArchiveNomenclatureParentsMap', + 'View_ArchiveNomenclatureTreeMap', + 'View_ArchiveTomeChildMap', + 'View_ArchiveTomeMap', + 'View_AuditRoleReportMap', + 'View_DeferredReportMap', + 'View_EdsBarcodeMap', + 'View_EdsCopyReportMap', + 'View_EdsCopyReportReflectedInAcsMap', + 'View_EdsCuratorsReportMap', + 'View_EdsDeadlineExceededReportMap', + 'View_EdsElectronicRegisterMap', + 'View_EdsEventAuditMap', + 'View_EdsIntegrationSystemUploadingMap', + 'View_EdsLogicDeleteDocsMap', + 'View_EdsLoginAuditMap', + 'View_EdsOstDocumentsReportMap', + 'View_EdsReportTranssAndProcessStatisticMap', + 'View_EdsReportTranssAndProcessStatisticReprocMap', + 'View_EdsReturnDocToCuratorsMap', + 'View_EdsSmodReportMap', + 'View_EdsTnfPerformerStatisticReportMap', + 'View_EdsWithdrawMap', + 'View_EfEdsDocumentMap', + 'View_ReadyReportsMap', + 'View_ScanUploadingDocumentMap', + 'View_SearchByRegistryMap', + 'View_TransferJournalMap', + 'View_TransferOfCaseTaskMap', + 'View_UzdoDocumentMap' + ]) AS name; + + -- ============================================================ + -- Удаление лишних таблиц + -- ============================================================ + RAISE NOTICE '--- Удаление лишних таблиц ---'; + + FOR v_obj_name IN ( + SELECT tablename + FROM pg_catalog.pg_tables + WHERE schemaname = 'eds_tnt' + AND tablename NOT IN (SELECT name FROM allowed_tables) + ) LOOP + EXECUTE format('DROP TABLE IF EXISTS eds_tnt.%I CASCADE;', v_obj_name); + RAISE NOTICE ' Удалена таблица: %', v_obj_name; + END LOOP; + + -- ============================================================ + -- Удаление лишних вьюх + -- ============================================================ + RAISE NOTICE '--- Удаление лишних вьюх ---'; + + FOR v_obj_name IN ( + SELECT viewname + FROM pg_catalog.pg_views + WHERE schemaname = 'eds_tnt' + AND viewname NOT IN (SELECT name FROM allowed_views) + ) LOOP + EXECUTE format('DROP VIEW IF EXISTS eds_tnt.%I CASCADE;', v_obj_name); + RAISE NOTICE ' Удалена вьюха: %', v_obj_name; + END LOOP; + + -- ============================================================ + -- Очистка временных таблиц + -- ============================================================ + DROP TABLE IF EXISTS allowed_tables; + DROP TABLE IF EXISTS allowed_views; + + -- ============================================================ + -- Финальный отчет + -- ============================================================ + RAISE NOTICE '=== ИТОГОВЫЙ СОСТАВ ==='; + + RAISE NOTICE '--- Таблицы ---'; + FOR v_obj_name IN ( + SELECT tablename + FROM pg_catalog.pg_tables + WHERE schemaname = 'eds_tnt' + ORDER BY tablename + ) LOOP + RAISE NOTICE ' %', v_obj_name; + END LOOP; + + RAISE NOTICE '--- Вьюхи ---'; + FOR v_obj_name IN ( + SELECT viewname + FROM pg_catalog.pg_views + WHERE schemaname = 'eds_tnt' + ORDER BY viewname + ) LOOP + RAISE NOTICE ' %', v_obj_name; + END LOOP; + + RAISE NOTICE '=== ГОТОВО ==='; +END $$; \ No newline at end of file