From ed9820676966e637fb7dd28ffa063f3698984a19 Mon Sep 17 00:00:00 2001 From: Eli Bosley Date: Mon, 18 Aug 2025 18:08:50 -0400 Subject: [PATCH] refactor(api): reorganize info module imports and enhance CPU data handling - Consolidated imports in the info resolver and service for better readability. - Added `CpuDataService` to manage CPU load data more efficiently. - Updated `InfoResolver` to include `InfoCpuResolver` for improved CPU data handling. - Enhanced documentation for CPU load fields in the model to improve clarity. - Streamlined the `SubscriptionTrackerService` for better topic management. --- .../graph/resolvers/info/cpu-data.service.ts | 1 + .../graph/resolvers/info/info.model.ts | 9 +++++-- .../graph/resolvers/info/info.resolver.ts | 26 +++++-------------- .../graph/resolvers/info/info.service.ts | 12 ++------- .../graph/resolvers/resolvers.module.ts | 5 ++-- .../graph/services/services.module.ts | 3 ++- .../services/subscription-tracker.service.ts | 11 ++------ 7 files changed, 22 insertions(+), 45 deletions(-) diff --git a/api/src/unraid-api/graph/resolvers/info/cpu-data.service.ts b/api/src/unraid-api/graph/resolvers/info/cpu-data.service.ts index 9d6e7f29e..5b9303dbd 100644 --- a/api/src/unraid-api/graph/resolvers/info/cpu-data.service.ts +++ b/api/src/unraid-api/graph/resolvers/info/cpu-data.service.ts @@ -1,4 +1,5 @@ import { Injectable, Scope } from '@nestjs/common'; + import { currentLoad, Systeminformation } from 'systeminformation'; @Injectable({ scope: Scope.REQUEST }) diff --git a/api/src/unraid-api/graph/resolvers/info/info.model.ts b/api/src/unraid-api/graph/resolvers/info/info.model.ts index 90065db46..68ff41d7a 100644 --- a/api/src/unraid-api/graph/resolvers/info/info.model.ts +++ b/api/src/unraid-api/graph/resolvers/info/info.model.ts @@ -136,13 +136,18 @@ export class CpuLoad { @Field(() => Float, { description: 'The percentage of time the CPU spent in kernel space.' }) loadSystem!: number; - @Field(() => Float, { description: 'The percentage of time the CPU spent on low-priority (niced) user space processes.' }) + @Field(() => Float, { + description: + 'The percentage of time the CPU spent on low-priority (niced) user space processes.', + }) loadNice!: number; @Field(() => Float, { description: 'The percentage of time the CPU was idle.' }) loadIdle!: number; - @Field(() => Float, { description: 'The percentage of time the CPU spent servicing hardware interrupts.' }) + @Field(() => Float, { + description: 'The percentage of time the CPU spent servicing hardware interrupts.', + }) loadIrq!: number; } diff --git a/api/src/unraid-api/graph/resolvers/info/info.resolver.ts b/api/src/unraid-api/graph/resolvers/info/info.resolver.ts index 34dd16b29..43428a2ae 100644 --- a/api/src/unraid-api/graph/resolvers/info/info.resolver.ts +++ b/api/src/unraid-api/graph/resolvers/info/info.resolver.ts @@ -1,12 +1,5 @@ import { OnModuleInit } from '@nestjs/common'; -import { - Parent, - Query, - Resolver, - Subscription, - ResolveField, -} from '@nestjs/graphql'; -import { PubSub } from 'graphql-subscriptions'; +import { Parent, Query, ResolveField, Resolver, Subscription } from '@nestjs/graphql'; import { Resource } from '@unraid/shared/graphql.model.js'; import { @@ -14,21 +7,16 @@ import { AuthPossession, UsePermissions, } from '@unraid/shared/use-permissions.directive.js'; -import { - baseboard as getBaseboard, - system as getSystem, -} from 'systeminformation'; +import { PubSub } from 'graphql-subscriptions'; +import { baseboard as getBaseboard, system as getSystem } from 'systeminformation'; +import { createSubscription, pubsub, PUBSUB_CHANNEL } from '@app/core/pubsub.js'; import { getMachineId } from '@app/core/utils/misc/get-machine-id.js'; -import { - createSubscription, - PUBSUB_CHANNEL, - pubsub, -} from '@app/core/pubsub.js'; - import { DisplayService } from '@app/unraid-api/graph/resolvers/display/display.service.js'; +import { CpuDataService } from '@app/unraid-api/graph/resolvers/info/cpu-data.service.js'; import { Baseboard, + CpuUtilization, Devices, Display, Info, @@ -38,9 +26,7 @@ import { Os, System, Versions, - CpuUtilization, } from '@app/unraid-api/graph/resolvers/info/info.model.js'; -import { CpuDataService } from '@app/unraid-api/graph/resolvers/info/cpu-data.service.js'; import { InfoService } from '@app/unraid-api/graph/resolvers/info/info.service.js'; import { SubscriptionTrackerService } from '@app/unraid-api/graph/services/subscription-tracker.service.js'; diff --git a/api/src/unraid-api/graph/resolvers/info/info.service.ts b/api/src/unraid-api/graph/resolvers/info/info.service.ts index 194bb383d..8f5c155e6 100644 --- a/api/src/unraid-api/graph/resolvers/info/info.service.ts +++ b/api/src/unraid-api/graph/resolvers/info/info.service.ts @@ -1,14 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { - cpu, - cpuFlags, - mem, - memLayout, - osInfo, - versions, - currentLoad, -} from 'systeminformation'; +import { cpu, cpuFlags, currentLoad, mem, memLayout, osInfo, versions } from 'systeminformation'; import { bootTimestamp } from '@app/common/dashboard/boot-timestamp.js'; import { getUnraidVersion } from '@app/common/dashboard/get-unraid-version.js'; @@ -16,6 +8,7 @@ import { getters } from '@app/store/index.js'; import { ContainerState } from '@app/unraid-api/graph/resolvers/docker/docker.model.js'; import { DockerService } from '@app/unraid-api/graph/resolvers/docker/docker.service.js'; import { + CpuUtilization, Devices, InfoApps, InfoCpu, @@ -23,7 +16,6 @@ import { Os as InfoOs, MemoryLayout, Versions, - CpuUtilization, } from '@app/unraid-api/graph/resolvers/info/info.model.js'; @Injectable() diff --git a/api/src/unraid-api/graph/resolvers/resolvers.module.ts b/api/src/unraid-api/graph/resolvers/resolvers.module.ts index 58482f891..394601779 100644 --- a/api/src/unraid-api/graph/resolvers/resolvers.module.ts +++ b/api/src/unraid-api/graph/resolvers/resolvers.module.ts @@ -12,9 +12,10 @@ import { DisplayService } from '@app/unraid-api/graph/resolvers/display/display. import { DockerModule } from '@app/unraid-api/graph/resolvers/docker/docker.module.js'; import { FlashBackupModule } from '@app/unraid-api/graph/resolvers/flash-backup/flash-backup.module.js'; import { FlashResolver } from '@app/unraid-api/graph/resolvers/flash/flash.resolver.js'; +import { CpuDataService } from '@app/unraid-api/graph/resolvers/info/cpu-data.service.js'; import { DevicesResolver } from '@app/unraid-api/graph/resolvers/info/devices.resolver.js'; import { DevicesService } from '@app/unraid-api/graph/resolvers/info/devices.service.js'; -import { InfoResolver } from '@app/unraid-api/graph/resolvers/info/info.resolver.js'; +import { InfoCpuResolver, InfoResolver } from '@app/unraid-api/graph/resolvers/info/info.resolver.js'; import { InfoService } from '@app/unraid-api/graph/resolvers/info/info.service.js'; import { LogsResolver } from '@app/unraid-api/graph/resolvers/logs/logs.resolver.js'; import { LogsService } from '@app/unraid-api/graph/resolvers/logs/logs.service.js'; @@ -37,8 +38,6 @@ import { ServicesModule } from '@app/unraid-api/graph/services/services.module.j import { ServicesResolver } from '@app/unraid-api/graph/services/services.resolver.js'; import { SharesResolver } from '@app/unraid-api/graph/shares/shares.resolver.js'; import { MeResolver } from '@app/unraid-api/graph/user/user.resolver.js'; -import { InfoCpuResolver } from '@app/unraid-api/graph/resolvers/info/info.resolver.js'; -import { CpuDataService } from '@app/unraid-api/graph/resolvers/info/cpu-data.service.js'; @Module({ imports: [ diff --git a/api/src/unraid-api/graph/services/services.module.ts b/api/src/unraid-api/graph/services/services.module.ts index 63807bf42..ecb022bb7 100644 --- a/api/src/unraid-api/graph/services/services.module.ts +++ b/api/src/unraid-api/graph/services/services.module.ts @@ -1,5 +1,6 @@ import { Module } from '@nestjs/common'; -import { SubscriptionTrackerService } from './subscription-tracker.service'; + +import { SubscriptionTrackerService } from '@app/unraid-api/graph/services/subscription-tracker.service'; @Module({ providers: [SubscriptionTrackerService], diff --git a/api/src/unraid-api/graph/services/subscription-tracker.service.ts b/api/src/unraid-api/graph/services/subscription-tracker.service.ts index b118354af..1120048d2 100644 --- a/api/src/unraid-api/graph/services/subscription-tracker.service.ts +++ b/api/src/unraid-api/graph/services/subscription-tracker.service.ts @@ -3,16 +3,9 @@ import { Injectable } from '@nestjs/common'; @Injectable() export class SubscriptionTrackerService { private subscriberCounts = new Map(); - private topicHandlers = new Map< - string, - { onStart: () => void; onStop: () => void } - >(); + private topicHandlers = new Map void; onStop: () => void }>(); - public registerTopic( - topic: string, - onStart: () => void, - onStop: () => void - ): void { + public registerTopic(topic: string, onStart: () => void, onStop: () => void): void { this.topicHandlers.set(topic, { onStart, onStop }); }