hh-contracts 0.0.5 → 0.0.7
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/{dto/app-menu → app-menu}/get.query.ts +1 -1
- package/build/{dto/app-menu → app-menu}/get.query.js +1 -1
- package/build/common/constants/app-ability.constant.js +26 -0
- package/build/common/constants/default-pagination-config.constant.js +8 -0
- package/build/common/constants/http-method.constant.js +10 -0
- package/build/{constants/icon-keys.constant.js → common/constants/icon-key.constant.js} +5 -2
- package/build/common/constants/index.js +23 -0
- package/build/{constants → common/constants}/navigation-item-type.constant.js +2 -2
- package/build/common/constants/order-direction.constant.js +7 -0
- package/build/{constants/route-component-keys.constants.js → common/constants/route-component-key.constants.js} +2 -2
- package/build/common/index.js +21 -0
- package/build/{models → common/models}/icon-key.schema.js +1 -1
- package/build/common/models/index.js +24 -0
- package/build/common/models/json.schema.js +6 -0
- package/build/{models → common/models}/navigation-item.schemas.js +7 -4
- package/build/common/models/order.schema.js +8 -0
- package/build/common/models/pagination.schema.js +14 -0
- package/build/common/models/search.schema.js +11 -0
- package/build/common/models/timestamp.schemas.js +11 -0
- package/build/common/transforms/navigation-item.transform.js +17 -0
- package/build/{models → common/types}/index.js +2 -1
- package/build/common/types/zod.type.js +2 -0
- package/build/common/utils/create-api/create-api.js +27 -0
- package/build/{dto → common/utils/create-api}/index.js +1 -1
- package/build/common/utils/create-api/types.js +2 -0
- package/build/{ types/index.js → common/utils/index.js} +1 -1
- package/build/index.js +3 -5
- package/build/permissions/commands/create-permission.command.js +21 -0
- package/build/permissions/commands/delete-permission.command.js +13 -0
- package/build/permissions/commands/index.js +19 -0
- package/build/permissions/commands/update-permission.command.js +15 -0
- package/build/{constants → permissions}/index.js +4 -3
- package/build/permissions/permission.model.js +14 -0
- package/build/permissions/permissions.api.js +15 -0
- package/build/permissions/queries/find-many-permission.query.js +33 -0
- package/build/permissions/queries/find-permission.query.js +13 -0
- package/build/permissions/queries/index.js +18 -0
- package/common/constants/app-ability.constant.ts +25 -0
- package/common/constants/default-pagination-config.constant.ts +5 -0
- package/common/constants/http-method.constant.ts +7 -0
- package/common/constants/icon-key.constant.ts +10 -0
- package/common/constants/index.ts +7 -0
- package/common/constants/navigation-item-type.constant.ts +5 -0
- package/common/constants/order-direction.constant.ts +6 -0
- package/common/constants/route-component-key.constants.ts +5 -0
- package/common/index.ts +5 -0
- package/common/models/icon-key.schema.ts +4 -0
- package/common/models/index.ts +8 -0
- package/common/models/json.schema.ts +8 -0
- package/common/models/navigation-item.schemas.ts +29 -0
- package/common/models/order.schema.ts +6 -0
- package/common/models/pagination.schema.ts +12 -0
- package/common/models/search.schema.ts +9 -0
- package/common/models/timestamp.schemas.ts +10 -0
- package/{transforms → common/transforms}/navigation-item.transform.ts +3 -2
- package/common/types/index.ts +2 -0
- package/common/types/optionalized.type.ts +40 -0
- package/common/utils/create-api/create-api.ts +28 -0
- package/common/utils/create-api/index.ts +2 -0
- package/common/utils/create-api/types.ts +34 -0
- package/common/utils/index.ts +1 -0
- package/index.ts +3 -5
- package/package.json +1 -1
- package/permissions/commands/create-permission.command.ts +24 -0
- package/permissions/commands/delete-permission.command.ts +13 -0
- package/permissions/commands/index.ts +3 -0
- package/permissions/commands/update-permission.command.ts +17 -0
- package/permissions/index.ts +4 -0
- package/permissions/permission.model.ts +13 -0
- package/permissions/permissions.api.ts +14 -0
- package/permissions/queries/find-many-permission.query.ts +36 -0
- package/permissions/queries/find-permission.query.ts +13 -0
- package/permissions/queries/index.ts +2 -0
- package/tsconfig.json +102 -101
- package/ types/index.ts +0 -1
- package/api/index.ts +0 -0
- package/build/api/index.js +0 -1
- package/build/transforms/navigation-item.transform.js +0 -24
- package/constants/icon-keys.constant.ts +0 -7
- package/constants/index.ts +0 -3
- package/constants/navigation-item-type.constant.ts +0 -5
- package/constants/route-component-keys.constants.ts +0 -5
- package/dto/index.ts +0 -1
- package/models/icon-key.schema.ts +0 -4
- package/models/index.ts +0 -1
- package/models/navigation-item.schemas.ts +0 -26
- /package/{dto/app-menu → app-menu}/index.ts +0 -0
- /package/build/{dto/app-menu → app-menu}/index.js +0 -0
- /package/build/{models → common/models}/info.schema.js +0 -0
- /package/build/{transforms → common/transforms}/index.js +0 -0
- /package/build/{ types/zod.type.js → common/types/optionalized.type.js} +0 -0
- /package/{models → common/models}/info.schema.ts +0 -0
- /package/{transforms → common/transforms}/index.ts +0 -0
- /package/{ types → common/types}/zod.type.ts +0 -0
package/common/index.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './icon-key.schema';
|
|
2
|
+
export * from './info.schema';
|
|
3
|
+
export * from './json.schema';
|
|
4
|
+
export * from './navigation-item.schemas';
|
|
5
|
+
export * from './order.schema';
|
|
6
|
+
export * from './pagination.schema';
|
|
7
|
+
export * from './search.schema';
|
|
8
|
+
export * from './timestamp.schemas';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
const literalSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);
|
|
4
|
+
type Literal = z.infer<typeof literalSchema>;
|
|
5
|
+
export type Json = Literal | { [key: string]: Json } | Json[];
|
|
6
|
+
export const JsonSchema: z.ZodType<Json> = z.lazy(() =>
|
|
7
|
+
z.union([literalSchema, z.array(JsonSchema), z.record(JsonSchema)]),
|
|
8
|
+
);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ROUTE_COMPONENT_KEY } from '../constants';
|
|
3
|
+
import { NAVIGATION_ITEM_TYPE } from '../constants';
|
|
4
|
+
import { IconKeySchema } from './icon-key.schema';
|
|
5
|
+
import { TimestampSchema } from './timestamp.schemas';
|
|
6
|
+
|
|
7
|
+
export const NavigationItemEntityBaseSchema = z
|
|
8
|
+
.object({
|
|
9
|
+
id: z.number().int().positive(),
|
|
10
|
+
parentId: z.nullable(z.number().int().positive()),
|
|
11
|
+
label: z.string().min(1),
|
|
12
|
+
description: z.nullable(z.string().min(1)),
|
|
13
|
+
iconKey: z.nullable(IconKeySchema),
|
|
14
|
+
link: z.nullable(z.string().min(1)),
|
|
15
|
+
routeComponentKey: z.nullable(z.nativeEnum(ROUTE_COMPONENT_KEY)),
|
|
16
|
+
type: z.nativeEnum(NAVIGATION_ITEM_TYPE),
|
|
17
|
+
disabled: z.boolean(),
|
|
18
|
+
order: z.number().int().positive(),
|
|
19
|
+
})
|
|
20
|
+
.merge(TimestampSchema);
|
|
21
|
+
|
|
22
|
+
export type TNavigationItemEntityBase = z.infer<typeof NavigationItemEntityBaseSchema>;
|
|
23
|
+
export type TNavigationItemEntity = TNavigationItemEntityBase & {
|
|
24
|
+
children?: TNavigationItemEntity[];
|
|
25
|
+
};
|
|
26
|
+
export const NavigationItemEntitySchema: z.ZodType<TNavigationItemEntity> =
|
|
27
|
+
NavigationItemEntityBaseSchema.extend({
|
|
28
|
+
children: z.lazy(() => z.array(NavigationItemEntitySchema).optional()),
|
|
29
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { DEFAULT_PAGINATION_CONFIG } from '../constants';
|
|
3
|
+
|
|
4
|
+
export const PaginationSchema = z.object({
|
|
5
|
+
page: z.coerce.number().positive().default(DEFAULT_PAGINATION_CONFIG.page),
|
|
6
|
+
pageSize: z.coerce
|
|
7
|
+
.number()
|
|
8
|
+
.positive()
|
|
9
|
+
.default(DEFAULT_PAGINATION_CONFIG.pageSize)
|
|
10
|
+
.transform(val => Math.min(val, DEFAULT_PAGINATION_CONFIG.maxPageSize)),
|
|
11
|
+
total: z.coerce.number().positive(),
|
|
12
|
+
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { NavigationItemEntityBaseSchema, NavigationItemEntitySchema } from '../models';
|
|
3
|
+
import { TDeepOptionalize } from '../types';
|
|
3
4
|
|
|
4
5
|
const NavigationItemBase = NavigationItemEntityBaseSchema.transform(
|
|
5
6
|
({
|
|
@@ -28,11 +29,11 @@ type TInput = z.input<typeof NavigationItemEntityBaseSchema> & {
|
|
|
28
29
|
type TOutput = z.output<typeof NavigationItemBase> & {
|
|
29
30
|
children?: TOutput[];
|
|
30
31
|
};
|
|
31
|
-
export type TNavigationItem = z.ZodType<TOutput, z.ZodTypeDef, TInput>;
|
|
32
32
|
|
|
33
|
-
export const NavigationItem:
|
|
33
|
+
export const NavigationItem: z.ZodType<TOutput, z.ZodTypeDef, TInput> = z.lazy(() =>
|
|
34
34
|
NavigationItemEntitySchema.transform(({ children, ...rest }) => ({
|
|
35
35
|
...NavigationItemBase.parse(rest),
|
|
36
36
|
children: children?.length ? children.map(child => NavigationItem.parse(child)) : undefined,
|
|
37
37
|
})),
|
|
38
38
|
);
|
|
39
|
+
export type TNavigationItem = TDeepOptionalize<z.infer<typeof NavigationItem>>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility type that converts properties of T that include undefined to optional properties.
|
|
3
|
+
*
|
|
4
|
+
* Для каждого ключа K, если undefined расширяет T[K] (то есть T[K] содержит undefined),
|
|
5
|
+
* то в результирующем типе свойство K становится опциональным, а его тип – Exclude<T[K], undefined>.
|
|
6
|
+
*/
|
|
7
|
+
export type TOptionalize<T> = {
|
|
8
|
+
[K in keyof T as undefined extends T[K] ? K : never]?: T[K];
|
|
9
|
+
} & {
|
|
10
|
+
[K in keyof T as undefined extends T[K] ? never : K]: T[K];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Helper type to merge intersections into a single object type.
|
|
15
|
+
*/
|
|
16
|
+
export type TMerge<T> = { [K in keyof T]: T[K] };
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Итоговый утилитарный тип, который превращает свойства с undefined в опциональные.
|
|
20
|
+
*/
|
|
21
|
+
export type TOptionalized<T> = TMerge<TOptionalize<T>>;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* DeepOptionalize: Рекурсивно применяет Optionalize ко всем вложенным объектам и массивам.
|
|
25
|
+
*/
|
|
26
|
+
export type TDeepOptionalize<T> = T extends Date | null
|
|
27
|
+
? T
|
|
28
|
+
: T extends Array<infer U>
|
|
29
|
+
? Array<TDeepOptionalize<U>>
|
|
30
|
+
: T extends object
|
|
31
|
+
? TMerge<
|
|
32
|
+
{
|
|
33
|
+
// Если свойство не допускает undefined, оставляем его обязательным
|
|
34
|
+
[K in keyof T as undefined extends T[K] ? never : K]: TDeepOptionalize<T[K]>;
|
|
35
|
+
} & {
|
|
36
|
+
// Если свойство допускает undefined, делаем его опциональным
|
|
37
|
+
[K in keyof T as undefined extends T[K] ? K : never]?: TDeepOptionalize<T[K]>;
|
|
38
|
+
}
|
|
39
|
+
>
|
|
40
|
+
: T;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TApi, TController, TApiFunctionParams } from './types';
|
|
2
|
+
// Универсальная функция для подстановки параметров в шаблонную строку.
|
|
3
|
+
// Заменяет все вхождения вида ":key" на значение из объекта params.
|
|
4
|
+
function substituteParams(template: string, params: Record<string, string | number>): string {
|
|
5
|
+
return template.replace(/:(\w+)/g, (_, key) => {
|
|
6
|
+
if (!(key in params)) {
|
|
7
|
+
throw new Error(`Missing parameter: ${key}`);
|
|
8
|
+
}
|
|
9
|
+
return String(params[key]);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Функция генерации универсального API.
|
|
14
|
+
export function createApi<T extends TController>({ prefix, endpoints }: T): TApi<T> {
|
|
15
|
+
const api = {} as TApi<T>;
|
|
16
|
+
for (const key in endpoints) {
|
|
17
|
+
// Для каждого эндпоинта возвращаем функцию, которая принимает объект параметров.
|
|
18
|
+
api[key as keyof T['endpoints']] = (
|
|
19
|
+
params?: TApiFunctionParams<T['prefix'], T['endpoints'][typeof key]>,
|
|
20
|
+
) => {
|
|
21
|
+
const usedParams = params ?? {};
|
|
22
|
+
const computedPrefix = substituteParams(prefix, usedParams);
|
|
23
|
+
const computedEndpoint = substituteParams(endpoints[key], usedParams);
|
|
24
|
+
return `${computedPrefix}/${computedEndpoint}`;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return api;
|
|
28
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Извлекает динамические сегменты вида :param из строки-шаблона.
|
|
2
|
+
type TExtractPathParams<S extends string> = S extends `${infer _Start}:${infer Param}/${infer Rest}`
|
|
3
|
+
? Param | TExtractPathParams<`/${Rest}`>
|
|
4
|
+
: S extends `${infer _Start}:${infer Param}`
|
|
5
|
+
? Param
|
|
6
|
+
: never;
|
|
7
|
+
|
|
8
|
+
// Если в шаблонной строке нет динамических сегментов, возвращает пустой объект,
|
|
9
|
+
// иначе – объект с ключами, равными извлечённым параметрам, и значениями типа string | number.
|
|
10
|
+
type TParamsFromTemplate<S extends string> = TExtractPathParams<S> extends never
|
|
11
|
+
? {}
|
|
12
|
+
: {
|
|
13
|
+
[K in TExtractPathParams<S> as K]: string | number;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// Определение контроллера с шаблонным префиксом и эндпоинтами.
|
|
17
|
+
// Эндпоинты задаются как строки, в которых можно использовать динамические сегменты.
|
|
18
|
+
export type TController = {
|
|
19
|
+
prefix: string;
|
|
20
|
+
endpoints: Record<string, string>;
|
|
21
|
+
};
|
|
22
|
+
export type TApiFunctionParams<P extends string, E extends string> = TParamsFromTemplate<P> &
|
|
23
|
+
TParamsFromTemplate<E>;
|
|
24
|
+
// Для каждого эндпоинта ожидаемые параметры – это объединение параметров из префикса и из самого эндпоинта.
|
|
25
|
+
// Результирующий API: для каждого ключа из endpoints создаётся функция,
|
|
26
|
+
// которая принимает параметры, объединяющие параметры из префикса контроллера и эндпоинта.
|
|
27
|
+
export type TApi<
|
|
28
|
+
T extends TController,
|
|
29
|
+
TEndpoints extends Record<string, string> = T['endpoints'],
|
|
30
|
+
> = {
|
|
31
|
+
[K in keyof T['endpoints']]: {} extends TApiFunctionParams<T['prefix'], TEndpoints[K]>
|
|
32
|
+
? (params?: TApiFunctionParams<T['prefix'], TEndpoints[K]>) => string
|
|
33
|
+
: (params: TApiFunctionParams<T['prefix'], TEndpoints[K]>) => string;
|
|
34
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './create-api';
|
package/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { HTTP_METHOD, JsonSchema } from '../../common';
|
|
3
|
+
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
4
|
+
import { PermissionSchema } from '../permission.model';
|
|
5
|
+
|
|
6
|
+
const CreatePermissionCommandRequestSchema = PermissionSchema.omit({
|
|
7
|
+
id: true,
|
|
8
|
+
createdAt: true,
|
|
9
|
+
updatedAt: true,
|
|
10
|
+
}).extend({
|
|
11
|
+
conditions: JsonSchema.optional().nullable(),
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
export namespace CreatePermissionCommand {
|
|
15
|
+
export const getUrl = PERMISSIONS_API.create;
|
|
16
|
+
export const endpoint = PERMISSIONS_CONTROLLER.endpoints.create;
|
|
17
|
+
export const httpMethod = HTTP_METHOD.post;
|
|
18
|
+
|
|
19
|
+
export const RequestSchema = CreatePermissionCommandRequestSchema;
|
|
20
|
+
export type TRequest = z.infer<typeof RequestSchema>;
|
|
21
|
+
|
|
22
|
+
export const ResponseSchema = PermissionSchema;
|
|
23
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { HTTP_METHOD } from '../../common';
|
|
3
|
+
import { PermissionSchema } from '../permission.model';
|
|
4
|
+
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
|
+
|
|
6
|
+
export namespace DeletePermissionCommand {
|
|
7
|
+
export const getUrl = PERMISSIONS_API.delete;
|
|
8
|
+
export const endpoint = PERMISSIONS_CONTROLLER.endpoints.delete;
|
|
9
|
+
export const httpMethod = HTTP_METHOD.delete;
|
|
10
|
+
|
|
11
|
+
export const ResponseSchema = PermissionSchema;
|
|
12
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { HTTP_METHOD } from '../../common';
|
|
3
|
+
import { PermissionSchema } from '../permission.model';
|
|
4
|
+
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
|
+
import { CreatePermissionCommand } from './create-permission.command';
|
|
6
|
+
|
|
7
|
+
export namespace UpdatePermissionCommand {
|
|
8
|
+
export const getUrl = PERMISSIONS_API.update;
|
|
9
|
+
export const endpoint = PERMISSIONS_CONTROLLER.endpoints.update;
|
|
10
|
+
export const httpMethod = HTTP_METHOD.patch;
|
|
11
|
+
|
|
12
|
+
export const RequestSchema = CreatePermissionCommand.RequestSchema.partial();
|
|
13
|
+
export type TRequest = z.infer<typeof RequestSchema>;
|
|
14
|
+
|
|
15
|
+
export const ResponseSchema = PermissionSchema;
|
|
16
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { AppAbility, TimestampSchema } from '../common';
|
|
3
|
+
|
|
4
|
+
export const PermissionSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
id: z.number().positive(),
|
|
7
|
+
name: z.string().trim().min(1).max(50),
|
|
8
|
+
action: z.nativeEnum(AppAbility.ACTION),
|
|
9
|
+
subject: z.nativeEnum(AppAbility.SUBJECT),
|
|
10
|
+
conditions: z.unknown().optional().nullable(),
|
|
11
|
+
})
|
|
12
|
+
.merge(TimestampSchema);
|
|
13
|
+
export type TPermission = z.infer<typeof PermissionSchema>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createApi, TController } from '../common/utils';
|
|
2
|
+
|
|
3
|
+
export const PERMISSIONS_CONTROLLER = {
|
|
4
|
+
prefix: 'permissions',
|
|
5
|
+
endpoints: {
|
|
6
|
+
find: ':id',
|
|
7
|
+
findMany: '',
|
|
8
|
+
create: '',
|
|
9
|
+
update: ':id',
|
|
10
|
+
delete: ':id',
|
|
11
|
+
},
|
|
12
|
+
} as const satisfies TController;
|
|
13
|
+
|
|
14
|
+
export const PERMISSIONS_API = createApi(PERMISSIONS_CONTROLLER);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { HTTP_METHOD, OrderSchema, PaginationSchema, SearchSchema } from '../../common';
|
|
3
|
+
import { PermissionSchema } from '../permission.model';
|
|
4
|
+
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
|
+
|
|
6
|
+
const BaseQuerySchema = PermissionSchema.pick({
|
|
7
|
+
subject: true,
|
|
8
|
+
action: true,
|
|
9
|
+
}).partial();
|
|
10
|
+
const OrderBySchema = PermissionSchema.pick({
|
|
11
|
+
name: true,
|
|
12
|
+
subject: true,
|
|
13
|
+
})
|
|
14
|
+
.keyof()
|
|
15
|
+
.optional();
|
|
16
|
+
const FindManyPermissionsQueryRequestSchema = BaseQuerySchema.extend({ orderBy: OrderBySchema })
|
|
17
|
+
.merge(OrderSchema)
|
|
18
|
+
.merge(SearchSchema);
|
|
19
|
+
|
|
20
|
+
const FindManyPermissionsQueryResponseSchema = z
|
|
21
|
+
.object({
|
|
22
|
+
permissions: z.array(PermissionSchema),
|
|
23
|
+
})
|
|
24
|
+
.merge(PaginationSchema);
|
|
25
|
+
|
|
26
|
+
export namespace FindManyPermissionsQuery {
|
|
27
|
+
export const getUrl = PERMISSIONS_API.findMany;
|
|
28
|
+
export const endpoint = PERMISSIONS_CONTROLLER.endpoints.findMany;
|
|
29
|
+
export const httpMethod = HTTP_METHOD.get;
|
|
30
|
+
|
|
31
|
+
export const RequestSchema = FindManyPermissionsQueryRequestSchema;
|
|
32
|
+
export type TRequest = z.infer<typeof RequestSchema>;
|
|
33
|
+
|
|
34
|
+
export const ResponseSchema = FindManyPermissionsQueryResponseSchema;
|
|
35
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { HTTP_METHOD } from '../../common';
|
|
3
|
+
import { PermissionSchema } from '../permission.model';
|
|
4
|
+
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
|
+
|
|
6
|
+
export namespace FindPermissionQuery {
|
|
7
|
+
export const getUrl = PERMISSIONS_API.find;
|
|
8
|
+
export const endpoint = PERMISSIONS_CONTROLLER.endpoints.find;
|
|
9
|
+
export const httpMethod = HTTP_METHOD.get;
|
|
10
|
+
|
|
11
|
+
export const ResponseSchema = PermissionSchema;
|
|
12
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
13
|
+
}
|