-
Notifications
You must be signed in to change notification settings - Fork 10
/
recommend.ts
80 lines (76 loc) · 1.7 KB
/
recommend.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
import { AxiosInstance, AxiosResponse } from "axios";
import {
Feedback,
LatestOutput,
PopularOptions,
PopularOutput,
RecommendOptions,
SessionRecommendOptions,
} from "../interfaces";
export function getPopular(
axios: AxiosInstance,
{ category = "", cursorOptions }: PopularOptions
) {
return axios
.get<PopularOutput[], AxiosResponse<PopularOutput[]>>(
`/popular/${category}`,
{
params: cursorOptions,
}
)
.then(({ data }) => {
return data;
});
}
export function getLatest(
axios: AxiosInstance,
{ category = "", cursorOptions }: PopularOptions
) {
return axios
.get<LatestOutput[], AxiosResponse<LatestOutput[]>>(`/latest/${category}`, {
params: cursorOptions,
})
.then(({ data }) => {
return data;
});
}
export function getRecommend(
axios: AxiosInstance,
{
userId,
category = "",
cursorOptions,
writeBackType,
writeBackDelay,
}: RecommendOptions
) {
return axios
.get<string[], AxiosResponse<string[]>>(
`/recommend/${userId}/${category}`,
{
params: {
...(writeBackType ? { "write-back-type": writeBackType } : {}),
...(writeBackDelay ? { "write-back-delay": writeBackDelay } : {}),
...cursorOptions,
},
}
)
.then(({ data }) => {
return data;
});
}
export function getSessionRecommend<T extends string>(
axios: AxiosInstance,
feedbackList: Feedback<T>[] = [],
{ category = "", cursorOptions }: SessionRecommendOptions
) {
return axios
.post(`/session/recommend/${category}`, feedbackList, {
params: {
...cursorOptions,
},
})
.then(({ data }) => {
return data;
});
}