-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
/
permissions.ts
49 lines (46 loc) · 1.52 KB
/
permissions.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import type { DirectusPermission } from '../../../schema/permission.js';
import type { ApplyQueryFields, Query } from '../../../types/index.js';
import type { RestCommand } from '../../types.js';
export type CreatePermissionOutput<
Schema extends object,
TQuery extends Query<Schema, Item>,
Item extends object = DirectusPermission<Schema>,
> = ApplyQueryFields<Schema, Item, TQuery['fields']>;
/**
* Create multiple new permission rules
*
* @param items The permission rules to create
* @param query Optional return data query
*
* @returns Returns the permission objects for the created permissions.
*/
export const createPermissions =
<Schema extends object, const TQuery extends Query<Schema, DirectusPermission<Schema>>>(
items: Partial<DirectusPermission<Schema>>[],
query?: TQuery,
): RestCommand<CreatePermissionOutput<Schema, TQuery>[], Schema> =>
() => ({
path: `/permissions`,
params: query ?? {},
body: JSON.stringify(items),
method: 'POST',
});
/**
* Create a new permission rule
*
* @param item The permission rule to create
* @param query Optional return data query
*
* @returns Returns the permission object for the created permission.
*/
export const createPermission =
<Schema extends object, const TQuery extends Query<Schema, DirectusPermission<Schema>>>(
item: Partial<DirectusPermission<Schema>>,
query?: TQuery,
): RestCommand<CreatePermissionOutput<Schema, TQuery>, Schema> =>
() => ({
path: `/permissions`,
params: query ?? {},
body: JSON.stringify(item),
method: 'POST',
});