From ea6467e03604908e678f9523fbe1be7c23218dad Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 5 Sep 2022 15:41:45 +0200 Subject: [PATCH] update model for PackagesInstalled --- src/Umbraco.Web.UI.Client/schemas/api/api.yml | 40 ++++++++++++++++--- .../schemas/generated-schema.ts | 35 +++++++++++++--- .../packages/packages-installed.element.ts | 10 ++--- .../src/core/api/fetcher.ts | 2 +- .../src/core/models/index.ts | 1 + .../temp-schema-generator/manifests.ts | 23 ++++++++--- 6 files changed, 89 insertions(+), 22 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/schemas/api/api.yml b/src/Umbraco.Web.UI.Client/schemas/api/api.yml index d62eae2c75..cb2c61eb46 100644 --- a/src/Umbraco.Web.UI.Client/schemas/api/api.yml +++ b/src/Umbraco.Web.UI.Client/schemas/api/api.yml @@ -75,14 +75,30 @@ paths: $ref: '#/components/schemas/ProblemDetails' /manifests/packages: get: - operationId: Packages + operationId: ManifestsPackages responses: '200': description: 200 response content: application/json: schema: - $ref: '#/components/schemas/PackagesResponse' + type: object + default: + description: default response + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /manifests/packages/installed: + get: + operationId: ManifestsPackagesInstalled + responses: + '200': + description: 200 response + content: + application/json: + schema: + $ref: '#/components/schemas/ManifestsPackagesInstalledResponse' default: description: default response content: @@ -663,26 +679,40 @@ components: $ref: '#/components/schemas/Manifest' required: - manifests - Package: + PackageInstalled: type: object properties: + id: + type: string name: type: string alias: type: string version: type: string + hasMigrations: + type: boolean + hasPendingMigrations: + type: boolean + plans: + type: array + items: + type: object required: + - id - name - alias - version - PackagesResponse: + - hasMigrations + - hasPendingMigrations + - plans + ManifestsPackagesInstalledResponse: type: object properties: packages: type: array items: - $ref: '#/components/schemas/Package' + $ref: '#/components/schemas/PackageInstalled' required: - packages ServerStatus: diff --git a/src/Umbraco.Web.UI.Client/schemas/generated-schema.ts b/src/Umbraco.Web.UI.Client/schemas/generated-schema.ts index 75a9951819..a96cb0cd0d 100644 --- a/src/Umbraco.Web.UI.Client/schemas/generated-schema.ts +++ b/src/Umbraco.Web.UI.Client/schemas/generated-schema.ts @@ -17,7 +17,10 @@ export interface paths { get: operations["Manifests"]; }; "/manifests/packages": { - get: operations["Packages"]; + get: operations["ManifestsPackages"]; + }; + "/manifests/packages/installed": { + get: operations["ManifestsPackagesInstalled"]; }; "/server/status": { get: operations["GetStatus"]; @@ -225,13 +228,17 @@ export interface components { ManifestsResponse: { manifests: components["schemas"]["Manifest"][]; }; - Package: { + PackageInstalled: { + id: string; name: string; alias: string; version: string; + hasMigrations: boolean; + hasPendingMigrations: boolean; + plans: { [key: string]: unknown }[]; }; - PackagesResponse: { - packages: components["schemas"]["Package"][]; + ManifestsPackagesInstalledResponse: { + packages: components["schemas"]["PackageInstalled"][]; }; /** @enum {string} */ ServerStatus: "running" | "must-install" | "must-upgrade"; @@ -332,12 +339,28 @@ export interface operations { }; }; }; - Packages: { + ManifestsPackages: { responses: { /** 200 response */ 200: { content: { - "application/json": components["schemas"]["PackagesResponse"]; + "application/json": { [key: string]: unknown }; + }; + }; + /** default response */ + default: { + content: { + "application/json": components["schemas"]["ProblemDetails"]; + }; + }; + }; + }; + ManifestsPackagesInstalled: { + responses: { + /** 200 response */ + 200: { + content: { + "application/json": components["schemas"]["ManifestsPackagesInstalledResponse"]; }; }; /** default response */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/sections/packages/packages-installed.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/sections/packages/packages-installed.element.ts index a822fdf709..e6637591cb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/sections/packages/packages-installed.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/sections/packages/packages-installed.element.ts @@ -1,15 +1,15 @@ import { html, LitElement, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { getPackages } from '../../../core/api/fetcher'; +import { getPackagesInstalled } from '../../../core/api/fetcher'; import { UmbContextConsumerMixin } from '../../../core/context'; -import type { Package } from '../../../core/models'; +import type { PackageInstalled } from '../../../core/models'; @customElement('umb-packages-installed') export class UmbPackagesInstalled extends UmbContextConsumerMixin(LitElement) { @state() - private _installedPackages: Package[] = []; + private _installedPackages: PackageInstalled[] = []; @state() private _errorMessage = ''; @@ -29,10 +29,10 @@ export class UmbPackagesInstalled extends UmbContextConsumerMixin(LitElement) { try { const { data: { packages }, - } = await getPackages({}); + } = await getPackagesInstalled({}); this._installedPackages = packages; } catch (e) { - if (e instanceof getPackages.Error) { + if (e instanceof getPackagesInstalled.Error) { const error = e.getActualType(); this._errorMessage = error.data.detail ?? 'An error occurred while loading the installed packages'; } diff --git a/src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts b/src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts index 2f92d83961..034bd7851c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts +++ b/src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts @@ -20,4 +20,4 @@ export const postInstallSetup = fetcher.path('/install/setup').method('post').cr export const getUpgradeSettings = fetcher.path('/upgrade/settings').method('get').create(); export const PostUpgradeAuthorize = fetcher.path('/upgrade/authorize').method('post').create(); export const getManifests = fetcher.path('/manifests').method('get').create(); -export const getPackages = fetcher.path('/manifests/packages').method('get').create(); +export const getPackagesInstalled = fetcher.path('/manifests/packages/installed').method('get').create(); diff --git a/src/Umbraco.Web.UI.Client/src/core/models/index.ts b/src/Umbraco.Web.UI.Client/src/core/models/index.ts index 514e152019..62393d0aa2 100644 --- a/src/Umbraco.Web.UI.Client/src/core/models/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/models/index.ts @@ -25,6 +25,7 @@ export type ManifestPropertyAction = components['schemas']['IManifestPropertyAct export type ManifestEntrypoint = components['schemas']['IManifestEntrypoint']; export type ManifestCustom = components['schemas']['IManifestCustom']; export type ManifestPackageView = components['schemas']['IManifestPackageView']; +export type PackageInstalled = components['schemas']['PackageInstalled']; export type ManifestElementType = | ManifestSection diff --git a/src/Umbraco.Web.UI.Client/temp-schema-generator/manifests.ts b/src/Umbraco.Web.UI.Client/temp-schema-generator/manifests.ts index 031c19913e..9e365d5bd0 100644 --- a/src/Umbraco.Web.UI.Client/temp-schema-generator/manifests.ts +++ b/src/Umbraco.Web.UI.Client/temp-schema-generator/manifests.ts @@ -12,9 +12,18 @@ export class Manifests { } @endpoint({ method: 'GET', path: '/manifests/packages' }) -export class Packages { +export class ManifestsPackages { @response({ status: 200 }) - response(@body body: PackagesResponse) {} + response(@body body: {}) {} + + @defaultResponse + default(@body body: ProblemDetails) {} +} + +@endpoint({ method: 'GET', path: '/manifests/packages/installed' }) +export class ManifestsPackagesInstalled { + @response({ status: 200 }) + response(@body body: ManifestsPackagesInstalledResponse) {} @defaultResponse default(@body body: ProblemDetails) {} @@ -43,14 +52,18 @@ export interface ManifestsResponse { manifests: Manifest[]; } -export interface PackagesResponse { - packages: Package[]; +export interface ManifestsPackagesInstalledResponse { + packages: PackageInstalled[]; } -export interface Package { +export interface PackageInstalled { + id: string; name: string; alias: string; version: string; + hasMigrations: boolean; + hasPendingMigrations: boolean; + plans: {}[]; } export interface IManifest {