Skip to content

Commit 6102ac5

Browse files
authored
feat(containers): add trigger CRUD (#737)
1 parent 542b877 commit 6102ac5

File tree

5 files changed

+558
-0
lines changed

5 files changed

+558
-0
lines changed

packages/clients/src/api/container/v1beta1/api.gen.ts

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,19 @@ import {
1515
DOMAIN_TRANSIENT_STATUSES,
1616
NAMESPACE_TRANSIENT_STATUSES,
1717
TOKEN_TRANSIENT_STATUSES,
18+
TRIGGER_TRANSIENT_STATUSES,
1819
} from './content.gen'
1920
import {
2021
marshalCreateContainerRequest,
2122
marshalCreateCronRequest,
2223
marshalCreateDomainRequest,
2324
marshalCreateNamespaceRequest,
2425
marshalCreateTokenRequest,
26+
marshalCreateTriggerRequest,
2527
marshalUpdateContainerRequest,
2628
marshalUpdateCronRequest,
2729
marshalUpdateNamespaceRequest,
30+
marshalUpdateTriggerRequest,
2831
unmarshalContainer,
2932
unmarshalCron,
3033
unmarshalDomain,
@@ -34,8 +37,10 @@ import {
3437
unmarshalListLogsResponse,
3538
unmarshalListNamespacesResponse,
3639
unmarshalListTokensResponse,
40+
unmarshalListTriggersResponse,
3741
unmarshalNamespace,
3842
unmarshalToken,
43+
unmarshalTrigger,
3944
} from './marshalling.gen'
4045
import type {
4146
Container,
@@ -44,19 +49,22 @@ import type {
4449
CreateDomainRequest,
4550
CreateNamespaceRequest,
4651
CreateTokenRequest,
52+
CreateTriggerRequest,
4753
Cron,
4854
DeleteContainerRequest,
4955
DeleteCronRequest,
5056
DeleteDomainRequest,
5157
DeleteNamespaceRequest,
5258
DeleteTokenRequest,
59+
DeleteTriggerRequest,
5360
DeployContainerRequest,
5461
Domain,
5562
GetContainerRequest,
5663
GetCronRequest,
5764
GetDomainRequest,
5865
GetNamespaceRequest,
5966
GetTokenRequest,
67+
GetTriggerRequest,
6068
IssueJWTRequest,
6169
ListContainersRequest,
6270
ListContainersResponse,
@@ -70,11 +78,15 @@ import type {
7078
ListNamespacesResponse,
7179
ListTokensRequest,
7280
ListTokensResponse,
81+
ListTriggersRequest,
82+
ListTriggersResponse,
7383
Namespace,
7484
Token,
85+
Trigger,
7586
UpdateContainerRequest,
7687
UpdateCronRequest,
7788
UpdateNamespaceRequest,
89+
UpdateTriggerRequest,
7890
} from './types.gen'
7991

8092
const jsonContentHeaders = {
@@ -794,4 +806,153 @@ export class API extends ParentAPI {
794806
},
795807
unmarshalToken,
796808
)
809+
810+
/**
811+
* Create a trigger. Create a new trigger for a specified container.
812+
*
813+
* @param request - The request {@link CreateTriggerRequest}
814+
* @returns A Promise of Trigger
815+
*/
816+
createTrigger = (request: Readonly<CreateTriggerRequest>) =>
817+
this.client.fetch<Trigger>(
818+
{
819+
body: JSON.stringify(
820+
marshalCreateTriggerRequest(request, this.client.settings),
821+
),
822+
headers: jsonContentHeaders,
823+
method: 'POST',
824+
path: `/containers/v1beta1/regions/${validatePathParam(
825+
'region',
826+
request.region ?? this.client.settings.defaultRegion,
827+
)}/triggers`,
828+
},
829+
unmarshalTrigger,
830+
)
831+
832+
/**
833+
* Get a trigger. Get a trigger with a specified ID.
834+
*
835+
* @param request - The request {@link GetTriggerRequest}
836+
* @returns A Promise of Trigger
837+
*/
838+
getTrigger = (request: Readonly<GetTriggerRequest>) =>
839+
this.client.fetch<Trigger>(
840+
{
841+
method: 'GET',
842+
path: `/containers/v1beta1/regions/${validatePathParam(
843+
'region',
844+
request.region ?? this.client.settings.defaultRegion,
845+
)}/triggers/${validatePathParam('triggerId', request.triggerId)}`,
846+
},
847+
unmarshalTrigger,
848+
)
849+
850+
/**
851+
* Waits for {@link Trigger} to be in a final state.
852+
*
853+
* @param request - The request {@link GetTriggerRequest}
854+
* @param options - The waiting options
855+
* @returns A Promise of Trigger
856+
*/
857+
waitForTrigger = (
858+
request: Readonly<GetTriggerRequest>,
859+
options?: Readonly<WaitForOptions<Trigger>>,
860+
) =>
861+
waitForResource(
862+
options?.stop ??
863+
(res =>
864+
Promise.resolve(!TRIGGER_TRANSIENT_STATUSES.includes(res.status))),
865+
this.getTrigger,
866+
request,
867+
options,
868+
)
869+
870+
protected pageOfListTriggers = (
871+
request: Readonly<ListTriggersRequest> = {},
872+
) =>
873+
this.client.fetch<ListTriggersResponse>(
874+
{
875+
method: 'GET',
876+
path: `/containers/v1beta1/regions/${validatePathParam(
877+
'region',
878+
request.region ?? this.client.settings.defaultRegion,
879+
)}/triggers`,
880+
urlParams: urlParams(
881+
['order_by', request.orderBy ?? 'created_at_asc'],
882+
['page', request.page],
883+
[
884+
'page_size',
885+
request.pageSize ?? this.client.settings.defaultPageSize,
886+
],
887+
...Object.entries(
888+
resolveOneOf([
889+
{
890+
default: this.client.settings.defaultProjectId,
891+
param: 'project_id',
892+
value: request.projectId,
893+
},
894+
{
895+
param: 'container_id',
896+
value: request.containerId,
897+
},
898+
{
899+
param: 'namespace_id',
900+
value: request.namespaceId,
901+
},
902+
]),
903+
),
904+
),
905+
},
906+
unmarshalListTriggersResponse,
907+
)
908+
909+
/**
910+
* List all triggers. List all triggers belonging to a specified Organization
911+
* or Project.
912+
*
913+
* @param request - The request {@link ListTriggersRequest}
914+
* @returns A Promise of ListTriggersResponse
915+
*/
916+
listTriggers = (request: Readonly<ListTriggersRequest> = {}) =>
917+
enrichForPagination('triggers', this.pageOfListTriggers, request)
918+
919+
/**
920+
* Update a trigger. Update a trigger with a specified ID.
921+
*
922+
* @param request - The request {@link UpdateTriggerRequest}
923+
* @returns A Promise of Trigger
924+
*/
925+
updateTrigger = (request: Readonly<UpdateTriggerRequest>) =>
926+
this.client.fetch<Trigger>(
927+
{
928+
body: JSON.stringify(
929+
marshalUpdateTriggerRequest(request, this.client.settings),
930+
),
931+
headers: jsonContentHeaders,
932+
method: 'PATCH',
933+
path: `/containers/v1beta1/regions/${validatePathParam(
934+
'region',
935+
request.region ?? this.client.settings.defaultRegion,
936+
)}/triggers/${validatePathParam('triggerId', request.triggerId)}`,
937+
},
938+
unmarshalTrigger,
939+
)
940+
941+
/**
942+
* Delete a trigger. Delete a trigger with a specified ID.
943+
*
944+
* @param request - The request {@link DeleteTriggerRequest}
945+
* @returns A Promise of Trigger
946+
*/
947+
deleteTrigger = (request: Readonly<DeleteTriggerRequest>) =>
948+
this.client.fetch<Trigger>(
949+
{
950+
method: 'DELETE',
951+
path: `/containers/v1beta1/regions/${validatePathParam(
952+
'region',
953+
request.region ?? this.client.settings.defaultRegion,
954+
)}/triggers/${validatePathParam('triggerId', request.triggerId)}`,
955+
},
956+
unmarshalTrigger,
957+
)
797958
}

packages/clients/src/api/container/v1beta1/content.gen.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type {
66
DomainStatus,
77
NamespaceStatus,
88
TokenStatus,
9+
TriggerStatus,
910
} from './types.gen'
1011

1112
/** Lists transient statutes of the enum {@link ContainerStatus}. */
@@ -38,3 +39,10 @@ export const NAMESPACE_TRANSIENT_STATUSES: NamespaceStatus[] = [
3839

3940
/** Lists transient statutes of the enum {@link TokenStatus}. */
4041
export const TOKEN_TRANSIENT_STATUSES: TokenStatus[] = ['deleting', 'creating']
42+
43+
/** Lists transient statutes of the enum {@link TriggerStatus}. */
44+
export const TRIGGER_TRANSIENT_STATUSES: TriggerStatus[] = [
45+
'deleting',
46+
'creating',
47+
'pending',
48+
]

packages/clients/src/api/container/v1beta1/index.gen.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,18 @@ export type {
1313
CreateDomainRequest,
1414
CreateNamespaceRequest,
1515
CreateTokenRequest,
16+
CreateTriggerRequest,
17+
CreateTriggerRequestMnqNatsClientConfig,
18+
CreateTriggerRequestMnqSqsClientConfig,
19+
CreateTriggerRequestSqsClientConfig,
1620
Cron,
1721
CronStatus,
1822
DeleteContainerRequest,
1923
DeleteCronRequest,
2024
DeleteDomainRequest,
2125
DeleteNamespaceRequest,
2226
DeleteTokenRequest,
27+
DeleteTriggerRequest,
2328
DeployContainerRequest,
2429
Domain,
2530
DomainStatus,
@@ -28,6 +33,7 @@ export type {
2833
GetDomainRequest,
2934
GetNamespaceRequest,
3035
GetTokenRequest,
36+
GetTriggerRequest,
3137
IssueJWTRequest,
3238
ListContainersRequest,
3339
ListContainersRequestOrderBy,
@@ -47,6 +53,9 @@ export type {
4753
ListTokensRequest,
4854
ListTokensRequestOrderBy,
4955
ListTokensResponse,
56+
ListTriggersRequest,
57+
ListTriggersRequestOrderBy,
58+
ListTriggersResponse,
5059
Log,
5160
LogStream,
5261
Namespace,
@@ -56,7 +65,15 @@ export type {
5665
SecretHashedValue,
5766
Token,
5867
TokenStatus,
68+
Trigger,
69+
TriggerInputType,
70+
TriggerMnqNatsClientConfig,
71+
TriggerMnqSqsClientConfig,
72+
TriggerSqsClientConfig,
73+
TriggerStatus,
5974
UpdateContainerRequest,
6075
UpdateCronRequest,
6176
UpdateNamespaceRequest,
77+
UpdateTriggerRequest,
78+
UpdateTriggerRequestSqsClientConfig,
6279
} from './types.gen'

0 commit comments

Comments
 (0)