diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d831c2d195..e7afbe639d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -480,11 +480,11 @@ importers: specifier: ^9.0.2 version: 9.0.3 kysely: - specifier: 0.28.16 - version: 0.28.16 + specifier: 0.29.0 + version: 0.29.0 kysely-postgres-js: specifier: ^3.0.0 - version: 3.0.0(kysely@0.28.16)(postgres@3.4.9) + version: 3.0.0(kysely@0.29.0)(postgres@3.4.9) lodash: specifier: ^4.17.21 version: 4.18.1 @@ -505,7 +505,7 @@ importers: version: 6.2.0(@nestjs/common@11.1.19(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) nestjs-kysely: specifier: 3.1.2 - version: 3.1.2(@nestjs/common@11.1.19(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(kysely@0.28.16)(reflect-metadata@0.2.2) + version: 3.1.2(@nestjs/common@11.1.19(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(kysely@0.29.0)(reflect-metadata@0.2.2) nestjs-otel: specifier: ^8.0.0 version: 8.0.2(@nestjs/common@11.1.19(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19) @@ -8727,6 +8727,10 @@ packages: resolution: {integrity: sha512-3i5pmOiZvMDj00qhrIVbH0AnioVTx22DMP7Vn5At4yJO46iy+FM8Y/g61ltenLVSo3fiO8h8Q3QOFgf/gQ72ww==} engines: {node: '>=20.0.0'} + kysely@0.29.0: + resolution: {integrity: sha512-LrQfPUeTW7MXbMvT62moEMnpMTuj9TO3lqjCeLKjM975PJ4Alrl/43f2tlDX7xOsNptKgH4LSNGwIbXwEkLg4g==} + engines: {node: '>=22.0.0'} + langium@3.3.1: resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} engines: {node: '>=16.0.0'} @@ -21736,8 +21740,16 @@ snapshots: optionalDependencies: postgres: 3.4.9 + kysely-postgres-js@3.0.0(kysely@0.29.0)(postgres@3.4.9): + dependencies: + kysely: 0.29.0 + optionalDependencies: + postgres: 3.4.9 + kysely@0.28.16: {} + kysely@0.29.0: {} + langium@3.3.1: dependencies: chevrotain: 11.0.3 @@ -22809,11 +22821,11 @@ snapshots: reflect-metadata: 0.2.2 rxjs: 7.8.2 - nestjs-kysely@3.1.2(@nestjs/common@11.1.19(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(kysely@0.28.16)(reflect-metadata@0.2.2): + nestjs-kysely@3.1.2(@nestjs/common@11.1.19(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(kysely@0.29.0)(reflect-metadata@0.2.2): dependencies: '@nestjs/common': 11.1.19(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/core': 11.1.19(@nestjs/common@11.1.19(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.19)(@nestjs/websockets@11.1.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) - kysely: 0.28.16 + kysely: 0.29.0 reflect-metadata: 0.2.2 tslib: 2.8.1 diff --git a/server/package.json b/server/package.json index 904fda4637..5d9cdca116 100644 --- a/server/package.json +++ b/server/package.json @@ -84,7 +84,7 @@ "jose": "^6.0.0", "js-yaml": "^4.1.0", "jsonwebtoken": "^9.0.2", - "kysely": "0.28.16", + "kysely": "0.29.0", "kysely-postgres-js": "^3.0.0", "lodash": "^4.17.21", "luxon": "^3.4.2", diff --git a/server/src/repositories/asset.repository.ts b/server/src/repositories/asset.repository.ts index 0b706cacf9..f2d928c591 100644 --- a/server/src/repositories/asset.repository.ts +++ b/server/src/repositories/asset.repository.ts @@ -765,6 +765,7 @@ export class AssetRepository { getTimeBucket(timeBucket: string, options: TimeBucketOptions, auth: AuthDto) { const order = options.order ?? 'desc'; const query = this.db + .$pickTables<'asset' | 'asset_exif' | 'album_asset' | 'stack'>() .with('cte', (qb) => qb .selectFrom('asset') diff --git a/server/src/repositories/database.repository.ts b/server/src/repositories/database.repository.ts index a86e929ef4..4ced3d8aab 100644 --- a/server/src/repositories/database.repository.ts +++ b/server/src/repositories/database.repository.ts @@ -1,7 +1,8 @@ import { schemaDiff, schemaFromCode, schemaFromDatabase } from '@immich/sql-tools'; import { Injectable } from '@nestjs/common'; import AsyncLock from 'async-lock'; -import { FileMigrationProvider, Kysely, Migrator, sql } from 'kysely'; +import { Kysely, sql } from 'kysely'; +import { FileMigrationProvider, Migrator } from 'kysely/migration'; import { InjectKysely } from 'nestjs-kysely'; import { readdir } from 'node:fs/promises'; import { join } from 'node:path'; diff --git a/server/src/schema/tables/notification.table.ts b/server/src/schema/tables/notification.table.ts index 6bf65808f1..fd1afc35c7 100644 --- a/server/src/schema/tables/notification.table.ts +++ b/server/src/schema/tables/notification.table.ts @@ -41,7 +41,7 @@ export class NotificationTable { type!: Generated; @Column({ type: 'jsonb', nullable: true }) - data!: any | null; + data!: unknown | null; @Column() title!: string; diff --git a/server/src/utils/database.ts b/server/src/utils/database.ts index bc530f2b03..dab3446c0d 100644 --- a/server/src/utils/database.ts +++ b/server/src/utils/database.ts @@ -373,6 +373,7 @@ export function searchAssetBuilder(kysely: Kysely, options: AssetSearchBuild const visibility = options.visibility == null ? AssetVisibility.Timeline : options.visibility; return kysely + .$pickTables<'asset' | 'tag_asset' | 'asset_exif' | 'asset_file' | 'album_asset' | 'ocr_search' | 'smart_search'>() .withPlugin(joinDeduplicationPlugin) .selectFrom('asset') .where('asset.visibility', '=', visibility)