Skip to content

Commit

Permalink
feat: add environment templates to plain client [MONET-525] (#1534)
Browse files Browse the repository at this point in the history
  • Loading branch information
mrlaessig authored Nov 17, 2022
1 parent 4a1e546 commit 442e62a
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 12 deletions.
9 changes: 6 additions & 3 deletions lib/entities/environment-template-installation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { wrapCursorPaginatedCollection } from '../common-utils'
type JsonObject = { [Key in string]?: JsonValue }
type JsonArray = Array<JsonValue>
type JsonValue = string | number | boolean | JsonObject | JsonArray | null

enum EnvironmentTemplateInstallationStatuses {
created = 'created',
inProgress = 'inProgress',
Expand Down Expand Up @@ -44,7 +45,9 @@ export type EnvironmentTemplateInstallationProps = {

export type CreateEnvironmentTemplateInstallationProps = {
version: number
takeover?: Link<'ContentType'>[]
takeover?: {
items: Link<'ContentType'>[]
}
changeSet?: Link<'ChangeSet'>
}

Expand All @@ -58,14 +61,14 @@ export type ValidationFinding = {
details: Record<string, unknown>
}

export type EnvironmentTemplateValidationProps = {
export type EnvironmentTemplateValidationProps<T = ValidationFinding> = {
sys: {
type: 'Array'
environment: Link<'Environment'>
space: Link<'Space'>
changeSet: Link<'ChangeSet'>
}
items: ValidationFinding[]
items: T[]
}

export type EnvironmentTemplateInstallation = EnvironmentTemplateInstallationProps &
Expand Down
14 changes: 7 additions & 7 deletions lib/entities/environment-template.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@ import {
createEnvironmentTemplateApi,
} from '../create-environment-template-api'
import enhanceWithMethods from '../enhance-with-methods'
import { ContentType } from './content-type'
import { EditorInterface } from './editor-interface'
import { ContentTypeProps } from './content-type'
import { EditorInterfaceProps } from './editor-interface'

export type Hint = {
operation: 'renameFieldId'
fieldId: string
previousFieldId: string
}

export interface EditorInterfaceTemplate extends Omit<EditorInterface, 'sys'> {
export interface EditorInterfaceTemplateProps extends Omit<EditorInterfaceProps, 'sys'> {
contentTypeTemplate: Link<'ContentTypeTemplate'>
}

export interface ContentTypeTemplate extends Omit<ContentType, 'sys'> {
export interface ContentTypeTemplateProps extends Omit<ContentTypeProps, 'sys'> {
id: string
basedOn?: {
space: Link<'Space'>
Expand All @@ -31,14 +31,14 @@ export interface ContentTypeTemplate extends Omit<ContentType, 'sys'> {
}

export type EnvironmentTemplateProps = {
sys: BasicMetaSysProps & { version: number }
sys: BasicMetaSysProps & { version: number; organization: Link<'Organization'> }
name: string
description?: string
versionName: string
versionDescription?: string
entities: {
contentTypeTemplates: Array<ContentTypeTemplate>
editorInterfaceTemplates: Array<EditorInterfaceTemplate>
contentTypeTemplates: Array<ContentTypeTemplateProps>
editorInterfaceTemplates: Array<EditorInterfaceTemplateProps>
}
}

Expand Down
4 changes: 2 additions & 2 deletions lib/export-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ export type {
EnvironmentAliasProps,
} from './entities/environment-alias'
export type {
ContentTypeTemplate,
ContentTypeTemplateProps,
CreateEnvironmentTemplateProps,
EditorInterfaceTemplate,
EditorInterfaceTemplateProps,
EnvironmentTemplate,
EnvironmentTemplateProps,
Hint,
Expand Down
74 changes: 74 additions & 0 deletions lib/plain/common-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ import {
GetAppActionsForEnvParams,
GetUserUIConfigParams,
GetUIConfigParams,
GetEnvironmentTemplateParams,
BasicCursorPaginationOptions,
EnvironmentTemplateParams,
} from '../common-types'
import { ApiKeyProps, CreateApiKeyProps } from '../entities/api-key'
import {
Expand Down Expand Up @@ -160,6 +163,16 @@ import {
} from '../entities/workflows-changelog-entry'
import { UserUIConfigProps } from '../entities/user-ui-config'
import { UIConfigProps } from '../entities/ui-config'
import {
CreateEnvironmentTemplateProps,
EnvironmentTemplateProps,
} from '../entities/environment-template'
import {
CreateEnvironmentTemplateInstallationProps,
EnvironmentTemplateInstallationProps,
EnvironmentTemplateValidationProps,
ValidateEnvironmentTemplateInstallationProps,
} from '../entities/environment-template-installation'

export type PlainClientAPI = {
raw: {
Expand Down Expand Up @@ -293,6 +306,67 @@ export type PlainClientAPI = {
): Promise<EnvironmentAliasProps>
delete(params: OptionalDefaults<GetSpaceEnvAliasParams>): Promise<any>
}
environmentTemplate: {
get(
params: GetEnvironmentTemplateParams & { version?: number },
headers?: AxiosRequestHeaders
): Promise<EnvironmentTemplateProps>
getMany(
params: BasicCursorPaginationOptions & GetOrganizationParams,
headers?: AxiosRequestHeaders
): Promise<CursorPaginatedCollectionProp<EnvironmentTemplateProps>>
create(
params: GetOrganizationParams,
rawData: CreateEnvironmentTemplateProps,
headers?: AxiosRequestHeaders
): Promise<EnvironmentTemplateProps>
versionUpdate(
params: GetEnvironmentTemplateParams & { version: number },
rawData: { versionName?: string; versionDescription?: string },
headers?: AxiosRequestHeaders
): Promise<EnvironmentTemplateProps>
update(
params: GetEnvironmentTemplateParams,
rawData: EnvironmentTemplateProps,
headers?: AxiosRequestHeaders
): Promise<EnvironmentTemplateProps>
delete(params: GetEnvironmentTemplateParams, headers?: AxiosRequestHeaders): Promise<void>
versions(
params: GetEnvironmentTemplateParams & BasicCursorPaginationOptions,
headers?: AxiosRequestHeaders
): Promise<CursorPaginatedCollectionProp<EnvironmentTemplateProps>>
validate(
params: EnvironmentTemplateParams & {
version?: number
},
rawData: ValidateEnvironmentTemplateInstallationProps,
headers?: AxiosRequestHeaders
): Promise<EnvironmentTemplateValidationProps>
install(
params: EnvironmentTemplateParams,
rawData: CreateEnvironmentTemplateInstallationProps,
headers?: AxiosRequestHeaders
): Promise<EnvironmentTemplateInstallationProps>
disconnect(params: EnvironmentTemplateParams, headers?: AxiosRequestHeaders): Promise<void>
}
environmentTemplateInstallation: {
getMany(
params: BasicCursorPaginationOptions & {
environmentId?: string
environmentTemplateId: string
organizationId: string
spaceId?: string
},
headers?: AxiosRequestHeaders
): Promise<CursorPaginatedCollectionProp<EnvironmentTemplateInstallationProps>>
getForEnvironment(
params: BasicCursorPaginationOptions &
EnvironmentTemplateParams & {
installationId?: string
},
headers?: AxiosRequestHeaders
): Promise<CursorPaginatedCollectionProp<EnvironmentTemplateInstallationProps>>
}
bulkAction: {
get<T extends BulkActionPayload = any>(params: GetBulkActionParams): Promise<BulkActionProps<T>>
publish(
Expand Down
16 changes: 16 additions & 0 deletions lib/plain/plain-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,22 @@ export const createPlainClient = (
update: wrap(wrapParams, 'EnvironmentAlias', 'update'),
delete: wrap(wrapParams, 'EnvironmentAlias', 'delete'),
},
environmentTemplate: {
get: wrap(wrapParams, 'EnvironmentTemplate', 'get'),
getMany: wrap(wrapParams, 'EnvironmentTemplate', 'getMany'),
create: wrap(wrapParams, 'EnvironmentTemplate', 'create'),
versionUpdate: wrap(wrapParams, 'EnvironmentTemplate', 'versionUpdate'),
update: wrap(wrapParams, 'EnvironmentTemplate', 'update'),
install: wrap(wrapParams, 'EnvironmentTemplate', 'install'),
versions: wrap(wrapParams, 'EnvironmentTemplate', 'versions'),
validate: wrap(wrapParams, 'EnvironmentTemplate', 'validate'),
disconnect: wrap(wrapParams, 'EnvironmentTemplate', 'disconnect'),
delete: wrap(wrapParams, 'EnvironmentTemplate', 'delete'),
},
environmentTemplateInstallation: {
getMany: wrap(wrapParams, 'EnvironmentTemplateInstallation', 'getMany'),
getForEnvironment: wrap(wrapParams, 'EnvironmentTemplateInstallation', 'getForEnvironment'),
},
bulkAction: {
get: wrap(wrapParams, 'BulkAction', 'get'),
publish: wrap(wrapParams, 'BulkAction', 'publish'),
Expand Down

0 comments on commit 442e62a

Please sign in to comment.