diff --git a/mobile/openapi/doc/CreateLibraryDto.md b/mobile/openapi/doc/CreateLibraryDto.md index 01a2a0f917..f7d5c0ecfe 100644 Binary files a/mobile/openapi/doc/CreateLibraryDto.md and b/mobile/openapi/doc/CreateLibraryDto.md differ diff --git a/mobile/openapi/doc/UpdateLibraryDto.md b/mobile/openapi/doc/UpdateLibraryDto.md index 0f0e2652b8..432e2aee41 100644 Binary files a/mobile/openapi/doc/UpdateLibraryDto.md and b/mobile/openapi/doc/UpdateLibraryDto.md differ diff --git a/mobile/openapi/lib/model/create_library_dto.dart b/mobile/openapi/lib/model/create_library_dto.dart index 93fb89b701..532ddd68e3 100644 Binary files a/mobile/openapi/lib/model/create_library_dto.dart and b/mobile/openapi/lib/model/create_library_dto.dart differ diff --git a/mobile/openapi/lib/model/update_library_dto.dart b/mobile/openapi/lib/model/update_library_dto.dart index b870f240fe..f197ca8599 100644 Binary files a/mobile/openapi/lib/model/update_library_dto.dart and b/mobile/openapi/lib/model/update_library_dto.dart differ diff --git a/mobile/openapi/test/create_library_dto_test.dart b/mobile/openapi/test/create_library_dto_test.dart index 1dd77af251..eedb0d59d2 100644 Binary files a/mobile/openapi/test/create_library_dto_test.dart and b/mobile/openapi/test/create_library_dto_test.dart differ diff --git a/mobile/openapi/test/update_library_dto_test.dart b/mobile/openapi/test/update_library_dto_test.dart index 222eb333bc..0db376dddb 100644 Binary files a/mobile/openapi/test/update_library_dto_test.dart and b/mobile/openapi/test/update_library_dto_test.dart differ diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index e87e55958a..ac8634766a 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -7708,9 +7708,6 @@ }, "type": "array" }, - "isVisible": { - "type": "boolean" - }, "name": { "type": "string" }, @@ -10741,9 +10738,6 @@ }, "type": "array" }, - "isVisible": { - "type": "boolean" - }, "name": { "type": "string" } diff --git a/open-api/typescript-sdk/src/fetch-client.ts b/open-api/typescript-sdk/src/fetch-client.ts index cbe9e5b1f4..d6a2b2529f 100644 --- a/open-api/typescript-sdk/src/fetch-client.ts +++ b/open-api/typescript-sdk/src/fetch-client.ts @@ -442,7 +442,6 @@ export type LibraryResponseDto = { export type CreateLibraryDto = { exclusionPatterns?: string[]; importPaths?: string[]; - isVisible?: boolean; name?: string; ownerId: string; "type": LibraryType; @@ -450,7 +449,6 @@ export type CreateLibraryDto = { export type UpdateLibraryDto = { exclusionPatterns?: string[]; importPaths?: string[]; - isVisible?: boolean; name?: string; }; export type ScanLibraryDto = { diff --git a/server/src/cores/user.core.ts b/server/src/cores/user.core.ts index e8596db3e7..db2a9c780c 100644 --- a/server/src/cores/user.core.ts +++ b/server/src/cores/user.core.ts @@ -101,7 +101,6 @@ export class UserCore { type: LibraryType.UPLOAD, importPaths: [], exclusionPatterns: [], - isVisible: true, }); return userEntity; diff --git a/server/src/dtos/library.dto.ts b/server/src/dtos/library.dto.ts index b693d35adf..045aaecf54 100644 --- a/server/src/dtos/library.dto.ts +++ b/server/src/dtos/library.dto.ts @@ -16,9 +16,6 @@ export class CreateLibraryDto { @IsNotEmpty() name?: string; - @ValidateBoolean({ optional: true }) - isVisible?: boolean; - @Optional() @IsString({ each: true }) @IsNotEmpty({ each: true }) @@ -40,9 +37,6 @@ export class UpdateLibraryDto { @IsNotEmpty() name?: string; - @ValidateBoolean({ optional: true }) - isVisible?: boolean; - @Optional() @IsString({ each: true }) @IsNotEmpty({ each: true }) diff --git a/server/src/entities/library.entity.ts b/server/src/entities/library.entity.ts index 8be560a889..56e62dd062 100644 --- a/server/src/entities/library.entity.ts +++ b/server/src/entities/library.entity.ts @@ -50,9 +50,6 @@ export class LibraryEntity { @Column({ type: 'timestamptz', nullable: true }) refreshedAt!: Date | null; - - @Column({ type: 'boolean', default: true }) - isVisible!: boolean; } export enum LibraryType { diff --git a/server/src/migrations/1715798702876-RemoveLibraryIsVisible.ts b/server/src/migrations/1715798702876-RemoveLibraryIsVisible.ts new file mode 100644 index 0000000000..45f5248c1a --- /dev/null +++ b/server/src/migrations/1715798702876-RemoveLibraryIsVisible.ts @@ -0,0 +1,14 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class RemoveLibraryIsVisible1715798702876 implements MigrationInterface { + name = 'RemoveLibraryIsVisible1715798702876' + + public async up(queryRunner: QueryRunner): Promise<void> { + await queryRunner.query(`ALTER TABLE "libraries" DROP COLUMN "isVisible"`); + } + + public async down(queryRunner: QueryRunner): Promise<void> { + await queryRunner.query(`ALTER TABLE "libraries" ADD "isVisible" boolean NOT NULL DEFAULT true`); + } + +} diff --git a/server/src/queries/library.repository.sql b/server/src/queries/library.repository.sql index 93a6fc97fb..3e655d6506 100644 --- a/server/src/queries/library.repository.sql +++ b/server/src/queries/library.repository.sql @@ -16,7 +16,6 @@ FROM "LibraryEntity"."updatedAt" AS "LibraryEntity_updatedAt", "LibraryEntity"."deletedAt" AS "LibraryEntity_deletedAt", "LibraryEntity"."refreshedAt" AS "LibraryEntity_refreshedAt", - "LibraryEntity"."isVisible" AS "LibraryEntity_isVisible", "LibraryEntity__LibraryEntity_owner"."id" AS "LibraryEntity__LibraryEntity_owner_id", "LibraryEntity__LibraryEntity_owner"."name" AS "LibraryEntity__LibraryEntity_owner_name", "LibraryEntity__LibraryEntity_owner"."avatarColor" AS "LibraryEntity__LibraryEntity_owner_avatarColor", @@ -89,8 +88,7 @@ SELECT "LibraryEntity"."createdAt" AS "LibraryEntity_createdAt", "LibraryEntity"."updatedAt" AS "LibraryEntity_updatedAt", "LibraryEntity"."deletedAt" AS "LibraryEntity_deletedAt", - "LibraryEntity"."refreshedAt" AS "LibraryEntity_refreshedAt", - "LibraryEntity"."isVisible" AS "LibraryEntity_isVisible" + "LibraryEntity"."refreshedAt" AS "LibraryEntity_refreshedAt" FROM "libraries" "LibraryEntity" WHERE @@ -132,7 +130,6 @@ SELECT "LibraryEntity"."updatedAt" AS "LibraryEntity_updatedAt", "LibraryEntity"."deletedAt" AS "LibraryEntity_deletedAt", "LibraryEntity"."refreshedAt" AS "LibraryEntity_refreshedAt", - "LibraryEntity"."isVisible" AS "LibraryEntity_isVisible", "LibraryEntity__LibraryEntity_owner"."id" AS "LibraryEntity__LibraryEntity_owner_id", "LibraryEntity__LibraryEntity_owner"."name" AS "LibraryEntity__LibraryEntity_owner_name", "LibraryEntity__LibraryEntity_owner"."avatarColor" AS "LibraryEntity__LibraryEntity_owner_avatarColor", @@ -156,12 +153,7 @@ FROM "LibraryEntity__LibraryEntity_owner"."deletedAt" IS NULL ) WHERE - ( - ( - ("LibraryEntity"."ownerId" = $1) - AND ("LibraryEntity"."isVisible" = $2) - ) - ) + ((("LibraryEntity"."ownerId" = $1))) AND ("LibraryEntity"."deletedAt" IS NULL) ORDER BY "LibraryEntity"."createdAt" ASC @@ -178,7 +170,6 @@ SELECT "LibraryEntity"."updatedAt" AS "LibraryEntity_updatedAt", "LibraryEntity"."deletedAt" AS "LibraryEntity_deletedAt", "LibraryEntity"."refreshedAt" AS "LibraryEntity_refreshedAt", - "LibraryEntity"."isVisible" AS "LibraryEntity_isVisible", "LibraryEntity__LibraryEntity_owner"."id" AS "LibraryEntity__LibraryEntity_owner_id", "LibraryEntity__LibraryEntity_owner"."name" AS "LibraryEntity__LibraryEntity_owner_name", "LibraryEntity__LibraryEntity_owner"."avatarColor" AS "LibraryEntity__LibraryEntity_owner_avatarColor", @@ -218,7 +209,6 @@ SELECT "LibraryEntity"."updatedAt" AS "LibraryEntity_updatedAt", "LibraryEntity"."deletedAt" AS "LibraryEntity_deletedAt", "LibraryEntity"."refreshedAt" AS "LibraryEntity_refreshedAt", - "LibraryEntity"."isVisible" AS "LibraryEntity_isVisible", "LibraryEntity__LibraryEntity_owner"."id" AS "LibraryEntity__LibraryEntity_owner_id", "LibraryEntity__LibraryEntity_owner"."name" AS "LibraryEntity__LibraryEntity_owner_name", "LibraryEntity__LibraryEntity_owner"."avatarColor" AS "LibraryEntity__LibraryEntity_owner_avatarColor", @@ -239,10 +229,7 @@ FROM "libraries" "LibraryEntity" LEFT JOIN "users" "LibraryEntity__LibraryEntity_owner" ON "LibraryEntity__LibraryEntity_owner"."id" = "LibraryEntity"."ownerId" WHERE - ( - ("LibraryEntity"."isVisible" = $1) - AND (NOT ("LibraryEntity"."deletedAt" IS NULL)) - ) + ((NOT ("LibraryEntity"."deletedAt" IS NULL))) ORDER BY "LibraryEntity"."createdAt" ASC @@ -258,7 +245,6 @@ SELECT "libraries"."updatedAt" AS "libraries_updatedAt", "libraries"."deletedAt" AS "libraries_deletedAt", "libraries"."refreshedAt" AS "libraries_refreshedAt", - "libraries"."isVisible" AS "libraries_isVisible", COUNT("assets"."id") FILTER ( WHERE "assets"."type" = 'IMAGE' diff --git a/server/src/repositories/library.repository.ts b/server/src/repositories/library.repository.ts index b0350c14ec..25eb010356 100644 --- a/server/src/repositories/library.repository.ts +++ b/server/src/repositories/library.repository.ts @@ -67,7 +67,6 @@ export class LibraryRepository implements ILibraryRepository { return this.repository.find({ where: { ownerId, - isVisible: true, type, }, relations: { @@ -97,7 +96,6 @@ export class LibraryRepository implements ILibraryRepository { getAllDeleted(): Promise<LibraryEntity[]> { return this.repository.find({ where: { - isVisible: true, deletedAt: Not(IsNull()), }, relations: { diff --git a/server/src/services/asset-v1.service.ts b/server/src/services/asset-v1.service.ts index 9667730fb3..bd6f540061 100644 --- a/server/src/services/asset-v1.service.ts +++ b/server/src/services/asset-v1.service.ts @@ -259,7 +259,6 @@ export class AssetServiceV1 { type: LibraryType.UPLOAD, importPaths: [], exclusionPatterns: [], - isVisible: true, }); } diff --git a/server/src/services/library.service.spec.ts b/server/src/services/library.service.spec.ts index f987fd1b57..fa45341784 100644 --- a/server/src/services/library.service.spec.ts +++ b/server/src/services/library.service.spec.ts @@ -830,7 +830,6 @@ describe(LibraryService.name, () => { type: LibraryType.EXTERNAL, importPaths: [], exclusionPatterns: [], - isVisible: true, }), ); }); @@ -860,37 +859,6 @@ describe(LibraryService.name, () => { type: LibraryType.EXTERNAL, importPaths: [], exclusionPatterns: [], - isVisible: true, - }), - ); - }); - - it('should create invisible', async () => { - libraryMock.create.mockResolvedValue(libraryStub.externalLibrary1); - await expect( - sut.create({ ownerId: authStub.admin.user.id, type: LibraryType.EXTERNAL, isVisible: false }), - ).resolves.toEqual( - expect.objectContaining({ - id: libraryStub.externalLibrary1.id, - type: LibraryType.EXTERNAL, - name: libraryStub.externalLibrary1.name, - ownerId: libraryStub.externalLibrary1.ownerId, - assetCount: 0, - importPaths: [], - exclusionPatterns: [], - createdAt: libraryStub.externalLibrary1.createdAt, - updatedAt: libraryStub.externalLibrary1.updatedAt, - refreshedAt: null, - }), - ); - - expect(libraryMock.create).toHaveBeenCalledWith( - expect.objectContaining({ - name: expect.any(String), - type: LibraryType.EXTERNAL, - importPaths: [], - exclusionPatterns: [], - isVisible: false, }), ); }); @@ -924,7 +892,6 @@ describe(LibraryService.name, () => { type: LibraryType.EXTERNAL, importPaths: ['/data/images', '/data/videos'], exclusionPatterns: [], - isVisible: true, }), ); }); @@ -972,7 +939,6 @@ describe(LibraryService.name, () => { type: LibraryType.EXTERNAL, importPaths: [], exclusionPatterns: ['*.tmp', '*.bak'], - isVisible: true, }), ); }); @@ -1002,7 +968,6 @@ describe(LibraryService.name, () => { type: LibraryType.UPLOAD, importPaths: [], exclusionPatterns: [], - isVisible: true, }), ); }); @@ -1032,7 +997,6 @@ describe(LibraryService.name, () => { type: LibraryType.UPLOAD, importPaths: [], exclusionPatterns: [], - isVisible: true, }), ); }); diff --git a/server/src/services/library.service.ts b/server/src/services/library.service.ts index a0d9b70d65..3c6e26a315 100644 --- a/server/src/services/library.service.ts +++ b/server/src/services/library.service.ts @@ -271,7 +271,6 @@ export class LibraryService { type: dto.type, importPaths: dto.importPaths ?? [], exclusionPatterns: dto.exclusionPatterns ?? [], - isVisible: dto.isVisible ?? true, }); this.logger.log(`Creating ${dto.type} library for ${dto.ownerId}}`); diff --git a/server/test/fixtures/library.stub.ts b/server/test/fixtures/library.stub.ts index dde250a7a1..bb95439d1c 100644 --- a/server/test/fixtures/library.stub.ts +++ b/server/test/fixtures/library.stub.ts @@ -16,7 +16,6 @@ export const libraryStub = { createdAt: new Date('2022-01-01'), updatedAt: new Date('2022-01-01'), refreshedAt: null, - isVisible: true, exclusionPatterns: [], }), externalLibrary1: Object.freeze<LibraryEntity>({ @@ -30,7 +29,6 @@ export const libraryStub = { createdAt: new Date('2023-01-01'), updatedAt: new Date('2023-01-01'), refreshedAt: null, - isVisible: true, exclusionPatterns: [], }), externalLibrary2: Object.freeze<LibraryEntity>({ @@ -44,7 +42,6 @@ export const libraryStub = { createdAt: new Date('2021-01-01'), updatedAt: new Date('2022-01-01'), refreshedAt: null, - isVisible: true, exclusionPatterns: [], }), externalLibraryWithImportPaths1: Object.freeze<LibraryEntity>({ @@ -58,7 +55,6 @@ export const libraryStub = { createdAt: new Date('2023-01-01'), updatedAt: new Date('2023-01-01'), refreshedAt: null, - isVisible: true, exclusionPatterns: [], }), externalLibraryWithImportPaths2: Object.freeze<LibraryEntity>({ @@ -72,7 +68,6 @@ export const libraryStub = { createdAt: new Date('2023-01-01'), updatedAt: new Date('2023-01-01'), refreshedAt: null, - isVisible: true, exclusionPatterns: [], }), externalLibraryWithExclusionPattern: Object.freeze<LibraryEntity>({ @@ -86,7 +81,6 @@ export const libraryStub = { createdAt: new Date('2023-01-01'), updatedAt: new Date('2023-01-01'), refreshedAt: null, - isVisible: true, exclusionPatterns: ['**/dir1/**'], }), patternPath: Object.freeze<LibraryEntity>({ @@ -100,7 +94,6 @@ export const libraryStub = { createdAt: new Date('2023-01-01'), updatedAt: new Date('2023-01-01'), refreshedAt: null, - isVisible: true, exclusionPatterns: ['**/dir1/**'], }), hasImmichPaths: Object.freeze<LibraryEntity>({ @@ -114,7 +107,6 @@ export const libraryStub = { createdAt: new Date('2023-01-01'), updatedAt: new Date('2023-01-01'), refreshedAt: null, - isVisible: true, exclusionPatterns: ['**/dir1/**'], }), };