@squonk/data-manager-client 1.2.3 → 1.2.4-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accounting/accounting.cjs +31 -13
- package/accounting/accounting.cjs.map +1 -1
- package/accounting/accounting.d.cts +77 -0
- package/accounting/accounting.d.ts +10 -1
- package/accounting/accounting.js +29 -11
- package/accounting/accounting.js.map +1 -1
- package/admin/admin.cjs +67 -27
- package/admin/admin.cjs.map +1 -1
- package/admin/admin.d.cts +324 -0
- package/admin/admin.d.ts +55 -22
- package/admin/admin.js +57 -17
- package/admin/admin.js.map +1 -1
- package/application/application.cjs +23 -13
- package/application/application.cjs.map +1 -1
- package/application/application.d.cts +57 -0
- package/application/application.d.ts +7 -1
- package/application/application.js +22 -12
- package/application/application.js.map +1 -1
- package/{chunk-UZTHSGDT.cjs → chunk-J22A7LHX.cjs} +1 -1
- package/chunk-J22A7LHX.cjs.map +1 -0
- package/{chunk-3RNIDX7T.js → chunk-UKA7G3OB.js} +1 -1
- package/{chunk-3RNIDX7T.js.map → chunk-UKA7G3OB.js.map} +1 -1
- package/configuration/configuration.cjs +13 -7
- package/configuration/configuration.cjs.map +1 -1
- package/configuration/configuration.d.cts +29 -0
- package/configuration/configuration.d.ts +4 -1
- package/configuration/configuration.js +13 -7
- package/configuration/configuration.js.map +1 -1
- package/{custom-instance-50c9dd5d.d.ts → custom-instance-3d66fe97.d.ts} +826 -826
- package/dataset/dataset.cjs +71 -72
- package/dataset/dataset.cjs.map +1 -1
- package/dataset/dataset.d.cts +315 -0
- package/dataset/dataset.d.ts +46 -16
- package/dataset/dataset.js +62 -63
- package/dataset/dataset.js.map +1 -1
- package/exchange-rate/exchange-rate.cjs +43 -32
- package/exchange-rate/exchange-rate.cjs.map +1 -1
- package/exchange-rate/exchange-rate.d.cts +180 -0
- package/exchange-rate/exchange-rate.d.ts +25 -7
- package/exchange-rate/exchange-rate.js +38 -27
- package/exchange-rate/exchange-rate.js.map +1 -1
- package/file/file.cjs +38 -22
- package/file/file.cjs.map +1 -1
- package/file/file.d.cts +154 -0
- package/file/file.d.ts +25 -10
- package/file/file.js +34 -18
- package/file/file.js.map +1 -1
- package/index.cjs +10 -10
- package/index.cjs.map +1 -1
- package/index.d.cts +2 -0
- package/index.d.ts +1 -1
- package/index.js +9 -9
- package/index.js.map +1 -1
- package/instance/instance.cjs +47 -37
- package/instance/instance.cjs.map +1 -1
- package/instance/instance.d.cts +215 -0
- package/instance/instance.d.ts +33 -12
- package/instance/instance.js +41 -31
- package/instance/instance.js.map +1 -1
- package/job/job.cjs +36 -19
- package/job/job.cjs.map +1 -1
- package/job/job.d.cts +85 -0
- package/job/job.d.ts +10 -1
- package/job/job.js +34 -17
- package/job/job.js.map +1 -1
- package/metadata/metadata.cjs +23 -26
- package/metadata/metadata.cjs.map +1 -1
- package/metadata/metadata.d.cts +132 -0
- package/metadata/metadata.d.ts +19 -7
- package/metadata/metadata.js +20 -23
- package/metadata/metadata.js.map +1 -1
- package/package.json +12 -12
- package/project/project.cjs +70 -48
- package/project/project.cjs.map +1 -1
- package/project/project.d.cts +377 -0
- package/project/project.d.ts +61 -25
- package/project/project.js +59 -37
- package/project/project.js.map +1 -1
- package/src/accounting/accounting.ts +179 -194
- package/src/admin/admin.ts +590 -735
- package/src/application/application.ts +125 -141
- package/src/configuration/configuration.ts +72 -60
- package/src/data-manager-api.schemas.ts +941 -942
- package/src/dataset/dataset.ts +591 -770
- package/src/exchange-rate/exchange-rate.ts +362 -478
- package/src/file/file.ts +292 -357
- package/src/instance/instance.ts +427 -533
- package/src/job/job.ts +187 -198
- package/src/metadata/metadata.ts +247 -339
- package/src/project/project.ts +669 -860
- package/src/task/task.ts +181 -202
- package/src/type/type.ts +72 -68
- package/src/user/user.ts +248 -286
- package/task/task.cjs +31 -15
- package/task/task.cjs.map +1 -1
- package/task/task.d.cts +103 -0
- package/task/task.d.ts +10 -1
- package/task/task.js +29 -13
- package/task/task.js.map +1 -1
- package/type/type.cjs +13 -7
- package/type/type.cjs.map +1 -1
- package/type/type.d.cts +31 -0
- package/type/type.d.ts +4 -1
- package/type/type.js +13 -7
- package/type/type.js.map +1 -1
- package/user/user.cjs +39 -28
- package/user/user.cjs.map +1 -1
- package/user/user.d.cts +104 -0
- package/user/user.d.ts +16 -4
- package/user/user.js +36 -25
- package/user/user.js.map +1 -1
- package/chunk-UZTHSGDT.cjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generated by orval v6.
|
|
2
|
+
* Generated by orval v6.20.0 🍺
|
|
3
3
|
* Do not edit manually.
|
|
4
4
|
* Dataset Manager API
|
|
5
5
|
* The Dataset Manager API service.
|
|
@@ -8,36 +8,41 @@ A service that allows *registered* users to make **Datasets** and associated **M
|
|
|
8
8
|
|
|
9
9
|
* OpenAPI spec version: 1.2
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
useMutation,
|
|
13
|
+
useQuery
|
|
14
|
+
} from '@tanstack/react-query'
|
|
12
15
|
import type {
|
|
13
|
-
UseQueryOptions,
|
|
14
|
-
UseMutationOptions,
|
|
15
|
-
QueryFunction,
|
|
16
16
|
MutationFunction,
|
|
17
|
-
|
|
17
|
+
QueryFunction,
|
|
18
18
|
QueryKey,
|
|
19
|
-
|
|
19
|
+
UseMutationOptions,
|
|
20
|
+
UseQueryOptions,
|
|
21
|
+
UseQueryResult
|
|
22
|
+
} from '@tanstack/react-query'
|
|
20
23
|
import type {
|
|
21
|
-
GetAllExchangeRatesResponse,
|
|
22
24
|
DmError,
|
|
23
|
-
GetAllApplicationExchangeRatesParams,
|
|
24
25
|
ExchangeRatePutBodyBody,
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
GetAllApplicationExchangeRatesParams,
|
|
27
|
+
GetAllExchangeRatesResponse,
|
|
27
28
|
GetAllJobExchangeRatesParams,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
GetApplicationExchangeRatesParams,
|
|
30
|
+
GetExchangeRatesResponse,
|
|
31
|
+
GetJobExchangeRatesParams
|
|
32
|
+
} from '../data-manager-api.schemas'
|
|
33
|
+
import { customInstance } from '.././custom-instance';
|
|
34
|
+
import type { ErrorType } from '.././custom-instance';
|
|
35
|
+
|
|
32
36
|
|
|
33
37
|
// eslint-disable-next-line
|
|
34
|
-
type SecondParameter<T extends (...args: any) => any> = T extends (
|
|
38
|
+
type SecondParameter<T extends (...args: any) => any> = T extends (
|
|
35
39
|
config: any,
|
|
36
|
-
args: infer P
|
|
40
|
+
args: infer P,
|
|
37
41
|
) => any
|
|
38
42
|
? P
|
|
39
43
|
: never;
|
|
40
44
|
|
|
45
|
+
|
|
41
46
|
/**
|
|
42
47
|
* For every Application that has an exchange rate the current rate is returned. If you want a list of all Applications that have no exchange rate, set the `only_undefined` query option.
|
|
43
48
|
|
|
@@ -46,84 +51,64 @@ If an Application has no specific rate it adopts the current value of the defaul
|
|
|
46
51
|
* @summary Gets Exchange Rates for all Applications
|
|
47
52
|
*/
|
|
48
53
|
export const getAllApplicationExchangeRates = (
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
params?: GetAllApplicationExchangeRatesParams,
|
|
55
|
+
options?: SecondParameter<typeof customInstance>,signal?: AbortSignal
|
|
56
|
+
) => {
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
return customInstance<GetAllExchangeRatesResponse>(
|
|
60
|
+
{url: `/application/exchange-rate`, method: 'get',
|
|
61
|
+
params, signal
|
|
62
|
+
},
|
|
63
|
+
options);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
export const getGetAllApplicationExchangeRatesQueryKey = (params?: GetAllApplicationExchangeRatesParams,) => {
|
|
68
|
+
|
|
69
|
+
return ["data-manager-api", `/application/exchange-rate`, ...(params ? [params]: [])] as const;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
export const getGetAllApplicationExchangeRatesQueryOptions = <TData = Awaited<ReturnType<typeof getAllApplicationExchangeRates>>, TError = ErrorType<void | DmError>>(params?: GetAllApplicationExchangeRatesParams, options?: { query?:UseQueryOptions<Awaited<ReturnType<typeof getAllApplicationExchangeRates>>, TError, TData>, request?: SecondParameter<typeof customInstance>}
|
|
52
74
|
) => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
>
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
TError
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const queryFn: QueryFunction<
|
|
87
|
-
Awaited<ReturnType<typeof getAllApplicationExchangeRates>>
|
|
88
|
-
> = ({ signal }) =>
|
|
89
|
-
getAllApplicationExchangeRates(params, requestOptions, signal);
|
|
90
|
-
|
|
91
|
-
return { queryKey, queryFn, ...queryOptions };
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
export type GetAllApplicationExchangeRatesQueryResult = NonNullable<
|
|
95
|
-
Awaited<ReturnType<typeof getAllApplicationExchangeRates>>
|
|
96
|
-
>;
|
|
97
|
-
export type GetAllApplicationExchangeRatesQueryError =
|
|
98
|
-
ErrorType<void | DmError>;
|
|
99
|
-
|
|
100
|
-
export const useGetAllApplicationExchangeRates = <
|
|
101
|
-
TData = Awaited<ReturnType<typeof getAllApplicationExchangeRates>>,
|
|
102
|
-
TError = ErrorType<void | DmError>
|
|
103
|
-
>(
|
|
104
|
-
params?: GetAllApplicationExchangeRatesParams,
|
|
105
|
-
options?: {
|
|
106
|
-
query?: UseQueryOptions<
|
|
107
|
-
Awaited<ReturnType<typeof getAllApplicationExchangeRates>>,
|
|
108
|
-
TError,
|
|
109
|
-
TData
|
|
110
|
-
>;
|
|
111
|
-
request?: SecondParameter<typeof customInstance>;
|
|
112
|
-
}
|
|
113
|
-
): UseQueryResult<TData, TError> & { queryKey: QueryKey } => {
|
|
114
|
-
const queryOptions = getGetAllApplicationExchangeRatesQueryOptions(
|
|
115
|
-
params,
|
|
116
|
-
options
|
|
117
|
-
);
|
|
118
|
-
|
|
119
|
-
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & {
|
|
120
|
-
queryKey: QueryKey;
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
query.queryKey = queryOptions.queryKey;
|
|
75
|
+
|
|
76
|
+
const {query: queryOptions, request: requestOptions} = options ?? {};
|
|
77
|
+
|
|
78
|
+
const queryKey = queryOptions?.queryKey ?? getGetAllApplicationExchangeRatesQueryKey(params);
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
const queryFn: QueryFunction<Awaited<ReturnType<typeof getAllApplicationExchangeRates>>> = ({ signal }) => getAllApplicationExchangeRates(params, requestOptions, signal);
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof getAllApplicationExchangeRates>>, TError, TData> & { queryKey: QueryKey }
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export type GetAllApplicationExchangeRatesQueryResult = NonNullable<Awaited<ReturnType<typeof getAllApplicationExchangeRates>>>
|
|
92
|
+
export type GetAllApplicationExchangeRatesQueryError = ErrorType<void | DmError>
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @summary Gets Exchange Rates for all Applications
|
|
96
|
+
*/
|
|
97
|
+
export const useGetAllApplicationExchangeRates = <TData = Awaited<ReturnType<typeof getAllApplicationExchangeRates>>, TError = ErrorType<void | DmError>>(
|
|
98
|
+
params?: GetAllApplicationExchangeRatesParams, options?: { query?:UseQueryOptions<Awaited<ReturnType<typeof getAllApplicationExchangeRates>>, TError, TData>, request?: SecondParameter<typeof customInstance>}
|
|
99
|
+
|
|
100
|
+
): UseQueryResult<TData, TError> & { queryKey: QueryKey } => {
|
|
101
|
+
|
|
102
|
+
const queryOptions = getGetAllApplicationExchangeRatesQueryOptions(params,options)
|
|
103
|
+
|
|
104
|
+
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & { queryKey: QueryKey };
|
|
105
|
+
|
|
106
|
+
query.queryKey = queryOptions.queryKey ;
|
|
124
107
|
|
|
125
108
|
return query;
|
|
126
|
-
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
127
112
|
|
|
128
113
|
/**
|
|
129
114
|
* Sets the Exchange Rate for a specific Application. The rate replaces any existing rate for the Application and applies to all future executions of the Application.
|
|
@@ -135,179 +120,130 @@ You need `admin` privilege to use this method.
|
|
|
135
120
|
* @summary Sets the Exchange Rate for a specific Application
|
|
136
121
|
*/
|
|
137
122
|
export const setApplicationExchangeRate = (
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
headers: { "Content-Type": "multipart/form-data" },
|
|
153
|
-
data: formData,
|
|
123
|
+
applicationId: string,
|
|
124
|
+
exchangeRatePutBodyBody: ExchangeRatePutBodyBody,
|
|
125
|
+
options?: SecondParameter<typeof customInstance>,) => {
|
|
126
|
+
|
|
127
|
+
const formData = new FormData();
|
|
128
|
+
formData.append('rate', exchangeRatePutBodyBody.rate)
|
|
129
|
+
if(exchangeRatePutBodyBody.comment !== undefined) {
|
|
130
|
+
formData.append('comment', exchangeRatePutBodyBody.comment)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return customInstance<void>(
|
|
134
|
+
{url: `/application/${applicationId}/exchange-rate`, method: 'put',
|
|
135
|
+
headers: {'Content-Type': 'multipart/form-data', },
|
|
136
|
+
data: formData
|
|
154
137
|
},
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
>(options?: {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
TError = ErrorType<DmError>,
|
|
198
|
-
TContext = unknown
|
|
199
|
-
>(options?: {
|
|
200
|
-
mutation?: UseMutationOptions<
|
|
201
|
-
Awaited<ReturnType<typeof setApplicationExchangeRate>>,
|
|
202
|
-
TError,
|
|
203
|
-
{ applicationId: string; data: ExchangeRatePutBodyBody },
|
|
204
|
-
TContext
|
|
205
|
-
>;
|
|
206
|
-
request?: SecondParameter<typeof customInstance>;
|
|
207
|
-
}) => {
|
|
208
|
-
const mutationOptions = getSetApplicationExchangeRateMutationOptions(options);
|
|
209
|
-
|
|
210
|
-
return useMutation(mutationOptions);
|
|
211
|
-
};
|
|
212
|
-
/**
|
|
138
|
+
options);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
export const getSetApplicationExchangeRateMutationOptions = <TError = ErrorType<DmError>,
|
|
144
|
+
|
|
145
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof setApplicationExchangeRate>>, TError,{applicationId: string;data: ExchangeRatePutBodyBody}, TContext>, request?: SecondParameter<typeof customInstance>}
|
|
146
|
+
): UseMutationOptions<Awaited<ReturnType<typeof setApplicationExchangeRate>>, TError,{applicationId: string;data: ExchangeRatePutBodyBody}, TContext> => {
|
|
147
|
+
const {mutation: mutationOptions, request: requestOptions} = options ?? {};
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
const mutationFn: MutationFunction<Awaited<ReturnType<typeof setApplicationExchangeRate>>, {applicationId: string;data: ExchangeRatePutBodyBody}> = (props) => {
|
|
153
|
+
const {applicationId,data} = props ?? {};
|
|
154
|
+
|
|
155
|
+
return setApplicationExchangeRate(applicationId,data,requestOptions)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
return { mutationFn, ...mutationOptions }}
|
|
162
|
+
|
|
163
|
+
export type SetApplicationExchangeRateMutationResult = NonNullable<Awaited<ReturnType<typeof setApplicationExchangeRate>>>
|
|
164
|
+
export type SetApplicationExchangeRateMutationBody = ExchangeRatePutBodyBody
|
|
165
|
+
export type SetApplicationExchangeRateMutationError = ErrorType<DmError>
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* @summary Sets the Exchange Rate for a specific Application
|
|
169
|
+
*/
|
|
170
|
+
export const useSetApplicationExchangeRate = <TError = ErrorType<DmError>,
|
|
171
|
+
|
|
172
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof setApplicationExchangeRate>>, TError,{applicationId: string;data: ExchangeRatePutBodyBody}, TContext>, request?: SecondParameter<typeof customInstance>}
|
|
173
|
+
) => {
|
|
174
|
+
|
|
175
|
+
const mutationOptions = getSetApplicationExchangeRateMutationOptions(options);
|
|
176
|
+
|
|
177
|
+
return useMutation(mutationOptions);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
213
180
|
* Gets the exchange rate history for a specific Application. Rates are returned in reverse chronological order, with the most recent rate, the current rate, as the first entry in the list.
|
|
214
181
|
|
|
215
182
|
* @summary Gets the Application's Exchange Rate history
|
|
216
183
|
*/
|
|
217
184
|
export const getApplicationExchangeRates = (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
signal?: AbortSignal
|
|
185
|
+
applicationId: string,
|
|
186
|
+
params?: GetApplicationExchangeRatesParams,
|
|
187
|
+
options?: SecondParameter<typeof customInstance>,signal?: AbortSignal
|
|
222
188
|
) => {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
method:
|
|
227
|
-
|
|
228
|
-
signal,
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
return customInstance<GetExchangeRatesResponse>(
|
|
192
|
+
{url: `/application/${applicationId}/exchange-rate`, method: 'get',
|
|
193
|
+
params, signal
|
|
229
194
|
},
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
export const getGetApplicationExchangeRatesQueryKey = (
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
)
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
export type GetApplicationExchangeRatesQueryResult = NonNullable<
|
|
278
|
-
Awaited<ReturnType<typeof getApplicationExchangeRates>>
|
|
279
|
-
>;
|
|
280
|
-
export type GetApplicationExchangeRatesQueryError = ErrorType<void | DmError>;
|
|
281
|
-
|
|
282
|
-
export const useGetApplicationExchangeRates = <
|
|
283
|
-
TData = Awaited<ReturnType<typeof getApplicationExchangeRates>>,
|
|
284
|
-
TError = ErrorType<void | DmError>
|
|
285
|
-
>(
|
|
286
|
-
applicationId: string,
|
|
287
|
-
params?: GetApplicationExchangeRatesParams,
|
|
288
|
-
options?: {
|
|
289
|
-
query?: UseQueryOptions<
|
|
290
|
-
Awaited<ReturnType<typeof getApplicationExchangeRates>>,
|
|
291
|
-
TError,
|
|
292
|
-
TData
|
|
293
|
-
>;
|
|
294
|
-
request?: SecondParameter<typeof customInstance>;
|
|
295
|
-
}
|
|
296
|
-
): UseQueryResult<TData, TError> & { queryKey: QueryKey } => {
|
|
297
|
-
const queryOptions = getGetApplicationExchangeRatesQueryOptions(
|
|
298
|
-
applicationId,
|
|
299
|
-
params,
|
|
300
|
-
options
|
|
301
|
-
);
|
|
302
|
-
|
|
303
|
-
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & {
|
|
304
|
-
queryKey: QueryKey;
|
|
305
|
-
};
|
|
306
|
-
|
|
307
|
-
query.queryKey = queryOptions.queryKey;
|
|
195
|
+
options);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
export const getGetApplicationExchangeRatesQueryKey = (applicationId: string,
|
|
200
|
+
params?: GetApplicationExchangeRatesParams,) => {
|
|
201
|
+
|
|
202
|
+
return ["data-manager-api", `/application/${applicationId}/exchange-rate`, ...(params ? [params]: [])] as const;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
export const getGetApplicationExchangeRatesQueryOptions = <TData = Awaited<ReturnType<typeof getApplicationExchangeRates>>, TError = ErrorType<void | DmError>>(applicationId: string,
|
|
207
|
+
params?: GetApplicationExchangeRatesParams, options?: { query?:UseQueryOptions<Awaited<ReturnType<typeof getApplicationExchangeRates>>, TError, TData>, request?: SecondParameter<typeof customInstance>}
|
|
208
|
+
) => {
|
|
209
|
+
|
|
210
|
+
const {query: queryOptions, request: requestOptions} = options ?? {};
|
|
211
|
+
|
|
212
|
+
const queryKey = queryOptions?.queryKey ?? getGetApplicationExchangeRatesQueryKey(applicationId,params);
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
const queryFn: QueryFunction<Awaited<ReturnType<typeof getApplicationExchangeRates>>> = ({ signal }) => getApplicationExchangeRates(applicationId,params, requestOptions, signal);
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
return { queryKey, queryFn, enabled: !!(applicationId), ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof getApplicationExchangeRates>>, TError, TData> & { queryKey: QueryKey }
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export type GetApplicationExchangeRatesQueryResult = NonNullable<Awaited<ReturnType<typeof getApplicationExchangeRates>>>
|
|
226
|
+
export type GetApplicationExchangeRatesQueryError = ErrorType<void | DmError>
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* @summary Gets the Application's Exchange Rate history
|
|
230
|
+
*/
|
|
231
|
+
export const useGetApplicationExchangeRates = <TData = Awaited<ReturnType<typeof getApplicationExchangeRates>>, TError = ErrorType<void | DmError>>(
|
|
232
|
+
applicationId: string,
|
|
233
|
+
params?: GetApplicationExchangeRatesParams, options?: { query?:UseQueryOptions<Awaited<ReturnType<typeof getApplicationExchangeRates>>, TError, TData>, request?: SecondParameter<typeof customInstance>}
|
|
234
|
+
|
|
235
|
+
): UseQueryResult<TData, TError> & { queryKey: QueryKey } => {
|
|
236
|
+
|
|
237
|
+
const queryOptions = getGetApplicationExchangeRatesQueryOptions(applicationId,params,options)
|
|
238
|
+
|
|
239
|
+
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & { queryKey: QueryKey };
|
|
240
|
+
|
|
241
|
+
query.queryKey = queryOptions.queryKey ;
|
|
308
242
|
|
|
309
243
|
return query;
|
|
310
|
-
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
|
|
311
247
|
|
|
312
248
|
/**
|
|
313
249
|
* For every Job that has an exchange rate the current rate is returned. If you want a list of all Jobs that have no exchange rate, set the `only_undefined` query option.
|
|
@@ -315,79 +251,64 @@ export const useGetApplicationExchangeRates = <
|
|
|
315
251
|
* @summary Gets Exchange Rates for all Jobs
|
|
316
252
|
*/
|
|
317
253
|
export const getAllJobExchangeRates = (
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
signal?: AbortSignal
|
|
254
|
+
params?: GetAllJobExchangeRatesParams,
|
|
255
|
+
options?: SecondParameter<typeof customInstance>,signal?: AbortSignal
|
|
321
256
|
) => {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
export const
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
export
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
options?: {
|
|
373
|
-
query?: UseQueryOptions<
|
|
374
|
-
Awaited<ReturnType<typeof getAllJobExchangeRates>>,
|
|
375
|
-
TError,
|
|
376
|
-
TData
|
|
377
|
-
>;
|
|
378
|
-
request?: SecondParameter<typeof customInstance>;
|
|
379
|
-
}
|
|
380
|
-
): UseQueryResult<TData, TError> & { queryKey: QueryKey } => {
|
|
381
|
-
const queryOptions = getGetAllJobExchangeRatesQueryOptions(params, options);
|
|
382
|
-
|
|
383
|
-
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & {
|
|
384
|
-
queryKey: QueryKey;
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
query.queryKey = queryOptions.queryKey;
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
return customInstance<GetAllExchangeRatesResponse>(
|
|
260
|
+
{url: `/job/exchange-rate`, method: 'get',
|
|
261
|
+
params, signal
|
|
262
|
+
},
|
|
263
|
+
options);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
export const getGetAllJobExchangeRatesQueryKey = (params?: GetAllJobExchangeRatesParams,) => {
|
|
268
|
+
|
|
269
|
+
return ["data-manager-api", `/job/exchange-rate`, ...(params ? [params]: [])] as const;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
export const getGetAllJobExchangeRatesQueryOptions = <TData = Awaited<ReturnType<typeof getAllJobExchangeRates>>, TError = ErrorType<void | DmError>>(params?: GetAllJobExchangeRatesParams, options?: { query?:UseQueryOptions<Awaited<ReturnType<typeof getAllJobExchangeRates>>, TError, TData>, request?: SecondParameter<typeof customInstance>}
|
|
274
|
+
) => {
|
|
275
|
+
|
|
276
|
+
const {query: queryOptions, request: requestOptions} = options ?? {};
|
|
277
|
+
|
|
278
|
+
const queryKey = queryOptions?.queryKey ?? getGetAllJobExchangeRatesQueryKey(params);
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
const queryFn: QueryFunction<Awaited<ReturnType<typeof getAllJobExchangeRates>>> = ({ signal }) => getAllJobExchangeRates(params, requestOptions, signal);
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof getAllJobExchangeRates>>, TError, TData> & { queryKey: QueryKey }
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export type GetAllJobExchangeRatesQueryResult = NonNullable<Awaited<ReturnType<typeof getAllJobExchangeRates>>>
|
|
292
|
+
export type GetAllJobExchangeRatesQueryError = ErrorType<void | DmError>
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* @summary Gets Exchange Rates for all Jobs
|
|
296
|
+
*/
|
|
297
|
+
export const useGetAllJobExchangeRates = <TData = Awaited<ReturnType<typeof getAllJobExchangeRates>>, TError = ErrorType<void | DmError>>(
|
|
298
|
+
params?: GetAllJobExchangeRatesParams, options?: { query?:UseQueryOptions<Awaited<ReturnType<typeof getAllJobExchangeRates>>, TError, TData>, request?: SecondParameter<typeof customInstance>}
|
|
299
|
+
|
|
300
|
+
): UseQueryResult<TData, TError> & { queryKey: QueryKey } => {
|
|
301
|
+
|
|
302
|
+
const queryOptions = getGetAllJobExchangeRatesQueryOptions(params,options)
|
|
303
|
+
|
|
304
|
+
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & { queryKey: QueryKey };
|
|
305
|
+
|
|
306
|
+
query.queryKey = queryOptions.queryKey ;
|
|
388
307
|
|
|
389
308
|
return query;
|
|
390
|
-
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
|
|
391
312
|
|
|
392
313
|
/**
|
|
393
314
|
* Sets the Exchange Rate for a specific job. The rate replaces any existing rate for the Job and applies immediately and future job executions for this Job will inherit this rate.
|
|
@@ -401,165 +322,128 @@ You need `admin` privilege to use this method.
|
|
|
401
322
|
* @summary Sets the Exchange Rate for a specific Job
|
|
402
323
|
*/
|
|
403
324
|
export const setJobPricing = (
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
headers: { "Content-Type": "multipart/form-data" },
|
|
419
|
-
data: formData,
|
|
325
|
+
jobId: number,
|
|
326
|
+
exchangeRatePutBodyBody: ExchangeRatePutBodyBody,
|
|
327
|
+
options?: SecondParameter<typeof customInstance>,) => {
|
|
328
|
+
|
|
329
|
+
const formData = new FormData();
|
|
330
|
+
formData.append('rate', exchangeRatePutBodyBody.rate)
|
|
331
|
+
if(exchangeRatePutBodyBody.comment !== undefined) {
|
|
332
|
+
formData.append('comment', exchangeRatePutBodyBody.comment)
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
return customInstance<void>(
|
|
336
|
+
{url: `/job/${jobId}/exchange-rate`, method: 'put',
|
|
337
|
+
headers: {'Content-Type': 'multipart/form-data', },
|
|
338
|
+
data: formData
|
|
420
339
|
},
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
>(options?: {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
TError = ErrorType<DmError>,
|
|
464
|
-
TContext = unknown
|
|
465
|
-
>(options?: {
|
|
466
|
-
mutation?: UseMutationOptions<
|
|
467
|
-
Awaited<ReturnType<typeof setJobPricing>>,
|
|
468
|
-
TError,
|
|
469
|
-
{ jobId: number; data: ExchangeRatePutBodyBody },
|
|
470
|
-
TContext
|
|
471
|
-
>;
|
|
472
|
-
request?: SecondParameter<typeof customInstance>;
|
|
473
|
-
}) => {
|
|
474
|
-
const mutationOptions = getSetJobPricingMutationOptions(options);
|
|
475
|
-
|
|
476
|
-
return useMutation(mutationOptions);
|
|
477
|
-
};
|
|
478
|
-
/**
|
|
340
|
+
options);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
export const getSetJobPricingMutationOptions = <TError = ErrorType<DmError>,
|
|
346
|
+
|
|
347
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof setJobPricing>>, TError,{jobId: number;data: ExchangeRatePutBodyBody}, TContext>, request?: SecondParameter<typeof customInstance>}
|
|
348
|
+
): UseMutationOptions<Awaited<ReturnType<typeof setJobPricing>>, TError,{jobId: number;data: ExchangeRatePutBodyBody}, TContext> => {
|
|
349
|
+
const {mutation: mutationOptions, request: requestOptions} = options ?? {};
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
const mutationFn: MutationFunction<Awaited<ReturnType<typeof setJobPricing>>, {jobId: number;data: ExchangeRatePutBodyBody}> = (props) => {
|
|
355
|
+
const {jobId,data} = props ?? {};
|
|
356
|
+
|
|
357
|
+
return setJobPricing(jobId,data,requestOptions)
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
return { mutationFn, ...mutationOptions }}
|
|
364
|
+
|
|
365
|
+
export type SetJobPricingMutationResult = NonNullable<Awaited<ReturnType<typeof setJobPricing>>>
|
|
366
|
+
export type SetJobPricingMutationBody = ExchangeRatePutBodyBody
|
|
367
|
+
export type SetJobPricingMutationError = ErrorType<DmError>
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* @summary Sets the Exchange Rate for a specific Job
|
|
371
|
+
*/
|
|
372
|
+
export const useSetJobPricing = <TError = ErrorType<DmError>,
|
|
373
|
+
|
|
374
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof setJobPricing>>, TError,{jobId: number;data: ExchangeRatePutBodyBody}, TContext>, request?: SecondParameter<typeof customInstance>}
|
|
375
|
+
) => {
|
|
376
|
+
|
|
377
|
+
const mutationOptions = getSetJobPricingMutationOptions(options);
|
|
378
|
+
|
|
379
|
+
return useMutation(mutationOptions);
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
479
382
|
* Gets all the exchange rate history for a specific Job. Rates are returned in reverse chronological order, with the most recent rate, the current rate, as the first entry in the list.
|
|
480
383
|
|
|
481
384
|
* @summary Gets Job Exchange Rates
|
|
482
385
|
*/
|
|
483
386
|
export const getJobExchangeRates = (
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
signal?: AbortSignal
|
|
387
|
+
jobId: number,
|
|
388
|
+
params?: GetJobExchangeRatesParams,
|
|
389
|
+
options?: SecondParameter<typeof customInstance>,signal?: AbortSignal
|
|
488
390
|
) => {
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
query?:
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
params?: GetJobExchangeRatesParams,
|
|
543
|
-
options?: {
|
|
544
|
-
query?: UseQueryOptions<
|
|
545
|
-
Awaited<ReturnType<typeof getJobExchangeRates>>,
|
|
546
|
-
TError,
|
|
547
|
-
TData
|
|
548
|
-
>;
|
|
549
|
-
request?: SecondParameter<typeof customInstance>;
|
|
550
|
-
}
|
|
551
|
-
): UseQueryResult<TData, TError> & { queryKey: QueryKey } => {
|
|
552
|
-
const queryOptions = getGetJobExchangeRatesQueryOptions(
|
|
553
|
-
jobId,
|
|
554
|
-
params,
|
|
555
|
-
options
|
|
556
|
-
);
|
|
557
|
-
|
|
558
|
-
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & {
|
|
559
|
-
queryKey: QueryKey;
|
|
560
|
-
};
|
|
561
|
-
|
|
562
|
-
query.queryKey = queryOptions.queryKey;
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
return customInstance<GetExchangeRatesResponse>(
|
|
394
|
+
{url: `/job/${jobId}/exchange-rate`, method: 'get',
|
|
395
|
+
params, signal
|
|
396
|
+
},
|
|
397
|
+
options);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
export const getGetJobExchangeRatesQueryKey = (jobId: number,
|
|
402
|
+
params?: GetJobExchangeRatesParams,) => {
|
|
403
|
+
|
|
404
|
+
return ["data-manager-api", `/job/${jobId}/exchange-rate`, ...(params ? [params]: [])] as const;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
export const getGetJobExchangeRatesQueryOptions = <TData = Awaited<ReturnType<typeof getJobExchangeRates>>, TError = ErrorType<void | DmError>>(jobId: number,
|
|
409
|
+
params?: GetJobExchangeRatesParams, options?: { query?:UseQueryOptions<Awaited<ReturnType<typeof getJobExchangeRates>>, TError, TData>, request?: SecondParameter<typeof customInstance>}
|
|
410
|
+
) => {
|
|
411
|
+
|
|
412
|
+
const {query: queryOptions, request: requestOptions} = options ?? {};
|
|
413
|
+
|
|
414
|
+
const queryKey = queryOptions?.queryKey ?? getGetJobExchangeRatesQueryKey(jobId,params);
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
const queryFn: QueryFunction<Awaited<ReturnType<typeof getJobExchangeRates>>> = ({ signal }) => getJobExchangeRates(jobId,params, requestOptions, signal);
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
return { queryKey, queryFn, enabled: !!(jobId), ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof getJobExchangeRates>>, TError, TData> & { queryKey: QueryKey }
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
export type GetJobExchangeRatesQueryResult = NonNullable<Awaited<ReturnType<typeof getJobExchangeRates>>>
|
|
428
|
+
export type GetJobExchangeRatesQueryError = ErrorType<void | DmError>
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* @summary Gets Job Exchange Rates
|
|
432
|
+
*/
|
|
433
|
+
export const useGetJobExchangeRates = <TData = Awaited<ReturnType<typeof getJobExchangeRates>>, TError = ErrorType<void | DmError>>(
|
|
434
|
+
jobId: number,
|
|
435
|
+
params?: GetJobExchangeRatesParams, options?: { query?:UseQueryOptions<Awaited<ReturnType<typeof getJobExchangeRates>>, TError, TData>, request?: SecondParameter<typeof customInstance>}
|
|
436
|
+
|
|
437
|
+
): UseQueryResult<TData, TError> & { queryKey: QueryKey } => {
|
|
438
|
+
|
|
439
|
+
const queryOptions = getGetJobExchangeRatesQueryOptions(jobId,params,options)
|
|
440
|
+
|
|
441
|
+
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & { queryKey: QueryKey };
|
|
442
|
+
|
|
443
|
+
query.queryKey = queryOptions.queryKey ;
|
|
563
444
|
|
|
564
445
|
return query;
|
|
565
|
-
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|