Skip to content

Commit

Permalink
chore(server): use absolute import paths (#8080)
Browse files Browse the repository at this point in the history
update server to use absolute import paths
  • Loading branch information
danieldietzler committed Mar 20, 2024
1 parent 591a641 commit 30f499c
Show file tree
Hide file tree
Showing 347 changed files with 1,946 additions and 2,258 deletions.
30 changes: 30 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"editor.formatOnSave": true,
"[javascript][typescript][css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"editor.formatOnSave": true
},
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode",
"editor.tabSize": 2
},
"svelte.enable-ts-plugin": true,
"eslint.validate": [
"javascript",
"svelte"
],
"typescript.preferences.importModuleSpecifier": "non-relative",
"[dart]": {
"editor.formatOnSave": true,
"editor.selectionHighlight": false,
"editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.suggestSelection": "first",
"editor.tabCompletion": "onlySnippets",
"editor.wordBasedSuggestions": "off",
"editor.defaultFormatter": "Dart-Code.dart-code"
},
"cSpell.words": [
"immich"
],
}
1 change: 1 addition & 0 deletions server/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@ module.exports = {
'@typescript-eslint/require-await': 'error',
curly: 2,
'prettier/prettier': 0,
'no-restricted-imports': ['error', { patterns: [{ group: ['.*'], message: 'Relative imports are not allowed.' }] }],
},
};
2 changes: 1 addition & 1 deletion server/e2e/client/asset-api.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AssetResponseDto } from '@app/domain';
import { AssetResponseDto } from 'src/domain/asset/response-dto/asset-response.dto';
import request from 'supertest';

