mirror of
https://github.com/immich-app/immich.git
synced 2026-03-01 18:19:10 +03:00
fix(server): drop old extension (#18400)
This commit is contained in:
@@ -77,14 +77,14 @@ export class DatabaseRepository {
|
||||
return getVectorExtension(this.db);
|
||||
}
|
||||
|
||||
@GenerateSql({ params: [DatabaseExtension.VECTORS] })
|
||||
async getExtensionVersion(extension: DatabaseExtension): Promise<ExtensionVersion> {
|
||||
@GenerateSql({ params: [[DatabaseExtension.VECTORS]] })
|
||||
async getExtensionVersions(extensions: readonly DatabaseExtension[]): Promise<ExtensionVersion[]> {
|
||||
const { rows } = await sql<ExtensionVersion>`
|
||||
SELECT default_version as "availableVersion", installed_version as "installedVersion"
|
||||
SELECT name, default_version as "availableVersion", installed_version as "installedVersion"
|
||||
FROM pg_available_extensions
|
||||
WHERE name = ${extension}
|
||||
WHERE name in (${sql.join(extensions)})
|
||||
`.execute(this.db);
|
||||
return rows[0] ?? { availableVersion: null, installedVersion: null };
|
||||
return rows;
|
||||
}
|
||||
|
||||
getExtensionVersionRange(extension: VectorExtension): string {
|
||||
@@ -115,6 +115,7 @@ export class DatabaseRepository {
|
||||
}
|
||||
|
||||
async createExtension(extension: DatabaseExtension): Promise<void> {
|
||||
this.logger.log(`Creating ${EXTENSION_NAMES[extension]} extension`);
|
||||
await sql`CREATE EXTENSION IF NOT EXISTS ${sql.raw(extension)} CASCADE`.execute(this.db);
|
||||
if (extension === DatabaseExtension.VECTORCHORD) {
|
||||
const dbName = sql.table(await this.getDatabaseName());
|
||||
@@ -125,8 +126,13 @@ export class DatabaseRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async dropExtension(extension: DatabaseExtension): Promise<void> {
|
||||
this.logger.log(`Dropping ${EXTENSION_NAMES[extension]} extension`);
|
||||
await sql`DROP EXTENSION IF EXISTS ${sql.raw(extension)}`.execute(this.db);
|
||||
}
|
||||
|
||||
async updateVectorExtension(extension: VectorExtension, targetVersion?: string): Promise<VectorUpdateResult> {
|
||||
const { availableVersion, installedVersion } = await this.getExtensionVersion(extension);
|
||||
const [{ availableVersion, installedVersion }] = await this.getExtensionVersions([extension]);
|
||||
if (!installedVersion) {
|
||||
throw new Error(`${EXTENSION_NAMES[extension]} extension is not installed`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user