1
0
mirror of https://github.com/immich-app/immich.git synced 2025-07-16 07:24:40 +02:00

refactor: deprecate /server-info and replace with /server-info/storage (#9645)

This commit is contained in:
Zack Pollard
2024-05-22 10:25:55 +01:00
committed by GitHub
parent a341ab0050
commit a3e7e8cc31
19 changed files with 265 additions and 99 deletions

View File

@ -1,12 +1,13 @@
import { Controller, Get } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { EndpointLifecycle } from 'src/decorators';
import {
ServerConfigDto,
ServerFeaturesDto,
ServerInfoResponseDto,
ServerMediaTypesResponseDto,
ServerPingResponse,
ServerStatsResponseDto,
ServerStorageResponseDto,
ServerThemeDto,
ServerVersionResponseDto,
} from 'src/dtos/server-info.dto';
@ -23,9 +24,16 @@ export class ServerInfoController {
) {}
@Get()
@EndpointLifecycle({ deprecatedAt: 'v1.106.0' })
@Authenticated()
getServerInfo(): Promise<ServerInfoResponseDto> {
return this.service.getInfo();
getServerInfo(): Promise<ServerStorageResponseDto> {
return this.service.getStorage();
}
@Get('storage')
@Authenticated()
getStorage(): Promise<ServerStorageResponseDto> {
return this.service.getStorage();
}
@Get('ping')

View File

@ -7,7 +7,7 @@ export class ServerPingResponse {
res!: string;
}
export class ServerInfoResponseDto {
export class ServerStorageResponseDto {
diskSize!: string;
diskUse!: string;
diskAvailable!: string;

View File

@ -29,11 +29,11 @@ describe(ServerInfoService.name, () => {
expect(sut).toBeDefined();
});
describe('getInfo', () => {
describe('getStorage', () => {
it('should return the disk space as B', async () => {
storageMock.checkDiskUsage.mockResolvedValue({ free: 200, available: 300, total: 500 });
await expect(sut.getInfo()).resolves.toEqual({
await expect(sut.getStorage()).resolves.toEqual({
diskAvailable: '300 B',
diskAvailableRaw: 300,
diskSize: '500 B',
@ -49,7 +49,7 @@ describe(ServerInfoService.name, () => {
it('should return the disk space as KiB', async () => {
storageMock.checkDiskUsage.mockResolvedValue({ free: 200_000, available: 300_000, total: 500_000 });
await expect(sut.getInfo()).resolves.toEqual({
await expect(sut.getStorage()).resolves.toEqual({
diskAvailable: '293.0 KiB',
diskAvailableRaw: 300_000,
diskSize: '488.3 KiB',
@ -65,7 +65,7 @@ describe(ServerInfoService.name, () => {
it('should return the disk space as MiB', async () => {
storageMock.checkDiskUsage.mockResolvedValue({ free: 200_000_000, available: 300_000_000, total: 500_000_000 });
await expect(sut.getInfo()).resolves.toEqual({
await expect(sut.getStorage()).resolves.toEqual({
diskAvailable: '286.1 MiB',
diskAvailableRaw: 300_000_000,
diskSize: '476.8 MiB',
@ -85,7 +85,7 @@ describe(ServerInfoService.name, () => {
total: 500_000_000_000,
});
await expect(sut.getInfo()).resolves.toEqual({
await expect(sut.getStorage()).resolves.toEqual({
diskAvailable: '279.4 GiB',
diskAvailableRaw: 300_000_000_000,
diskSize: '465.7 GiB',
@ -105,7 +105,7 @@ describe(ServerInfoService.name, () => {
total: 500_000_000_000_000,
});
await expect(sut.getInfo()).resolves.toEqual({
await expect(sut.getStorage()).resolves.toEqual({
diskAvailable: '272.8 TiB',
diskAvailableRaw: 300_000_000_000_000,
diskSize: '454.7 TiB',
@ -125,7 +125,7 @@ describe(ServerInfoService.name, () => {
total: 500_000_000_000_000_000,
});
await expect(sut.getInfo()).resolves.toEqual({
await expect(sut.getStorage()).resolves.toEqual({
diskAvailable: '266.5 PiB',
diskAvailableRaw: 300_000_000_000_000_000,
diskSize: '444.1 PiB',

View File

@ -4,10 +4,10 @@ import { SystemConfigCore } from 'src/cores/system-config.core';
import {
ServerConfigDto,
ServerFeaturesDto,
ServerInfoResponseDto,
ServerMediaTypesResponseDto,
ServerPingResponse,
ServerStatsResponseDto,
ServerStorageResponseDto,
UsageByUserDto,
} from 'src/dtos/server-info.dto';
import { SystemMetadataKey } from 'src/entities/system-metadata.entity';
@ -42,13 +42,13 @@ export class ServerInfoService {
}
}
async getInfo(): Promise<ServerInfoResponseDto> {
async getStorage(): Promise<ServerStorageResponseDto> {
const libraryBase = StorageCore.getBaseFolder(StorageFolder.LIBRARY);
const diskInfo = await this.storageRepository.checkDiskUsage(libraryBase);
const usagePercentage = (((diskInfo.total - diskInfo.free) / diskInfo.total) * 100).toFixed(2);
const serverInfo = new ServerInfoResponseDto();
const serverInfo = new ServerStorageResponseDto();
serverInfo.diskAvailable = asHumanReadable(diskInfo.available);
serverInfo.diskSize = asHumanReadable(diskInfo.total);
serverInfo.diskUse = asHumanReadable(diskInfo.total - diskInfo.free);