Skip to content

Commit cda0909

Browse files
authored
feat(functions): add trigger management (#128)
1 parent 2fa33ee commit cda0909

File tree

4 files changed

+981
-0
lines changed

4 files changed

+981
-0
lines changed

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

Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,23 @@ import {
1515
FUNCTION_TRANSIENT_STATUSES,
1616
NAMESPACE_TRANSIENT_STATUSES,
1717
TOKEN_TRANSIENT_STATUSES,
18+
TRIGGER_INPUT_TRANSIENT_STATUSES,
19+
TRIGGER_TRANSIENT_STATUSES,
1820
} from './content.gen'
1921
import {
2022
marshalCreateCronRequest,
2123
marshalCreateDomainRequest,
2224
marshalCreateFunctionRequest,
2325
marshalCreateNamespaceRequest,
2426
marshalCreateTokenRequest,
27+
marshalCreateTriggerInputRequest,
28+
marshalCreateTriggerRequest,
29+
marshalSetTriggerInputsRequest,
2530
marshalUpdateCronRequest,
2631
marshalUpdateFunctionRequest,
2732
marshalUpdateNamespaceRequest,
33+
marshalUpdateTriggerInputRequest,
34+
marshalUpdateTriggerRequest,
2835
unmarshalCron,
2936
unmarshalDomain,
3037
unmarshalDownloadURL,
@@ -36,8 +43,13 @@ import {
3643
unmarshalListLogsResponse,
3744
unmarshalListNamespacesResponse,
3845
unmarshalListTokensResponse,
46+
unmarshalListTriggerInputsResponse,
47+
unmarshalListTriggersResponse,
3948
unmarshalNamespace,
49+
unmarshalSetTriggerInputsResponse,
4050
unmarshalToken,
51+
unmarshalTrigger,
52+
unmarshalTriggerInput,
4153
unmarshalUploadURL,
4254
} from './marshalling.gen'
4355
import type {
@@ -46,12 +58,16 @@ import type {
4658
CreateFunctionRequest,
4759
CreateNamespaceRequest,
4860
CreateTokenRequest,
61+
CreateTriggerInputRequest,
62+
CreateTriggerRequest,
4963
Cron,
5064
DeleteCronRequest,
5165
DeleteDomainRequest,
5266
DeleteFunctionRequest,
5367
DeleteNamespaceRequest,
5468
DeleteTokenRequest,
69+
DeleteTriggerInputRequest,
70+
DeleteTriggerRequest,
5571
DeployFunctionRequest,
5672
Domain,
5773
DownloadURL,
@@ -63,6 +79,8 @@ import type {
6379
GetFunctionUploadURLRequest,
6480
GetNamespaceRequest,
6581
GetTokenRequest,
82+
GetTriggerInputRequest,
83+
GetTriggerRequest,
6684
IssueJWTRequest,
6785
ListCronsRequest,
6886
ListCronsResponse,
@@ -78,11 +96,21 @@ import type {
7896
ListNamespacesResponse,
7997
ListTokensRequest,
8098
ListTokensResponse,
99+
ListTriggerInputsRequest,
100+
ListTriggerInputsResponse,
101+
ListTriggersRequest,
102+
ListTriggersResponse,
81103
Namespace,
104+
SetTriggerInputsRequest,
105+
SetTriggerInputsResponse,
82106
Token,
107+
Trigger,
108+
TriggerInput,
83109
UpdateCronRequest,
84110
UpdateFunctionRequest,
85111
UpdateNamespaceRequest,
112+
UpdateTriggerInputRequest,
113+
UpdateTriggerRequest,
86114
UploadURL,
87115
} from './types.gen'
88116

@@ -871,4 +899,233 @@ export class FunctionV1Beta1GenAPI extends API {
871899
},
872900
unmarshalToken,
873901
)
902+
903+
createTrigger = (request: Readonly<CreateTriggerRequest>) =>
904+
this.client.fetch<Trigger>(
905+
{
906+
body: JSON.stringify(
907+
marshalCreateTriggerRequest(request, this.client.settings),
908+
),
909+
headers: jsonContentHeaders,
910+
method: 'POST',
911+
path: `/functions/v1beta1/regions/${validatePathParam(
912+
'region',
913+
request.region ?? this.client.settings.defaultRegion,
914+
)}/triggers`,
915+
},
916+
unmarshalTrigger,
917+
)
918+
919+
getTrigger = (request: Readonly<GetTriggerRequest>) =>
920+
this.client.fetch<Trigger>(
921+
{
922+
method: 'GET',
923+
path: `/functions/v1beta1/regions/${validatePathParam(
924+
'region',
925+
request.region ?? this.client.settings.defaultRegion,
926+
)}/triggers/${validatePathParam('triggerId', request.triggerId)}`,
927+
},
928+
unmarshalTrigger,
929+
)
930+
931+
/**
932+
* Waits for {@link Trigger} to be in a final state.
933+
*
934+
* @param request - The request {@link GetTriggerRequest}
935+
* @param options - The waiting options
936+
* @returns A Promise of Trigger
937+
*/
938+
waitForTrigger = (
939+
request: Readonly<GetTriggerRequest>,
940+
options?: Readonly<WaitForOptions<Trigger>>,
941+
) =>
942+
waitForResource(
943+
options?.stop ??
944+
(res =>
945+
Promise.resolve(!TRIGGER_TRANSIENT_STATUSES.includes(res.status))),
946+
this.getTrigger,
947+
request,
948+
options,
949+
)
950+
951+
protected pageOfListTriggers = (request: Readonly<ListTriggersRequest>) =>
952+
this.client.fetch<ListTriggersResponse>(
953+
{
954+
method: 'GET',
955+
path: `/functions/v1beta1/regions/${validatePathParam(
956+
'region',
957+
request.region ?? this.client.settings.defaultRegion,
958+
)}/triggers`,
959+
urlParams: urlParams(
960+
['function_id', request.functionId],
961+
['order_by', request.orderBy ?? 'created_at_asc'],
962+
['page', request.page],
963+
[
964+
'page_size',
965+
request.pageSize ?? this.client.settings.defaultPageSize,
966+
],
967+
),
968+
},
969+
unmarshalListTriggersResponse,
970+
)
971+
972+
listTriggers = (request: Readonly<ListTriggersRequest>) =>
973+
enrichForPagination('triggers', this.pageOfListTriggers, request)
974+
975+
updateTrigger = (request: Readonly<UpdateTriggerRequest>) =>
976+
this.client.fetch<Trigger>(
977+
{
978+
body: JSON.stringify(
979+
marshalUpdateTriggerRequest(request, this.client.settings),
980+
),
981+
headers: jsonContentHeaders,
982+
method: 'PATCH',
983+
path: `/functions/v1beta1/regions/${validatePathParam(
984+
'region',
985+
request.region ?? this.client.settings.defaultRegion,
986+
)}/triggers/${validatePathParam('triggerId', request.triggerId)}`,
987+
},
988+
unmarshalTrigger,
989+
)
990+
991+
deleteTrigger = (request: Readonly<DeleteTriggerRequest>) =>
992+
this.client.fetch<Trigger>(
993+
{
994+
method: 'DELETE',
995+
path: `/functions/v1beta1/regions/${validatePathParam(
996+
'region',
997+
request.region ?? this.client.settings.defaultRegion,
998+
)}/triggers/${validatePathParam('triggerId', request.triggerId)}`,
999+
},
1000+
unmarshalTrigger,
1001+
)
1002+
1003+
createTriggerInput = (request: Readonly<CreateTriggerInputRequest>) =>
1004+
this.client.fetch<TriggerInput>(
1005+
{
1006+
body: JSON.stringify(
1007+
marshalCreateTriggerInputRequest(request, this.client.settings),
1008+
),
1009+
headers: jsonContentHeaders,
1010+
method: 'POST',
1011+
path: `/functions/v1beta1/regions/${validatePathParam(
1012+
'region',
1013+
request.region ?? this.client.settings.defaultRegion,
1014+
)}/trigger-inputs`,
1015+
},
1016+
unmarshalTriggerInput,
1017+
)
1018+
1019+
getTriggerInput = (request: Readonly<GetTriggerInputRequest>) =>
1020+
this.client.fetch<TriggerInput>(
1021+
{
1022+
method: 'GET',
1023+
path: `/functions/v1beta1/regions/${validatePathParam(
1024+
'region',
1025+
request.region ?? this.client.settings.defaultRegion,
1026+
)}/trigger-inputs/${validatePathParam(
1027+
'triggerInputId',
1028+
request.triggerInputId,
1029+
)}`,
1030+
},
1031+
unmarshalTriggerInput,
1032+
)
1033+
1034+
/**
1035+
* Waits for {@link TriggerInput} to be in a final state.
1036+
*
1037+
* @param request - The request {@link GetTriggerInputRequest}
1038+
* @param options - The waiting options
1039+
* @returns A Promise of TriggerInput
1040+
*/
1041+
waitForTriggerInput = (
1042+
request: Readonly<GetTriggerInputRequest>,
1043+
options?: Readonly<WaitForOptions<TriggerInput>>,
1044+
) =>
1045+
waitForResource(
1046+
options?.stop ??
1047+
(res =>
1048+
Promise.resolve(
1049+
!TRIGGER_INPUT_TRANSIENT_STATUSES.includes(res.status),
1050+
)),
1051+
this.getTriggerInput,
1052+
request,
1053+
options,
1054+
)
1055+
1056+
protected pageOfListTriggerInputs = (
1057+
request: Readonly<ListTriggerInputsRequest>,
1058+
) =>
1059+
this.client.fetch<ListTriggerInputsResponse>(
1060+
{
1061+
method: 'GET',
1062+
path: `/functions/v1beta1/regions/${validatePathParam(
1063+
'region',
1064+
request.region ?? this.client.settings.defaultRegion,
1065+
)}/trigger-inputs`,
1066+
urlParams: urlParams(
1067+
['order_by', request.orderBy ?? 'created_at_asc'],
1068+
['page', request.page],
1069+
[
1070+
'page_size',
1071+
request.pageSize ?? this.client.settings.defaultPageSize,
1072+
],
1073+
['trigger_id', request.triggerId],
1074+
),
1075+
},
1076+
unmarshalListTriggerInputsResponse,
1077+
)
1078+
1079+
listTriggerInputs = (request: Readonly<ListTriggerInputsRequest>) =>
1080+
enrichForPagination('inputs', this.pageOfListTriggerInputs, request)
1081+
1082+
setTriggerInputs = (request: Readonly<SetTriggerInputsRequest>) =>
1083+
this.client.fetch<SetTriggerInputsResponse>(
1084+
{
1085+
body: JSON.stringify(
1086+
marshalSetTriggerInputsRequest(request, this.client.settings),
1087+
),
1088+
headers: jsonContentHeaders,
1089+
method: 'PUT',
1090+
path: `/functions/v1beta1/regions/${validatePathParam(
1091+
'region',
1092+
request.region ?? this.client.settings.defaultRegion,
1093+
)}/trigger-inputs`,
1094+
},
1095+
unmarshalSetTriggerInputsResponse,
1096+
)
1097+
1098+
updateTriggerInput = (request: Readonly<UpdateTriggerInputRequest>) =>
1099+
this.client.fetch<TriggerInput>(
1100+
{
1101+
body: JSON.stringify(
1102+
marshalUpdateTriggerInputRequest(request, this.client.settings),
1103+
),
1104+
headers: jsonContentHeaders,
1105+
method: 'PATCH',
1106+
path: `/functions/v1beta1/regions/${validatePathParam(
1107+
'region',
1108+
request.region ?? this.client.settings.defaultRegion,
1109+
)}/trigger-inputs/${validatePathParam(
1110+
'triggerInputId',
1111+
request.triggerInputId,
1112+
)}`,
1113+
},
1114+
unmarshalTriggerInput,
1115+
)
1116+
1117+
deleteTriggerInput = (request: Readonly<DeleteTriggerInputRequest>) =>
1118+
this.client.fetch<TriggerInput>(
1119+
{
1120+
method: 'DELETE',
1121+
path: `/functions/v1beta1/regions/${validatePathParam(
1122+
'region',
1123+
request.region ?? this.client.settings.defaultRegion,
1124+
)}/trigger-inputs/${validatePathParam(
1125+
'triggerInputId',
1126+
request.triggerInputId,
1127+
)}`,
1128+
},
1129+
unmarshalTriggerInput,
1130+
)
8741131
}

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import type {
66
FunctionStatus,
77
NamespaceStatus,
88
TokenStatus,
9+
TriggerInputStatus,
10+
TriggerStatus,
911
} from './types.gen'
1012

1113
/** Lists transient statutes of the enum {@link CronStatus}. */
@@ -38,3 +40,17 @@ export const NAMESPACE_TRANSIENT_STATUSES: NamespaceStatus[] = [
3840

3941
/** Lists transient statutes of the enum {@link TokenStatus}. */
4042
export const TOKEN_TRANSIENT_STATUSES: TokenStatus[] = ['deleting', 'creating']
43+
44+
/** Lists transient statutes of the enum {@link TriggerInputStatus}. */
45+
export const TRIGGER_INPUT_TRANSIENT_STATUSES: TriggerInputStatus[] = [
46+
'deleting',
47+
'creating',
48+
'pending',
49+
]
50+
51+
/** Lists transient statutes of the enum {@link TriggerStatus}. */
52+
export const TRIGGER_TRANSIENT_STATUSES: TriggerStatus[] = [
53+
'deleting',
54+
'creating',
55+
'pending',
56+
]

0 commit comments

Comments
 (0)