-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodels.tsx
101 lines (88 loc) · 1.78 KB
/
models.tsx
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
interface Recommendation {
id: string;
description: string;
stop: { id: string; stopId: string | null; stopName: string };
stopName?: string;
stopId?: string | number;
title: string;
upvotesCount: number;
commentsCount: number;
category: string;
highlights: string[];
media: Media[];
createdAt: Date;
updatedAt?: Date;
userId: string;
userUpvoted?: boolean | null;
user?: DatabaseUserAttributes;
comments?: RecommendationComment[];
}
interface Media {
id: string;
userId: string;
createdAt: Date;
url: string;
recommendationId: string;
file?: File;
mimeType: string;
}
interface MediaComment {
id: string;
userId: string;
createdAt: Date;
url: string;
commentId: string;
file?: File;
mimeType: string;
}
interface RecommendationComment {
id: string;
recommendationId: string;
content: string;
createdAt: Date;
userId: string;
media: MediaComment[];
user?: DatabaseUserAttributes;
}
type MediaType = "RECOMMENDATION" | "COMMENT";
type Category = "LRT" | "MRT" | "MR" | "BUS" | "BRT";
type RecommendationHighlight =
| "ACCESSIBILITY"
| "CONNECTIVITY"
| "EFFICIENCY"
| "ENVIRONMENTAL"
| "QUALITY_OF_LIFE"
| "SAFETY";
interface Stop {
id?: string;
stop_id: string;
stop_name: string;
stop_lat: number;
stop_lon: number;
category: Category;
}
interface DatabaseUserAttributes {
id: string;
email: string;
name: string;
image: string;
}
interface UploadedFile {
id: string;
key: string;
buffer: Buffer;
originalname: string;
mimetype: string;
url?: string;
}
type SortType = "nearby" | "latest" | "most_upvoted";
interface FetchRecommendationsOptions {
userId?: string;
sortType: SortType;
userLat?: number;
userLon?: number;
}
interface Coordinate {
lat: number;
lon: number;
}