// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors
// SPDX-License-Identifier: Apache-2.0
/*
* Generated by @medplum/generator
* Do not edit manually.
*/
import type { PoolClient } from 'pg';
export async function run(client: PoolClient): Promise<void> {
const columns = [
['AllergyIntolerance', 'code', 'TEXT'],
['Location', 'name', 'TEXT'],
['Observation', 'comboCode', 'TEXT'],
['Observation', 'comboDataAbsentReason', 'TEXT'],
['Observation', 'comboValueConcept', 'TEXT'],
['Observation', 'comboValueQuantity', 'DOUBLE PRECISION'],
['Organization', 'name', 'TEXT'],
['Substance', 'code', 'TEXT'],
];
for (const [resourceType, columnName, columnType] of columns) {
await client.query(`DROP INDEX CONCURRENTLY IF EXISTS "${resourceType}_${columnName}_idx"`);
await client.query(`ALTER TABLE "${resourceType}" ALTER COLUMN "${columnName}" TYPE ${columnType}[] USING
CASE
WHEN "${columnName}" IS NOT NULL THEN ARRAY["${columnName}"]
ELSE NULL
END;`);
await client.query(
`CREATE INDEX CONCURRENTLY "${resourceType}_${columnName}_idx" ON "${resourceType}" USING gin("${columnName}")`
);
}
}