mirror of
https://github.com/logto-io/logto.git
synced 2024-12-30 20:33:54 -05:00
refactor(cloud): guard api response
This commit is contained in:
parent
1808a25570
commit
9a3b3f4bae
3 changed files with 19 additions and 11 deletions
|
@ -28,7 +28,8 @@
|
||||||
"dotenv": "^16.0.0",
|
"dotenv": "^16.0.0",
|
||||||
"find-up": "^6.3.0",
|
"find-up": "^6.3.0",
|
||||||
"http-proxy": "^1.18.1",
|
"http-proxy": "^1.18.1",
|
||||||
"mime-types": "^2.1.35"
|
"mime-types": "^2.1.35",
|
||||||
|
"zod": "^3.20.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@silverhand/eslint-config": "2.0.1",
|
"@silverhand/eslint-config": "2.0.1",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { Router } from '@withtyped/server';
|
import { Router } from '@withtyped/server';
|
||||||
|
import { z } from 'zod';
|
||||||
|
|
||||||
import { client } from '#src/queries/index.js';
|
import { client } from '#src/queries/index.js';
|
||||||
import { createTenantsQueries } from '#src/queries/tenants.js';
|
import { createTenantsQueries } from '#src/queries/tenants.js';
|
||||||
|
@ -6,15 +7,19 @@ import { getTenantIdFromManagementApiIndicator } from '#src/utils/tenant.js';
|
||||||
|
|
||||||
const { getManagementApiLikeIndicatorsForUser } = createTenantsQueries(client);
|
const { getManagementApiLikeIndicatorsForUser } = createTenantsQueries(client);
|
||||||
|
|
||||||
export const tenants = new Router('/tenants').get('/', {}, async (context, next) => {
|
export const tenants = new Router('/tenants').get(
|
||||||
const { rows } = await getManagementApiLikeIndicatorsForUser('some_user_id');
|
'/',
|
||||||
|
{ response: z.object({ id: z.string(), indicator: z.string() }).array() },
|
||||||
|
async (context, next) => {
|
||||||
|
const { rows } = await getManagementApiLikeIndicatorsForUser('some_user_id');
|
||||||
|
|
||||||
const tenants = rows
|
const tenants = rows
|
||||||
.map(({ indicator }) => ({
|
.map(({ indicator }) => ({
|
||||||
id: getTenantIdFromManagementApiIndicator(indicator),
|
id: getTenantIdFromManagementApiIndicator(indicator),
|
||||||
indicator,
|
indicator,
|
||||||
}))
|
}))
|
||||||
.filter((tenant): tenant is { id: string; indicator: string } => Boolean(tenant.id));
|
.filter((tenant): tenant is { id: string; indicator: string } => Boolean(tenant.id));
|
||||||
|
|
||||||
return next({ ...context, json: tenants });
|
return next({ ...context, json: tenants });
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
|
@ -126,6 +126,7 @@ importers:
|
||||||
nodemon: ^2.0.19
|
nodemon: ^2.0.19
|
||||||
prettier: ^2.8.1
|
prettier: ^2.8.1
|
||||||
typescript: ^4.9.4
|
typescript: ^4.9.4
|
||||||
|
zod: ^3.20.2
|
||||||
dependencies:
|
dependencies:
|
||||||
'@logto/schemas': link:../schemas
|
'@logto/schemas': link:../schemas
|
||||||
'@logto/shared': link:../shared
|
'@logto/shared': link:../shared
|
||||||
|
@ -137,6 +138,7 @@ importers:
|
||||||
find-up: 6.3.0
|
find-up: 6.3.0
|
||||||
http-proxy: 1.18.1
|
http-proxy: 1.18.1
|
||||||
mime-types: 2.1.35
|
mime-types: 2.1.35
|
||||||
|
zod: 3.20.2
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@silverhand/eslint-config': 2.0.1_kjzxg5porcw5dx54sezsklj5cy
|
'@silverhand/eslint-config': 2.0.1_kjzxg5porcw5dx54sezsklj5cy
|
||||||
'@silverhand/ts-config': 2.0.2_typescript@4.9.4
|
'@silverhand/ts-config': 2.0.2_typescript@4.9.4
|
||||||
|
|
Loading…
Reference in a new issue