// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors
// SPDX-License-Identifier: Apache-2.0
import type { PoolClient } from 'pg';
import { prepareCustomMigrationJobData, runCustomMigration } from '../../workers/post-deploy-migration';
import * as fns from '../migrate-functions';
import type { MigrationActionResult } from '../types';
import type { CustomPostDeployMigration } from './types';
export const migration: CustomPostDeployMigration = {
type: 'custom',
prepareJobData: (asyncJob) => prepareCustomMigrationJobData(asyncJob),
run: async (repo, job, jobData) => runCustomMigration(repo, job, jobData, callback),
};
// prettier-ignore
async function callback(client: PoolClient, results: MigrationActionResult[]): Promise<void> {
await fns.query(client, results, `DROP TABLE IF EXISTS "ValueSetElement"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Account_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "AdverseEvent_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ActivityDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "AllergyIntolerance_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Appointment_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "AppointmentResponse_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "AuditEvent_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Basic_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Binary_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "BiologicallyDerivedProduct_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "BodyStructure_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Bundle_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CapabilityStatement_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CarePlan_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CareTeam_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CatalogEntry_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ChargeItem_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ChargeItemDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Claim_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ClaimResponse_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ClinicalImpression_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CodeSystem_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Communication_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CommunicationRequest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CompartmentDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Composition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ConceptMap_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Condition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Consent_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Contract_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Coverage_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CoverageEligibilityRequest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "CoverageEligibilityResponse_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DetectedIssue_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Device_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DeviceDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DeviceMetric_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DeviceRequest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DeviceUseStatement_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DiagnosticReport_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DocumentManifest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DocumentReference_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "EffectEvidenceSynthesis_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Encounter_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Endpoint_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "EnrollmentRequest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "EnrollmentResponse_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "EpisodeOfCare_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "EventDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Evidence_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "EvidenceVariable_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ExampleScenario_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ExplanationOfBenefit_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "FamilyMemberHistory_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Flag_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Goal_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "GraphDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Group_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "GuidanceResponse_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "HealthcareService_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ImagingStudy_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Immunization_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ImmunizationEvaluation_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ImmunizationRecommendation_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ImplementationGuide_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "InsurancePlan_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Invoice_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Library_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Linkage_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "List_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Location_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Measure_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MeasureReport_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Media_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Medication_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicationAdministration_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicationDispense_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicationKnowledge_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicationRequest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicationStatement_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProduct_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductAuthorization_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductContraindication_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductIndication_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductIngredient_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductInteraction_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductManufactured_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductPackaged_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductPharmaceutical_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MedicinalProductUndesirableEffect_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MessageDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MessageHeader_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "MolecularSequence_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "NamingSystem_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "NutritionOrder_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Observation_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ObservationDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "OperationDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "OperationOutcome_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Organization_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "OrganizationAffiliation_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Parameters_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Patient_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "PaymentNotice_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "PaymentReconciliation_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Person_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "PlanDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Practitioner_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "PractitionerRole_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Procedure_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Provenance_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Questionnaire_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "QuestionnaireResponse_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "RelatedPerson_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "RequestGroup_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ResearchDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ResearchElementDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ResearchStudy_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ResearchSubject_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "RiskAssessment_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "RiskEvidenceSynthesis_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Schedule_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SearchParameter_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ServiceRequest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Slot_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Specimen_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SpecimenDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "StructureDefinition_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "StructureMap_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Subscription_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Substance_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SubstanceNucleicAcid_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SubstancePolymer_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SubstanceProtein_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SubstanceReferenceInformation_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SubstanceSourceMaterial_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SubstanceSpecification_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SupplyDelivery_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SupplyRequest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Task_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "TerminologyCapabilities_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "TestReport_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "TestScript_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ValueSet_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "VerificationResult_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "VisionPrescription_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Project_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ClientApplication_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "User_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "ProjectMembership_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Bot_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Login_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "PasswordChangeRequest_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "JsonWebKey_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "AccessPolicy_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "UserConfiguration_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "BulkDataExport_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SmartAppLaunch_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "DomainConfiguration_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "AsyncJob_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "Agent_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "SubscriptionStatus_Token"`);
await fns.query(client, results, `DROP TABLE IF EXISTS "UserSecurityRequest_Token"`);
}