1
0
mirror of https://github.com/immich-app/immich.git synced 2025-08-08 23:07:06 +02:00

refactor: repositories (#15561)

* refactor: version history repository

* refactor: oauth repository

* refactor: trash repository

* refactor: telemetry repository

* refactor: metadata repository

* refactor: cron repository

* refactor: map repository

* refactor: server-info repository

* refactor: album user repository

* refactor: notification repository
This commit is contained in:
Jason Rasmussen
2025-01-23 18:10:17 -05:00
committed by GitHub
parent 995314446b
commit 1869b1b41a
57 changed files with 372 additions and 469 deletions

View File

@ -1,4 +1,4 @@
import { ImmichTags } from 'src/interfaces/metadata.interface';
import { ImmichTags } from 'src/repositories/metadata.repository';
import { personStub } from 'test/fixtures/person.stub';
export const metadataStub = {

View File

@ -1,4 +1,4 @@
import { IAlbumUserRepository } from 'src/interfaces/album-user.interface';
import { IAlbumUserRepository } from 'src/types';
import { Mocked } from 'vitest';
export const newAlbumUserRepositoryMock = (): Mocked<IAlbumUserRepository> => {

View File

@ -1,4 +1,4 @@
import { ICronRepository } from 'src/interfaces/cron.interface';
import { ICronRepository } from 'src/types';
import { Mocked, vitest } from 'vitest';
export const newCronRepositoryMock = (): Mocked<ICronRepository> => {

View File

@ -1,4 +1,4 @@
import { IMapRepository } from 'src/interfaces/map.interface';
import { IMapRepository } from 'src/types';
import { Mocked } from 'vitest';
export const newMapRepositoryMock = (): Mocked<IMapRepository> => {

View File

@ -1,4 +1,4 @@
import { IMetadataRepository } from 'src/interfaces/metadata.interface';
import { IMetadataRepository } from 'src/types';
import { Mocked, vitest } from 'vitest';
export const newMetadataRepositoryMock = (): Mocked<IMetadataRepository> => {

View File

@ -1,4 +1,4 @@
import { INotificationRepository } from 'src/interfaces/notification.interface';
import { INotificationRepository } from 'src/types';
import { Mocked } from 'vitest';
export const newNotificationRepositoryMock = (): Mocked<INotificationRepository> => {

View File

@ -1,4 +1,4 @@
import { IOAuthRepository } from 'src/interfaces/oauth.interface';
import { IOAuthRepository } from 'src/types';
import { Mocked } from 'vitest';
export const newOAuthRepositoryMock = (): Mocked<IOAuthRepository> => {

View File

@ -1,4 +1,4 @@
import { IServerInfoRepository } from 'src/interfaces/server-info.interface';
import { IServerInfoRepository } from 'src/types';
import { Mocked, vitest } from 'vitest';
export const newServerInfoRepositoryMock = (): Mocked<IServerInfoRepository> => {

View File

@ -1,4 +1,4 @@
import { ITelemetryRepository } from 'src/interfaces/telemetry.interface';
import { ITelemetryRepository, RepositoryInterface } from 'src/types';
import { Mocked, vitest } from 'vitest';
const newMetricGroupMock = () => {
@ -10,7 +10,11 @@ const newMetricGroupMock = () => {
};
};
export const newTelemetryRepositoryMock = (): Mocked<ITelemetryRepository> => {
export type ITelemetryRepositoryMock = {
[K in keyof ITelemetryRepository]: Mocked<RepositoryInterface<ITelemetryRepository[K]>>;
};
export const newTelemetryRepositoryMock = (): ITelemetryRepositoryMock => {
return {
setup: vitest.fn(),
api: newMetricGroupMock(),

View File

@ -1,4 +1,4 @@
import { ITrashRepository } from 'src/interfaces/trash.interface';
import { ITrashRepository } from 'src/types';
import { Mocked, vitest } from 'vitest';
export const newTrashRepositoryMock = (): Mocked<ITrashRepository> => {

View File

@ -1,4 +1,4 @@
import { IVersionHistoryRepository } from 'src/interfaces/version-history.interface';
import { IVersionHistoryRepository } from 'src/types';
import { Mocked, vitest } from 'vitest';
export const newVersionHistoryRepositoryMock = (): Mocked<IVersionHistoryRepository> => {

View File

@ -2,24 +2,42 @@ import { ChildProcessWithoutNullStreams } from 'node:child_process';
import { Writable } from 'node:stream';
import { PNG } from 'pngjs';
import { ImmichWorker } from 'src/enum';
import { IMetadataRepository } from 'src/interfaces/metadata.interface';
import { AccessRepository } from 'src/repositories/access.repository';
import { ActivityRepository } from 'src/repositories/activity.repository';
import { AlbumUserRepository } from 'src/repositories/album-user.repository';
import { ApiKeyRepository } from 'src/repositories/api-key.repository';
import { AuditRepository } from 'src/repositories/audit.repository';
import { CronRepository } from 'src/repositories/cron.repository';
import { LoggingRepository } from 'src/repositories/logging.repository';
import { MapRepository } from 'src/repositories/map.repository';
import { MediaRepository } from 'src/repositories/media.repository';
import { MemoryRepository } from 'src/repositories/memory.repository';
import { MetadataRepository } from 'src/repositories/metadata.repository';
import { NotificationRepository } from 'src/repositories/notification.repository';
import { OAuthRepository } from 'src/repositories/oauth.repository';
import { ServerInfoRepository } from 'src/repositories/server-info.repository';
import { TelemetryRepository } from 'src/repositories/telemetry.repository';
import { TrashRepository } from 'src/repositories/trash.repository';
import { VersionHistoryRepository } from 'src/repositories/version-history.repository';
import { ViewRepository } from 'src/repositories/view-repository';
import { BaseService } from 'src/services/base.service';
import {
IAccessRepository,
IActivityRepository,
IAlbumUserRepository,
IApiKeyRepository,
IAuditRepository,
ICronRepository,
ILoggingRepository,
IMapRepository,
IMediaRepository,
IMemoryRepository,
IMetadataRepository,
INotificationRepository,
IOAuthRepository,
IServerInfoRepository,
ITrashRepository,
IVersionHistoryRepository,
IViewRepository,
} from 'src/types';
import { newAccessRepositoryMock } from 'test/repositories/access.repository.mock';
@ -66,7 +84,7 @@ import { Mocked, vitest } from 'vitest';
type Overrides = {
worker?: ImmichWorker;
metadataRepository?: IMetadataRepository;
metadataRepository?: MetadataRepository;
};
type BaseServiceArgs = ConstructorParameters<typeof BaseService>;
type Constructor<Type, Args extends Array<any>> = {
@ -125,10 +143,10 @@ export const newTestService = <T extends BaseService>(
activityMock as IActivityRepository as ActivityRepository,
auditMock as IAuditRepository as AuditRepository,
albumMock,
albumUserMock,
albumUserMock as IAlbumUserRepository as AlbumUserRepository,
assetMock,
configMock,
cronMock,
cronMock as ICronRepository as CronRepository,
cryptoMock,
databaseMock,
eventMock,
@ -136,28 +154,28 @@ export const newTestService = <T extends BaseService>(
keyMock as IApiKeyRepository as ApiKeyRepository,
libraryMock,
machineLearningMock,
mapMock,
mapMock as IMapRepository as MapRepository,
mediaMock as IMediaRepository as MediaRepository,
memoryMock as IMemoryRepository as MemoryRepository,
metadataMock,
metadataMock as IMetadataRepository as MetadataRepository,
moveMock,
notificationMock,
oauthMock,
notificationMock as INotificationRepository as NotificationRepository,
oauthMock as IOAuthRepository as OAuthRepository,
partnerMock,
personMock,
processMock,
searchMock,
serverInfoMock,
serverInfoMock as IServerInfoRepository as ServerInfoRepository,
sessionMock,
sharedLinkMock,
stackMock,
storageMock,
systemMock,
tagMock,
telemetryMock,
trashMock,
telemetryMock as unknown as TelemetryRepository,
trashMock as ITrashRepository as TrashRepository,
userMock,
versionHistoryMock,
versionHistoryMock as IVersionHistoryRepository as VersionHistoryRepository,
viewMock as IViewRepository as ViewRepository,
);