diff --git a/api/src/unraid-api/graph/resolvers/docker/docker-php.service.ts b/api/src/unraid-api/graph/resolvers/docker/docker-php.service.ts index 4ff39c1e0..ad97dad73 100644 --- a/api/src/unraid-api/graph/resolvers/docker/docker-php.service.ts +++ b/api/src/unraid-api/graph/resolvers/docker/docker-php.service.ts @@ -4,22 +4,13 @@ import { readFile } from 'fs/promises'; import { z } from 'zod'; import { phpLoader } from '@app/core/utils/plugins/php-loader.js'; +import { + ExplicitStatusItem, + UpdateStatus, +} from '@app/unraid-api/graph/resolvers/docker/docker-update-status.model.js'; type StatusItem = { name: string; updateStatus: 0 | 1 | 2 | 3 }; -/** Note that these values propogate down to api consumers, so be aware of breaking changes. */ -enum UpdateStatus { - UP_TO_DATE = 'UP_TO_DATE', - UPDATE_AVAILABLE = 'UPDATE_AVAILABLE', - REBUILD_READY = 'REBUILD_READY', - UNKNOWN = 'UNKNOWN', -} - -type ExplicitStatusItem = { - name: string; - updateStatus: UpdateStatus; -}; - /** * These types reflect the structure of the /var/lib/docker/unraid-update-status.json file, * which is not controlled by the Unraid API. diff --git a/api/src/unraid-api/graph/resolvers/docker/docker-update-status.model.ts b/api/src/unraid-api/graph/resolvers/docker/docker-update-status.model.ts new file mode 100644 index 000000000..a6276edd1 --- /dev/null +++ b/api/src/unraid-api/graph/resolvers/docker/docker-update-status.model.ts @@ -0,0 +1,25 @@ +import { Field, ObjectType, registerEnumType } from '@nestjs/graphql'; + +/** + * Note that these values propagate down to API consumers, so be aware of breaking changes. + */ +export enum UpdateStatus { + UP_TO_DATE = 'UP_TO_DATE', + UPDATE_AVAILABLE = 'UPDATE_AVAILABLE', + REBUILD_READY = 'REBUILD_READY', + UNKNOWN = 'UNKNOWN', +} + +registerEnumType(UpdateStatus, { + name: 'UpdateStatus', + description: 'Update status of a container.', +}); + +@ObjectType() +export class ExplicitStatusItem { + @Field(() => String) + name!: string; + + @Field(() => UpdateStatus) + updateStatus!: UpdateStatus; +} diff --git a/api/src/unraid-api/graph/resolvers/docker/docker.module.spec.ts b/api/src/unraid-api/graph/resolvers/docker/docker.module.spec.ts index 7856ba19d..af5500d91 100644 --- a/api/src/unraid-api/graph/resolvers/docker/docker.module.spec.ts +++ b/api/src/unraid-api/graph/resolvers/docker/docker.module.spec.ts @@ -1,4 +1,3 @@ -import { ConfigModule } from '@nestjs/config'; import { Test, TestingModule } from '@nestjs/testing'; import { describe, expect, it, vi } from 'vitest'; diff --git a/api/src/unraid-api/graph/resolvers/docker/docker.resolver.ts b/api/src/unraid-api/graph/resolvers/docker/docker.resolver.ts index 00906e61c..65a7276d4 100644 --- a/api/src/unraid-api/graph/resolvers/docker/docker.resolver.ts +++ b/api/src/unraid-api/graph/resolvers/docker/docker.resolver.ts @@ -2,10 +2,10 @@ import { Args, Mutation, Query, ResolveField, Resolver } from '@nestjs/graphql'; import { AuthAction, Resource } from '@unraid/shared/graphql.model.js'; import { UsePermissions } from '@unraid/shared/use-permissions.directive.js'; -import { GraphQLJSON } from 'graphql-scalars'; import { UseFeatureFlag } from '@app/unraid-api/decorators/use-feature-flag.decorator.js'; import { DockerPhpService } from '@app/unraid-api/graph/resolvers/docker/docker-php.service.js'; +import { ExplicitStatusItem } from '@app/unraid-api/graph/resolvers/docker/docker-update-status.model.js'; import { Docker, DockerContainer, @@ -138,7 +138,7 @@ export class DockerResolver { action: AuthAction.READ_ANY, resource: Resource.DOCKER, }) - @ResolveField(() => GraphQLJSON) + @ResolveField(() => [ExplicitStatusItem]) public async containerUpdateStatuses() { return this.dockerPhpService.getContainerUpdateStatuses(); }