-
Notifications
You must be signed in to change notification settings - Fork 0
/
types.ts
86 lines (77 loc) · 2.13 KB
/
types.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
import { Document } from "mongoose";
export interface User {
firstname: string;
username: string;
passwordHash: string; // Hasło powinno być przechowywane w bezpiecznej formie jako hash
email: string;
createdAt: Date;
updatedAt: Date;
}
export interface IUser {
firstname: string;
useremail: string;
email: string;
password: string;
role: "USER" | "ADMIN";
//ToDo - add moderator to role
}
export interface IAuthor {
firstname: string;
secondname: string;
email?: string;
}
export type Recipient = "MAYOR" | "CITY_COUNCIL" | "COUNTY_COUNCIL";
export interface IquestionForms<Recipient> extends IAuthor, Document {
_id: string;
question: string;
category: string;
recipient: Recipient; // Additional field for questions to the city council or county
district?: string;
status?: "draft" | "published" | "rejected";
// Dodatkowe pole dla pytań do rady gminy lub powiatu
}
export interface IRating {
userId: { _id: string }; // Id użytkownika
questionId: { _id: string }; // Id pytania
rating: number; // Ocena w skali od 1 do 10
}
export interface IquestionRating {
userId: { _id: string }; // Autor pytania
questionId: { _id: string }; // Treść pytania
rating: Pick<IRating, "rating">[]; // Średnia ocena pytania
} // Rating.ts
export interface IAppData {
questionForms: IquestionForms<"MAYOR" | "CITY_COUNCIL" | "COUNTY_COUNCIL">[]; // Formularze pytań
users: User[]; // Zalogowani użytkownicy
ratings: IRating[]; // Oceny pytań
questionRates: IquestionRating[]; // Zapytania widoczne do oceny
}
// Możliwe dodatkowe typy dla obsługi formularza i autoryzacji:
// LoginForm.ts
export interface LoginFormValues {
username: string;
password: string;
}
// RegisterForm.ts
export interface RegisterFormValues {
username: string;
email: string;
password: string;
confirmPassword: string;
}
// AuthPayload.ts
export interface AuthPayload {
user: User;
token: string; // JWT token
}
// ErrorResponse.ts
export interface ErrorResponse {
statusCode: number;
message: string;
error: string;
}
export interface IOkręgWyborczy {
nr: number;
zasieg: string;
liczbaMandatow: number;
}