export const assetApi = {
Expand Down
5 changes: 3 additions & 2 deletions server/e2e/client/auth-api.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { LoginResponseDto, UserResponseDto } from '@app/domain';
import { adminSignupStub, loginResponseStub, loginStub } from '@test';
import { LoginResponseDto } from 'src/domain/auth/auth.dto';
import { UserResponseDto } from 'src/domain/user/response-dto/user-response.dto';
import request from 'supertest';
import { adminSignupStub, loginResponseStub, loginStub } from 'test/fixtures/auth.stub';

export const authApi = {
adminSignUp: async (server: any) => {
Expand Down
6 changes: 3 additions & 3 deletions server/e2e/client/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { assetApi } from './asset-api';
import { authApi } from './auth-api';
import { libraryApi } from './library-api';
import { assetApi } from 'e2e/client/asset-api';
import { authApi } from 'e2e/client/auth-api';
import { libraryApi } from 'e2e/client/library-api';

export const api = {
authApi,
Expand Down
2 changes: 1 addition & 1 deletion server/e2e/client/library-api.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CreateLibraryDto, LibraryResponseDto, ScanLibraryDto } from '@app/domain';
import { CreateLibraryDto, LibraryResponseDto, ScanLibraryDto } from 'src/domain/library/library.dto';
import request from 'supertest';

export const libraryApi = {
Expand Down
6 changes: 2 additions & 4 deletions server/e2e/jobs/jest-e2e.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
],
"coverageDirectory": "./coverage",
"moduleNameMapper": {
"^@test(|/.*)$": "<rootDir>/test/$1",
"^@app/immich(|/.*)$": "<rootDir>/src/immich/$1",
"^@app/infra(|/.*)$": "<rootDir>/src/infra/$1",
"^@app/domain(|/.*)$": "<rootDir>/src/domain/$1"
"^test(|/.*)$": "<rootDir>/test/$1",
"^src(|/.*)$": "<rootDir>/src/$1"
}
}
12 changes: 8 additions & 4 deletions server/e2e/jobs/specs/library-watcher.e2e-spec.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
import { LibraryResponseDto, LibraryService, LoginResponseDto, StorageEventType } from '@app/domain';
import { AssetType, LibraryType } from '@app/infra/entities';
import { api } from 'e2e/client';
import fs from 'node:fs/promises';
import path from 'node:path';
import { LoginResponseDto } from 'src/domain/auth/auth.dto';
import { LibraryResponseDto } from 'src/domain/library/library.dto';
import { LibraryService } from 'src/domain/library/library.service';
import { StorageEventType } from 'src/domain/repositories/storage.repository';
import { AssetType } from 'src/infra/entities/asset.entity';
import { LibraryType } from 'src/infra/entities/library.entity';
import {
IMMICH_TEST_ASSET_PATH,
IMMICH_TEST_ASSET_TEMP_PATH,
restoreTempFolder,
testApp,
waitForEvent,
} from '../../../src/test-utils/utils';
import { api } from '../../client';
} from 'src/test-utils/utils';

describe(`Library watcher (e2e)`, () => {
let server: any;
Expand Down
20 changes: 8 additions & 12 deletions server/e2e/jobs/specs/library.e2e-spec.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
import { LoginResponseDto } from '@app/domain';
import { LibraryController } from '@app/immich';
import { LibraryType } from '@app/infra/entities';
import { errorStub, uuidStub } from '@test/fixtures';
import * as fs from 'node:fs';
import { api } from 'e2e/client';
import fs from 'node:fs';
import { LoginResponseDto } from 'src/domain/auth/auth.dto';
import { LibraryController } from 'src/immich/controllers/library.controller';
import { LibraryType } from 'src/infra/entities/library.entity';
import { IMMICH_TEST_ASSET_PATH, IMMICH_TEST_ASSET_TEMP_PATH, restoreTempFolder, testApp } from 'src/test-utils/utils';
import request from 'supertest';
import { errorStub } from 'test/fixtures/error.stub';
import { uuidStub } from 'test/fixtures/uuid.stub';
import { utimes } from 'utimes';
import {
IMMICH_TEST_ASSET_PATH,
IMMICH_TEST_ASSET_TEMP_PATH,
restoreTempFolder,
testApp,
} from '../../../src/test-utils/utils';
import { api } from '../../client';

describe(`${LibraryController.name} (e2e)`, () => {
let server: any;
Expand Down
10 changes: 4 additions & 6 deletions server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -155,16 +155,14 @@
"./src/domain/": {
"branches": 75,
"functions": 80,
"lines": 90,
"statements": 90
"lines": 85,
"statements": 85
}
},
"testEnvironment": "node",
"moduleNameMapper": {
"^@test(|/.*)$": "<rootDir>/test/$1",
"^@app/immich(|/.*)$": "<rootDir>/src/immich/$1",
"^@app/infra(|/.*)$": "<rootDir>/src/infra/$1",
"^@app/domain(|/.*)$": "<rootDir>/src/domain/$1"
"^test(|/.*)$": "<rootDir>/test/$1",
"^src(|/.*)$": "<rootDir>/src/$1"
},
"globalSetup": "<rootDir>/test/global-setup.js"
},
Expand Down
8 changes: 4 additions & 4 deletions server/src/domain/access/access.core.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { BadRequestException, UnauthorizedException } from '@nestjs/common';
import { SharedLinkEntity } from '../../infra/entities';
import { AuthDto } from '../auth';
import { setDifference, setIsEqual, setUnion } from '../domain.util';
import { IAccessRepository } from '../repositories';
import { AuthDto } from 'src/domain/auth/auth.dto';
import { setDifference, setIsEqual, setUnion } from 'src/domain/domain.util';
import { IAccessRepository } from 'src/domain/repositories/access.repository';
import { SharedLinkEntity } from 'src/infra/entities/shared-link.entity';

export enum Permission {
ACTIVITY_CREATE = 'activity.create',
Expand Down
1 change: 0 additions & 1 deletion server/src/domain/access/index.ts

This file was deleted.

6 changes: 3 additions & 3 deletions server/src/domain/activity/activity.dto.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ActivityEntity } from '@app/infra/entities';
import { ApiProperty } from '@nestjs/swagger';
import { IsEnum, IsNotEmpty, IsString, ValidateIf } from 'class-validator';
import { Optional, ValidateUUID } from '../domain.util';
import { UserDto, mapSimpleUser } from '../user/response-dto';
import { Optional, ValidateUUID } from 'src/domain/domain.util';
import { UserDto, mapSimpleUser } from 'src/domain/user/response-dto/user-response.dto';
import { ActivityEntity } from 'src/infra/entities/activity.entity';

export enum ReactionType {
COMMENT = 'comment',
Expand Down
11 changes: 6 additions & 5 deletions server/src/domain/activity/activity.service.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import { ActivityEntity } from '@app/infra/entities';
import { Inject, Injectable } from '@nestjs/common';
import { AccessCore, Permission } from '../access';
import { AuthDto } from '../auth';
import { IAccessRepository, IActivityRepository } from '../repositories';
import { AccessCore, Permission } from 'src/domain/access/access.core';
import {
ActivityCreateDto,
ActivityDto,
Expand All @@ -13,7 +10,11 @@ import {
ReactionLevel,
ReactionType,
mapActivity,
} from './activity.dto';
} from 'src/domain/activity/activity.dto';
import { AuthDto } from 'src/domain/auth/auth.dto';
import { IAccessRepository } from 'src/domain/repositories/access.repository';
import { IActivityRepository } from 'src/domain/repositories/activity.repository';
import { ActivityEntity } from 'src/infra/entities/activity.entity';

@Injectable()
export class ActivityService {
Expand Down
13 changes: 7 additions & 6 deletions server/src/domain/activity/activity.spec.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { BadRequestException } from '@nestjs/common';
import { authStub, IAccessRepositoryMock, newAccessRepositoryMock } from '@test';
import { activityStub } from '@test/fixtures/activity.stub';
import { newActivityRepositoryMock } from '@test/repositories/activity.repository.mock';
import { IActivityRepository } from '../repositories';
import { ReactionType } from './activity.dto';
import { ActivityService } from './activity.service';
import { ReactionType } from 'src/domain/activity/activity.dto';
import { ActivityService } from 'src/domain/activity/activity.service';
import { IActivityRepository } from 'src/domain/repositories/activity.repository';
import { activityStub } from 'test/fixtures/activity.stub';
import { authStub } from 'test/fixtures/auth.stub';
import { IAccessRepositoryMock, newAccessRepositoryMock } from 'test/repositories/access.repository.mock';
import { newActivityRepositoryMock } from 'test/repositories/activity.repository.mock';

describe(ActivityService.name, () => {
let sut: ActivityService;
Expand Down
2 changes: 0 additions & 2 deletions server/src/domain/activity/index.ts

This file was deleted.

4 changes: 2 additions & 2 deletions server/src/domain/album/album-response.dto.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { albumStub } from '@test';
import { mapAlbum } from './album-response.dto';
import { mapAlbum } from 'src/domain/album/album-response.dto';
import { albumStub } from 'test/fixtures/album.stub';

describe('mapAlbum', () => {
it('should set start and end dates', () => {
Expand Down
10 changes: 5 additions & 5 deletions server/src/domain/album/album-response.dto.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { AlbumEntity, AssetOrder } from '@app/infra/entities';
import { Optional } from '@nestjs/common';
import { ApiProperty } from '@nestjs/swagger';
import { AssetResponseDto, mapAsset } from '../asset';
import { AuthDto } from '../auth/auth.dto';
import { UserResponseDto, mapUser } from '../user';
import { AssetResponseDto, mapAsset } from 'src/domain/asset/response-dto/asset-response.dto';
import { AuthDto } from 'src/domain/auth/auth.dto';
import { Optional } from 'src/domain/domain.util';
import { UserResponseDto, mapUser } from 'src/domain/user/response-dto/user-response.dto';
import { AlbumEntity, AssetOrder } from 'src/infra/entities/album.entity';

export class AlbumResponseDto {
id!: string;
Expand Down
30 changes: 13 additions & 17 deletions server/src/domain/album/album.service.spec.ts
Original file line number Diff line number Diff line change
@@ -1,36 +1,32 @@
import { BadRequestException } from '@nestjs/common';
import {
albumStub,
authStub,
IAccessRepositoryMock,
newAccessRepositoryMock,
newAlbumRepositoryMock,
newAssetRepositoryMock,
newJobRepositoryMock,
newUserRepositoryMock,
userStub,
} from '@test';
import _ from 'lodash';
import { BulkIdErrorReason } from '../asset';
import { IAlbumRepository, IAssetRepository, IJobRepository, IUserRepository } from '../repositories';
import { AlbumService } from './album.service';
import { AlbumService } from 'src/domain/album/album.service';
import { BulkIdErrorReason } from 'src/domain/asset/response-dto/asset-ids-response.dto';
import { IAlbumRepository } from 'src/domain/repositories/album.repository';
import { IAssetRepository } from 'src/domain/repositories/asset.repository';
import { IUserRepository } from 'src/domain/repositories/user.repository';
import { albumStub } from 'test/fixtures/album.stub';
import { authStub } from 'test/fixtures/auth.stub';
import { userStub } from 'test/fixtures/user.stub';
import { IAccessRepositoryMock, newAccessRepositoryMock } from 'test/repositories/access.repository.mock';
import { newAlbumRepositoryMock } from 'test/repositories/album.repository.mock';
import { newAssetRepositoryMock } from 'test/repositories/asset.repository.mock';
import { newUserRepositoryMock } from 'test/repositories/user.repository.mock';

describe(AlbumService.name, () => {
let sut: AlbumService;
let accessMock: IAccessRepositoryMock;
let albumMock: jest.Mocked<IAlbumRepository>;
let assetMock: jest.Mocked<IAssetRepository>;
let jobMock: jest.Mocked<IJobRepository>;
let userMock: jest.Mocked<IUserRepository>;

beforeEach(() => {
accessMock = newAccessRepositoryMock();
albumMock = newAlbumRepositoryMock();
assetMock = newAssetRepositoryMock();
jobMock = newJobRepositoryMock();
userMock = newUserRepositoryMock();

sut = new AlbumService(accessMock, albumMock, assetMock, jobMock, userMock);
sut = new AlbumService(accessMock, albumMock, assetMock, userMock);
});

it('should work', () => {
Expand Down
34 changes: 17 additions & 17 deletions server/src/domain/album/album.service.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
import { AlbumEntity, AssetEntity, UserEntity } from '@app/infra/entities';
import { BadRequestException, Inject, Injectable } from '@nestjs/common';
import { AccessCore, Permission } from '../access';
import { BulkIdErrorReason, BulkIdResponseDto, BulkIdsDto } from '../asset';
import { AuthDto } from '../auth';
import { setUnion } from '../domain.util';
import {
AlbumAssetCount,
AlbumInfoOptions,
IAccessRepository,
IAlbumRepository,
IAssetRepository,
IJobRepository,
IUserRepository,
} from '../repositories';
import { AccessCore, Permission } from 'src/domain/access/access.core';
import {
AlbumCountResponseDto,
AlbumResponseDto,
mapAlbum,
mapAlbumWithAssets,
mapAlbumWithoutAssets,
} from './album-response.dto';
import { AddUsersDto, AlbumInfoDto, CreateAlbumDto, GetAlbumsDto, UpdateAlbumDto } from './dto';
} from 'src/domain/album/album-response.dto';
import { AddUsersDto } from 'src/domain/album/dto/album-add-users.dto';
import { CreateAlbumDto } from 'src/domain/album/dto/album-create.dto';
import { UpdateAlbumDto } from 'src/domain/album/dto/album-update.dto';
import { AlbumInfoDto } from 'src/domain/album/dto/album.dto';
import { GetAlbumsDto } from 'src/domain/album/dto/get-albums.dto';
import { BulkIdErrorReason, BulkIdResponseDto, BulkIdsDto } from 'src/domain/asset/response-dto/asset-ids-response.dto';
import { AuthDto } from 'src/domain/auth/auth.dto';
import { setUnion } from 'src/domain/domain.util';
import { IAccessRepository } from 'src/domain/repositories/access.repository';
import { AlbumAssetCount, AlbumInfoOptions, IAlbumRepository } from 'src/domain/repositories/album.repository';
import { IAssetRepository } from 'src/domain/repositories/asset.repository';
import { IUserRepository } from 'src/domain/repositories/user.repository';
import { AlbumEntity } from 'src/infra/entities/album.entity';
import { AssetEntity } from 'src/infra/entities/asset.entity';
import { UserEntity } from 'src/infra/entities/user.entity';

@Injectable()
export class AlbumService {
Expand All @@ -29,7 +30,6 @@ export class AlbumService {
@Inject(IAccessRepository) accessRepository: IAccessRepository,
@Inject(IAlbumRepository) private albumRepository: IAlbumRepository,
@Inject(IAssetRepository) private assetRepository: IAssetRepository,
@Inject(IJobRepository) private jobRepository: IJobRepository,
@Inject(IUserRepository) private userRepository: IUserRepository,
) {
this.access = AccessCore.create(accessRepository);
Expand Down
2 changes: 1 addition & 1 deletion server/src/domain/album/dto/album-add-users.dto.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ArrayNotEmpty } from 'class-validator';
import { ValidateUUID } from '../../domain.util';
import { ValidateUUID } from 'src/domain/domain.util';

export class AddUsersDto {
@ValidateUUID({ each: true })
Expand Down
2 changes: 1 addition & 1 deletion server/src/domain/album/dto/album-create.dto.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsString } from 'class-validator';
import { Optional, ValidateUUID } from '../../domain.util';
import { Optional, ValidateUUID } from 'src/domain/domain.util';

export class CreateAlbumDto {
@IsString()
Expand Down
4 changes: 2 additions & 2 deletions server/src/domain/album/dto/album-update.dto.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { AssetOrder } from '@app/infra/entities';
import { ApiProperty } from '@nestjs/swagger';
import { IsEnum, IsString } from 'class-validator';
import { Optional, ValidateBoolean, ValidateUUID } from '../../domain.util';
import { Optional, ValidateBoolean, ValidateUUID } from 'src/domain/domain.util';
import { AssetOrder } from 'src/infra/entities/album.entity';

export class UpdateAlbumDto {
@Optional()
Expand Down
2 changes: 1 addition & 1 deletion server/src/domain/album/dto/album.dto.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ValidateBoolean } from '../../domain.util';
import { ValidateBoolean } from 'src/domain/domain.util';

export class AlbumInfoDto {
@ValidateBoolean({ optional: true })
Expand Down
2 changes: 1 addition & 1 deletion server/src/domain/album/dto/get-albums.dto.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ValidateBoolean, ValidateUUID } from '../../domain.util';
import { ValidateBoolean, ValidateUUID } from 'src/domain/domain.util';

export class GetAlbumsDto {
@ValidateBoolean({ optional: true })
Expand Down
5 changes: 0 additions & 5 deletions server/src/domain/album/dto/index.ts

This file was deleted.

3 changes: 0 additions & 3 deletions server/src/domain/album/index.ts

This file was deleted.

Loading

0 comments on commit 30f499c

Please sign in to comment.