mirror of
https://github.com/immich-app/immich.git
synced 2025-12-26 17:25:00 +03:00
refactor: repositories (#16036)
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import { IAlbumRepository } from 'src/interfaces/album.interface';
|
||||
import { AlbumRepository } from 'src/repositories/album.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newAlbumRepositoryMock = (): Mocked<IAlbumRepository> => {
|
||||
export const newAlbumRepositoryMock = (): Mocked<RepositoryInterface<AlbumRepository>> => {
|
||||
return {
|
||||
getById: vitest.fn(),
|
||||
getByAssetId: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { IAssetRepository } from 'src/interfaces/asset.interface';
|
||||
import { AssetRepository } from 'src/repositories/asset.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newAssetRepositoryMock = (): Mocked<IAssetRepository> => {
|
||||
export const newAssetRepositoryMock = (): Mocked<RepositoryInterface<AssetRepository>> => {
|
||||
return {
|
||||
create: vitest.fn(),
|
||||
upsertExif: vitest.fn(),
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { ImmichEnvironment, ImmichWorker } from 'src/enum';
|
||||
import { DatabaseExtension } from 'src/interfaces/database.interface';
|
||||
import { DatabaseExtension, ImmichEnvironment, ImmichWorker } from 'src/enum';
|
||||
import { ConfigRepository, EnvData } from 'src/repositories/config.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { ICryptoRepository } from 'src/interfaces/crypto.interface';
|
||||
import { CryptoRepository } from 'src/repositories/crypto.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newCryptoRepositoryMock = (): Mocked<ICryptoRepository> => {
|
||||
export const newCryptoRepositoryMock = (): Mocked<RepositoryInterface<CryptoRepository>> => {
|
||||
return {
|
||||
randomUUID: vitest.fn().mockReturnValue('random-uuid'),
|
||||
randomBytes: vitest.fn().mockReturnValue(Buffer.from('random-bytes', 'utf8')),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { IDatabaseRepository } from 'src/interfaces/database.interface';
|
||||
import { DatabaseRepository } from 'src/repositories/database.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newDatabaseRepositoryMock = (): Mocked<IDatabaseRepository> => {
|
||||
export const newDatabaseRepositoryMock = (): Mocked<RepositoryInterface<DatabaseRepository>> => {
|
||||
return {
|
||||
init: vitest.fn(),
|
||||
shutdown: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { ILibraryRepository } from 'src/interfaces/library.interface';
|
||||
import { LibraryRepository } from 'src/repositories/library.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newLibraryRepositoryMock = (): Mocked<ILibraryRepository> => {
|
||||
export const newLibraryRepositoryMock = (): Mocked<RepositoryInterface<LibraryRepository>> => {
|
||||
return {
|
||||
get: vitest.fn(),
|
||||
create: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { IMoveRepository } from 'src/interfaces/move.interface';
|
||||
import { MoveRepository } from 'src/repositories/move.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newMoveRepositoryMock = (): Mocked<IMoveRepository> => {
|
||||
export const newMoveRepositoryMock = (): Mocked<RepositoryInterface<MoveRepository>> => {
|
||||
return {
|
||||
create: vitest.fn(),
|
||||
getByEntity: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { IPartnerRepository } from 'src/interfaces/partner.interface';
|
||||
import { PartnerRepository } from 'src/repositories/partner.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newPartnerRepositoryMock = (): Mocked<IPartnerRepository> => {
|
||||
export const newPartnerRepositoryMock = (): Mocked<RepositoryInterface<PartnerRepository>> => {
|
||||
return {
|
||||
create: vitest.fn(),
|
||||
remove: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { IPersonRepository } from 'src/interfaces/person.interface';
|
||||
import { PersonRepository } from 'src/repositories/person.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newPersonRepositoryMock = (): Mocked<IPersonRepository> => {
|
||||
export const newPersonRepositoryMock = (): Mocked<RepositoryInterface<PersonRepository>> => {
|
||||
return {
|
||||
getById: vitest.fn(),
|
||||
getAll: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { ISearchRepository } from 'src/interfaces/search.interface';
|
||||
import { SearchRepository } from 'src/repositories/search.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newSearchRepositoryMock = (): Mocked<ISearchRepository> => {
|
||||
export const newSearchRepositoryMock = (): Mocked<RepositoryInterface<SearchRepository>> => {
|
||||
return {
|
||||
searchMetadata: vitest.fn(),
|
||||
searchSmart: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { ISharedLinkRepository } from 'src/interfaces/shared-link.interface';
|
||||
import { SharedLinkRepository } from 'src/repositories/shared-link.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newSharedLinkRepositoryMock = (): Mocked<ISharedLinkRepository> => {
|
||||
export const newSharedLinkRepositoryMock = (): Mocked<RepositoryInterface<SharedLinkRepository>> => {
|
||||
return {
|
||||
getAll: vitest.fn(),
|
||||
get: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { IStackRepository } from 'src/interfaces/stack.interface';
|
||||
import { StackRepository } from 'src/repositories/stack.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newStackRepositoryMock = (): Mocked<IStackRepository> => {
|
||||
export const newStackRepositoryMock = (): Mocked<RepositoryInterface<StackRepository>> => {
|
||||
return {
|
||||
search: vitest.fn(),
|
||||
create: vitest.fn(),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { WatchOptions } from 'chokidar';
|
||||
import { StorageCore } from 'src/cores/storage.core';
|
||||
import { IStorageRepository, WatchEvents } from 'src/interfaces/storage.interface';
|
||||
import { StorageRepository, WatchEvents } from 'src/repositories/storage.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
interface MockWatcherOptions {
|
||||
@@ -39,7 +40,7 @@ export const makeMockWatcher =
|
||||
return () => Promise.resolve();
|
||||
};
|
||||
|
||||
export const newStorageRepositoryMock = (reset = true): Mocked<IStorageRepository> => {
|
||||
export const newStorageRepositoryMock = (reset = true): Mocked<RepositoryInterface<StorageRepository>> => {
|
||||
if (reset) {
|
||||
StorageCore.reset();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { ITagRepository } from 'src/interfaces/tag.interface';
|
||||
import { TagRepository } from 'src/repositories/tag.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newTagRepositoryMock = (): Mocked<ITagRepository> => {
|
||||
export const newTagRepositoryMock = (): Mocked<RepositoryInterface<TagRepository>> => {
|
||||
return {
|
||||
getAll: vitest.fn(),
|
||||
getByValue: vitest.fn(),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { IUserRepository } from 'src/interfaces/user.interface';
|
||||
import { UserRepository } from 'src/repositories/user.repository';
|
||||
import { RepositoryInterface } from 'src/types';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const newUserRepositoryMock = (): Mocked<IUserRepository> => {
|
||||
export const newUserRepositoryMock = (): Mocked<RepositoryInterface<UserRepository>> => {
|
||||
return {
|
||||
get: vitest.fn(),
|
||||
getAdmin: vitest.fn(),
|
||||
|
||||
@@ -2,16 +2,14 @@ import { ChildProcessWithoutNullStreams } from 'node:child_process';
|
||||
import { Writable } from 'node:stream';
|
||||
import { PNG } from 'pngjs';
|
||||
import { ImmichWorker } from 'src/enum';
|
||||
import { IAlbumRepository } from 'src/interfaces/album.interface';
|
||||
import { IAssetRepository } from 'src/interfaces/asset.interface';
|
||||
import { ICryptoRepository } from 'src/interfaces/crypto.interface';
|
||||
import { IEventRepository } from 'src/interfaces/event.interface';
|
||||
import { IMachineLearningRepository } from 'src/interfaces/machine-learning.interface';
|
||||
import { IUserRepository } from 'src/interfaces/user.interface';
|
||||
import { AccessRepository } from 'src/repositories/access.repository';
|
||||
import { ActivityRepository } from 'src/repositories/activity.repository';
|
||||
import { AlbumUserRepository } from 'src/repositories/album-user.repository';
|
||||
import { AlbumRepository } from 'src/repositories/album.repository';
|
||||
import { ApiKeyRepository } from 'src/repositories/api-key.repository';
|
||||
import { AssetRepository } from 'src/repositories/asset.repository';
|
||||
import { AuditRepository } from 'src/repositories/audit.repository';
|
||||
import { ConfigRepository } from 'src/repositories/config.repository';
|
||||
import { CronRepository } from 'src/repositories/cron.repository';
|
||||
@@ -40,6 +38,7 @@ import { SystemMetadataRepository } from 'src/repositories/system-metadata.repos
|
||||
import { TagRepository } from 'src/repositories/tag.repository';
|
||||
import { TelemetryRepository } from 'src/repositories/telemetry.repository';
|
||||
import { TrashRepository } from 'src/repositories/trash.repository';
|
||||
import { UserRepository } from 'src/repositories/user.repository';
|
||||
import { VersionHistoryRepository } from 'src/repositories/version-history.repository';
|
||||
import { ViewRepository } from 'src/repositories/view-repository';
|
||||
import { BaseService } from 'src/services/base.service';
|
||||
@@ -100,14 +99,14 @@ type IAccessRepository = { [K in keyof AccessRepository]: RepositoryInterface<Ac
|
||||
export type ServiceMocks = {
|
||||
access: IAccessRepositoryMock;
|
||||
activity: Mocked<RepositoryInterface<ActivityRepository>>;
|
||||
album: Mocked<IAlbumRepository>;
|
||||
album: Mocked<RepositoryInterface<AlbumRepository>>;
|
||||
albumUser: Mocked<RepositoryInterface<AlbumUserRepository>>;
|
||||
apiKey: Mocked<RepositoryInterface<ApiKeyRepository>>;
|
||||
audit: Mocked<RepositoryInterface<AuditRepository>>;
|
||||
asset: Mocked<IAssetRepository>;
|
||||
asset: Mocked<RepositoryInterface<AssetRepository>>;
|
||||
config: Mocked<RepositoryInterface<ConfigRepository>>;
|
||||
cron: Mocked<RepositoryInterface<CronRepository>>;
|
||||
crypto: Mocked<ICryptoRepository>;
|
||||
crypto: Mocked<RepositoryInterface<CryptoRepository>>;
|
||||
database: Mocked<RepositoryInterface<DatabaseRepository>>;
|
||||
event: Mocked<IEventRepository>;
|
||||
job: Mocked<RepositoryInterface<JobRepository>>;
|
||||
@@ -134,7 +133,7 @@ export type ServiceMocks = {
|
||||
tag: Mocked<RepositoryInterface<TagRepository>>;
|
||||
telemetry: ITelemetryRepositoryMock;
|
||||
trash: Mocked<RepositoryInterface<TrashRepository>>;
|
||||
user: Mocked<IUserRepository>;
|
||||
user: Mocked<RepositoryInterface<UserRepository>>;
|
||||
versionHistory: Mocked<RepositoryInterface<VersionHistoryRepository>>;
|
||||
view: Mocked<RepositoryInterface<ViewRepository>>;
|
||||
};
|
||||
@@ -192,39 +191,39 @@ export const newTestService = <T extends BaseService>(
|
||||
accessMock as IAccessRepository as AccessRepository,
|
||||
activityMock as RepositoryInterface<ActivityRepository> as ActivityRepository,
|
||||
auditMock as RepositoryInterface<AuditRepository> as AuditRepository,
|
||||
albumMock,
|
||||
albumMock as RepositoryInterface<AlbumRepository> as AlbumRepository,
|
||||
albumUserMock as RepositoryInterface<AlbumUserRepository> as AlbumUserRepository,
|
||||
assetMock,
|
||||
assetMock as RepositoryInterface<AssetRepository> as AssetRepository,
|
||||
configMock,
|
||||
cronMock as RepositoryInterface<CronRepository> as CronRepository,
|
||||
cryptoMock as RepositoryInterface<CryptoRepository> as CryptoRepository,
|
||||
databaseMock,
|
||||
databaseMock as RepositoryInterface<DatabaseRepository> as DatabaseRepository,
|
||||
eventMock,
|
||||
jobMock,
|
||||
apiKeyMock as RepositoryInterface<ApiKeyRepository> as ApiKeyRepository,
|
||||
libraryMock,
|
||||
libraryMock as RepositoryInterface<LibraryRepository> as LibraryRepository,
|
||||
machineLearningMock,
|
||||
mapMock as RepositoryInterface<MapRepository> as MapRepository,
|
||||
mediaMock as RepositoryInterface<MediaRepository> as MediaRepository,
|
||||
memoryMock as RepositoryInterface<MemoryRepository> as MemoryRepository,
|
||||
metadataMock as RepositoryInterface<MetadataRepository> as MetadataRepository,
|
||||
moveMock,
|
||||
moveMock as RepositoryInterface<MoveRepository> as MoveRepository,
|
||||
notificationMock as RepositoryInterface<NotificationRepository> as NotificationRepository,
|
||||
oauthMock as RepositoryInterface<OAuthRepository> as OAuthRepository,
|
||||
partnerMock,
|
||||
personMock,
|
||||
partnerMock as RepositoryInterface<PartnerRepository> as PartnerRepository,
|
||||
personMock as RepositoryInterface<PersonRepository> as PersonRepository,
|
||||
processMock as RepositoryInterface<ProcessRepository> as ProcessRepository,
|
||||
searchMock,
|
||||
searchMock as RepositoryInterface<SearchRepository> as SearchRepository,
|
||||
serverInfoMock as RepositoryInterface<ServerInfoRepository> as ServerInfoRepository,
|
||||
sessionMock as RepositoryInterface<SessionRepository> as SessionRepository,
|
||||
sharedLinkMock,
|
||||
stackMock,
|
||||
storageMock,
|
||||
sharedLinkMock as RepositoryInterface<SharedLinkRepository> as SharedLinkRepository,
|
||||
stackMock as RepositoryInterface<StackRepository> as StackRepository,
|
||||
storageMock as RepositoryInterface<StorageRepository> as StorageRepository,
|
||||
systemMock as RepositoryInterface<SystemMetadataRepository> as SystemMetadataRepository,
|
||||
tagMock,
|
||||
tagMock as RepositoryInterface<TagRepository> as TagRepository,
|
||||
telemetryMock as unknown as TelemetryRepository,
|
||||
trashMock as RepositoryInterface<TrashRepository> as TrashRepository,
|
||||
userMock,
|
||||
userMock as RepositoryInterface<UserRepository> as UserRepository,
|
||||
versionHistoryMock as RepositoryInterface<VersionHistoryRepository> as VersionHistoryRepository,
|
||||
viewMock as RepositoryInterface<ViewRepository> as ViewRepository,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user