forked from sfwnisme/school-management-system
-
Notifications
You must be signed in to change notification settings - Fork 0
/
definitions.d.ts
121 lines (106 loc) · 2.2 KB
/
definitions.d.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
50
51
52
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import { ReactNode } from "react";
// this type handle the setState function when using prev
// Ex: setState((prev)=> !prev) as UpdateStateType
type UpdateStateType = (
updateFn: (prev: boolean) => boolean
) => void | undefined;
type UpdateStateAdvancedType<S> = (updateFn: (prev: S) => S) => void;
//---------------------------------
// database types
//---------------------------------
type RoleTypes = "Admin" | "HR" | "User";
type StringOrNull = string | null;
interface IUser {
id?: 1;
userName?: string;
email?: string;
imagePath?: string;
fullName?: string;
roleId: number;
roles?: string[];
createdAt?: string;
lastUpdate?: string;
}
interface YupUserUpdateInputs {
id?: number;
userName: string;
fullName: string;
email: string;
roleId?: string;
// password?: string;
// confirmPassword?: string;
}
interface YupUserResetPassword
extends Pick<YupUserCreateInputs, "password" | "confirmPassword" | "email"> {}
interface YupUserCreateInputs {
userName: string;
fullName: string;
email: string;
password: string;
confirmPassword: string;
image: keyof number;
}
export interface IMUser {
username: string;
name: string;
image?: string;
role: string[];
}
interface IInstructor {
instId: number;
name: string;
address: string;
position: string;
imagePath: null;
supervisorId: number;
salary: number;
deptId: number;
}
interface IDepartment {
deptId: number;
managerId: number;
name: string;
}
interface IStudent {
studId: number;
name: string;
address: string;
departmentName: null;
}
interface ISubject {
subjectId: number;
subjectName: string;
departments: {
departmentId: number;
departmentName: string;
}[];
}
interface IRole {
id?: number;
name: string;
hasRole?: boolean;
}
enum RolesEnum {
Admin = "Admin",
User = "User",
HR = "HR",
}
interface IRoleByUserId {
userId: number;
roles: IRole[];
}
//---------------------------------
// react hook form types
//---------------------------------
type LoginInputTypes = {
username: string;
password: string;
};
interface FormDataObjectType<T> {
[key: string]: T;
}
interface IResponse {
statusCode: number;
success: boolean | null;
message: string;
}