|
3 | 3 | * These types describe the structure of dynamically accessed routes. |
4 | 4 | */ |
5 | 5 |
|
| 6 | +import type { |
| 7 | + Channel, |
| 8 | + File, |
| 9 | + Organization, |
| 10 | + Reaction, |
| 11 | + Task, |
| 12 | + Vote, |
| 13 | +} from "./types.ts"; |
| 14 | + |
| 15 | +type ApiResponse<T> = Promise<{ |
| 16 | + data?: T | { message: string } | null; |
| 17 | + error?: { status: unknown; value: unknown } | null; |
| 18 | +}>; |
| 19 | + |
6 | 20 | export type DynamicRoute<T> = { |
7 | | - get: () => Promise<{ data?: T; error?: { status: number; value: unknown } }>; |
8 | | - patch: ( |
9 | | - body?: Partial<T>, |
10 | | - ) => Promise<{ data?: T; error?: { status: number; value: unknown } }>; |
11 | | - delete: () => Promise<{ |
12 | | - data?: { success: boolean }; |
13 | | - error?: { status: number; value: unknown }; |
14 | | - }>; |
| 21 | + get: () => ApiResponse<T>; |
| 22 | + patch: (body?: Partial<T>) => ApiResponse<T>; |
| 23 | + delete: () => ApiResponse<{ success: boolean }>; |
| 24 | +}; |
| 25 | + |
| 26 | +export type VoteRoute = DynamicRoute<Vote> & { |
15 | 27 | cast?: { |
16 | | - post: (body: { |
17 | | - votedOptions: number[]; |
18 | | - }) => Promise<{ |
19 | | - data?: unknown; |
20 | | - error?: { status: number; value: unknown }; |
21 | | - }>; |
| 28 | + post: (body: { votedOptions: number[] }) => ApiResponse<Vote>; |
22 | 29 | }; |
23 | 30 | }; |
24 | 31 |
|
| 32 | +export type FileRoute = DynamicRoute<File>; |
| 33 | + |
| 34 | +export type TaskRoute = DynamicRoute<Task>; |
| 35 | + |
25 | 36 | export type OrganizationMembersRoute = { |
26 | | - get: () => Promise<{ |
27 | | - data?: unknown; |
28 | | - error?: { status: number; value: unknown }; |
29 | | - }>; |
30 | | - post: (body: { |
31 | | - userId: string; |
32 | | - permission: string; |
33 | | - }) => Promise<{ data?: unknown; error?: { status: number; value: unknown } }>; |
| 37 | + get: () => ApiResponse<unknown>; |
| 38 | + post: (body: { userId: string; permission: string }) => ApiResponse<unknown>; |
34 | 39 | } & { |
35 | 40 | [userId: string]: { |
36 | | - delete: () => Promise<{ |
37 | | - data?: unknown; |
38 | | - error?: { status: number; value: unknown }; |
39 | | - }>; |
| 41 | + delete: () => ApiResponse<unknown>; |
40 | 42 | }; |
41 | 43 | }; |
42 | 44 |
|
43 | | -export type OrganizationRoute = DynamicRoute<unknown> & { |
| 45 | +export type OrganizationRoute = DynamicRoute<Organization> & { |
44 | 46 | members: OrganizationMembersRoute; |
45 | 47 | }; |
46 | 48 |
|
| 49 | +export type ChannelRoute = DynamicRoute<Channel>; |
| 50 | + |
47 | 51 | export type MessageReactionsRoute = { |
48 | | - get: () => Promise<{ |
49 | | - data?: unknown; |
50 | | - error?: { status: number; value: unknown }; |
51 | | - }>; |
52 | | - post: (body: { |
53 | | - emoji: string; |
54 | | - }) => Promise<{ data?: unknown; error?: { status: number; value: unknown } }>; |
| 52 | + get: () => ApiResponse<Reaction[]>; |
| 53 | + post: (body: { emoji: string }) => ApiResponse<Reaction>; |
55 | 54 | } & { |
56 | | - [emoji: string]: { |
57 | | - delete: () => Promise<{ |
58 | | - data?: unknown; |
59 | | - error?: { status: number; value: unknown }; |
60 | | - }>; |
61 | | - }; |
| 55 | + [emoji: string]: |
| 56 | + | { |
| 57 | + delete: () => ApiResponse<{ success: boolean }>; |
| 58 | + } |
| 59 | + | undefined; |
62 | 60 | }; |
63 | 61 |
|
64 | 62 | export type MessagesRoute = { |
|
0 commit comments