UNPKG

gorsejs

Version:

TypeScript SDK for Gorse recommender system.

131 lines (120 loc) 3.03 kB
import { AxiosInstance, AxiosResponse } from "axios"; import { CursorOptions, Feedback, FeedbackCursor, FeedbackFilter, FeedbackOptions, FeedbackTypeFilter, Success, } from "../interfaces"; export function getFeedback<T extends string>( axios: AxiosInstance, { type, userId, itemId, cursorOptions }: FeedbackOptions<T> ) { return axios .get<Feedback<T>, AxiosResponse<Feedback<T>>>( `/feedback/${type}/${userId}/${itemId}`, { params: cursorOptions, } ) .then(({ data }) => { return data; }); } export function deleteFeedback<T extends string>( axios: AxiosInstance, { type, userId, itemId }: FeedbackFilter<T> ) { return axios .delete<Feedback<T>, AxiosResponse<Feedback<T>>>( `/feedback/${type}/${userId}/${itemId}` ) .then(({ data }) => { return data; }); } export function getFeedbacksByType<T extends string>( axios: AxiosInstance, { type, cursorOptions }: FeedbackTypeFilter<T> ) { return axios .get<FeedbackCursor<T>, AxiosResponse<FeedbackCursor<T>>>( `/feedback/${type}`, { params: cursorOptions, } ) .then(({ data }) => { return data; }); } export function getFeedbacks<T extends string>( axios: AxiosInstance, options?: CursorOptions ) { return axios .get<FeedbackCursor<T>, AxiosResponse<FeedbackCursor<T>>>(`/feedback`, { params: options, }) .then(({ data }) => { return data; }); } export function insertFeedbacks<T extends string>( axios: AxiosInstance, feedbacksList: Feedback<T>[] ) { return axios .post<Success, AxiosResponse<Success>>(`/feedback`, feedbacksList) .then(({ data }) => { return data.RowAffected; }); } export function upsertFeedbacks<T extends string>( axios: AxiosInstance, feedbacksList: Feedback<T>[] ) { return axios .put<Success, AxiosResponse<Success>>(`/feedback`, feedbacksList) .then(({ data }) => { return data.RowAffected; }); } export function itemFeedbacks<T extends string>( axios: AxiosInstance, itemId: T ) { return axios .get<Success, AxiosResponse<Feedback<T>[]>>(`/item/${itemId}/feedback`) .then(({ data }) => data); } export function itemFeedbackByType<T extends string>( axios: AxiosInstance, { itemId, feedbackType }: { itemId: T; feedbackType: T } ) { return axios .get<Success, AxiosResponse<Feedback<T>[]>>( `/item/${itemId}/feedback/${feedbackType}` ) .then(({ data }) => data); } export function userFeedbacks<T extends string>( axios: AxiosInstance, userId: T ) { return axios .get<Success, AxiosResponse<Feedback<T>[]>>(`/user/${userId}/feedback`) .then(({ data }) => data); } export function userFeedbackByType<T extends string>( axios: AxiosInstance, { userId, feedbackType }: { userId: T; feedbackType: T } ) { return axios .get<Success, AxiosResponse<Feedback<T>[]>>( `/user/${userId}/feedback/${feedbackType}` ) .then(({ data }) => data); }