Entities for RESTful API for managing application instances

Former-commit-id: 360afd6bdb
restapi
Jens Pelzetter 2020-08-04 16:41:54 +02:00
parent cd34cdc597
commit 52ca67b4e3
2 changed files with 92 additions and 4 deletions

View File

@ -8,6 +8,7 @@ import {
assertProperties, assertProperties,
} from "@libreccm/ccm-apiclient-commons"; } from "@libreccm/ccm-apiclient-commons";
import { CcmObjectId } from "./core"; import { CcmObjectId } from "./core";
import { CcmApplicationId } from "./web";
/** /**
* Data required to identify a category. * Data required to identify a category.
@ -120,6 +121,14 @@ export interface Categorization {
type: string; type: string;
} }
export interface DomainOwnership {
ownershipId: number;
uuid: string;
context: string;
owner: CcmApplicationId;
ownerOrder: number;
}
/** /**
* Builds a {@link Category} object from a `Record`. * Builds a {@link Category} object from a `Record`.
* *
@ -188,3 +197,23 @@ export function buildCategorizationFromRecord(
type: record.type as string, type: record.type as string,
}; };
} }
export function buildDomainOwnershipFromRecord(
record: Record<string, unknown>
): DomainOwnership {
assertProperties(record, [
"ownershipId",
"uuid",
"context",
"owner",
"ownerOrder",
]);
return {
ownershipId: record.ownershipId as number,
uuid: record.uuid as string,
context: record.context as string,
owner: record.owner as CcmApplicationId,
ownerOrder: record.ownerOrder as number,
};
}

View File

@ -7,12 +7,71 @@ import {
LocalizedString, LocalizedString,
assertProperties, assertProperties,
} from "@libreccm/ccm-apiclient-commons"; } from "@libreccm/ccm-apiclient-commons";
import {
DomainOwnership,
buildDomainOwnershipFromRecord,
} from "./categorization";
import { SiteId } from "./site";
export interface CcmApplication {
applicationId: number;
uuid: string;
title: LocalizedString;
description: LocalizedString;
created: string;
applicationClassName: string;
applicationType: string;
primaryUrl: string;
domains: DomainOwnership[];
siteAware: boolean;
site: SiteId;
}
export interface CcmApplicationId { export interface CcmApplicationId {
applicationType: string; applicationType: string;
primaryUrl: string; primaryUrl: string;
} }
export function buildCcmApplicationFromRecord(
record: Record<string, unknown>
): CcmApplication {
assertProperties(record, [
"applicationId",
"uuid",
"title",
"description",
"created",
"applicationClassName",
"applicationType",
"primaryUrl",
"domains",
"siteAware",
"site",
]);
const domainRecords: Record<string, unknown>[] = record.domains as Record<
string,
unknown
>[];
const domains = domainRecords.map((record) =>
buildDomainOwnershipFromRecord(record)
);
return {
applicationId: record.applicationId as number,
uuid: record.uuid as string,
title: record.title as LocalizedString,
description: record.description as LocalizedString,
created: record.created as string,
applicationClassName: record.applicationClassName as string,
applicationType: record.applicationType as string,
primaryUrl: record.primaryUrl as string,
domains,
siteAware: record.siteAware as boolean,
site: record.site as SiteId,
};
}
export function buildCcmApplicationIdFromRecord( export function buildCcmApplicationIdFromRecord(
record: Record<string, unknown> record: Record<string, unknown>
): CcmApplicationId { ): CcmApplicationId {