Skip to content

Commit

Permalink
feat(mongodb): add CreateEndpoint (#1580)
Browse files Browse the repository at this point in the history
  • Loading branch information
scaleway-bot authored Nov 19, 2024
1 parent d3f0ca3 commit 9daa4da
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 16 deletions.
25 changes: 25 additions & 0 deletions packages/clients/src/api/mongodb/v1alpha1/api.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
SNAPSHOT_TRANSIENT_STATUSES,
} from './content.gen'
import {
marshalCreateEndpointRequest,
marshalCreateInstanceRequest,
marshalCreateSnapshotRequest,
marshalCreateUserRequest,
Expand All @@ -21,6 +22,7 @@ import {
marshalUpdateSnapshotRequest,
marshalUpdateUserRequest,
marshalUpgradeInstanceRequest,
unmarshalEndpoint,
unmarshalInstance,
unmarshalListInstancesResponse,
unmarshalListNodeTypesResponse,
Expand All @@ -31,12 +33,14 @@ import {
unmarshalUser,
} from './marshalling.gen'
import type {
CreateEndpointRequest,
CreateInstanceRequest,
CreateSnapshotRequest,
CreateUserRequest,
DeleteEndpointRequest,
DeleteInstanceRequest,
DeleteSnapshotRequest,
Endpoint,
GetInstanceCertificateRequest,
GetInstanceRequest,
GetSnapshotRequest,
Expand Down Expand Up @@ -536,4 +540,25 @@ export class API extends ParentAPI {
method: 'DELETE',
path: `/mongodb/v1alpha1/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/endpoints/${validatePathParam('endpointId', request.endpointId)}`,
})

/**
* Create a new Instance endpoint. Create a new endpoint for a MongoDB®
* Database Instance. You can add `public_network` or `private_network`
* specifications to the body of the request.
*
* @param request - The request {@link CreateEndpointRequest}
* @returns A Promise of Endpoint
*/
createEndpoint = (request: Readonly<CreateEndpointRequest>) =>
this.client.fetch<Endpoint>(
{
body: JSON.stringify(
marshalCreateEndpointRequest(request, this.client.settings),
),
headers: jsonContentHeaders,
method: 'POST',
path: `/mongodb/v1alpha1/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/endpoints`,
},
unmarshalEndpoint,
)
}
1 change: 1 addition & 0 deletions packages/clients/src/api/mongodb/v1alpha1/index.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
export { API } from './api.gen'
export * from './content.gen'
export type {
CreateEndpointRequest,
CreateInstanceRequest,
CreateInstanceRequestVolumeDetails,
CreateSnapshotRequest,
Expand Down
27 changes: 18 additions & 9 deletions packages/clients/src/api/mongodb/v1alpha1/marshalling.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
} from '../../../bridge'
import type { DefaultValues } from '../../../bridge'
import type {
CreateEndpointRequest,
CreateInstanceRequest,
CreateInstanceRequestVolumeDetails,
CreateSnapshotRequest,
Expand Down Expand Up @@ -68,7 +69,7 @@ const unmarshalEndpointPublicDetails = (
return {} as EndpointPublicDetails
}

const unmarshalEndpoint = (data: unknown): Endpoint => {
export const unmarshalEndpoint = (data: unknown): Endpoint => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'Endpoint' failed as data isn't a dictionary.`,
Expand Down Expand Up @@ -353,14 +354,6 @@ const marshalEndpointSpecPublicDetails = (
defaults: DefaultValues,
): Record<string, unknown> => ({})

const marshalCreateInstanceRequestVolumeDetails = (
request: CreateInstanceRequestVolumeDetails,
defaults: DefaultValues,
): Record<string, unknown> => ({
volume_size: request.volumeSize,
volume_type: request.volumeType,
})

const marshalEndpointSpec = (
request: EndpointSpec,
defaults: DefaultValues,
Expand All @@ -386,6 +379,22 @@ const marshalEndpointSpec = (
]),
})

export const marshalCreateEndpointRequest = (
request: CreateEndpointRequest,
defaults: DefaultValues,
): Record<string, unknown> => ({
endpoint: marshalEndpointSpec(request.endpoint, defaults),
instance_id: request.instanceId,
})

const marshalCreateInstanceRequestVolumeDetails = (
request: CreateInstanceRequestVolumeDetails,
defaults: DefaultValues,
): Record<string, unknown> => ({
volume_size: request.volumeSize,
volume_type: request.volumeType,
})

export const marshalCreateInstanceRequest = (
request: CreateInstanceRequest,
defaults: DefaultValues,
Expand Down
26 changes: 19 additions & 7 deletions packages/clients/src/api/mongodb/v1alpha1/types.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,20 +144,20 @@ export interface Setting {
floatMax?: number
}

export interface CreateInstanceRequestVolumeDetails {
/** Volume size. */
volumeSize: number
/** Type of volume where data is stored. */
volumeType: VolumeType
}

export interface EndpointSpec {
/** One-of ('details'): at most one of 'public', 'privateNetwork' could be set. */
public?: EndpointSpecPublicDetails
/** One-of ('details'): at most one of 'public', 'privateNetwork' could be set. */
privateNetwork?: EndpointSpecPrivateNetworkDetails
}

export interface CreateInstanceRequestVolumeDetails {
/** Volume size. */
volumeSize: number
/** Type of volume where data is stored. */
volumeType: VolumeType
}

export interface Instance {
/** UUID of the Database Instance. */
id: string
Expand Down Expand Up @@ -258,6 +258,18 @@ export interface RestoreSnapshotRequestVolumeDetails {
volumeType: VolumeType
}

export type CreateEndpointRequest = {
/**
* Region to target. If none is passed will use default region from the
* config.
*/
region?: Region
/** UUID of the Database Instance. */
instanceId: string
/** EndpointSpec used to expose your Database Instance. */
endpoint: EndpointSpec
}

export type CreateInstanceRequest = {
/**
* Region to target. If none is passed will use default region from the
Expand Down

0 comments on commit 9daa4da

Please sign in to comment.