import { Document } from "mongoose"; export interface IFavourite { id?: string; _id?: string; userId: string; serviceId: string; createdAt: Date; } export interface IFavouriteDocument extends Omit, Document { _id: string; } export interface IFavouritesAdapter { create(data: Omit): Promise; delete(data: Omit): Promise; find(filters: Omit): Promise; findOne(filters: Omit): Promise; paginate(filters: PaginateFavouritesParams): Promise; } export type FindFavouritesParams = { id?: string; userId?: string; serviceId?: string; sessionUser: string; startDate?: Date; endDate?: Date; }; export type PaginateFavouritesParams = FindFavouritesParams & { page: number; limit: number; }; export type PaginateFavouritesResults = { data: IFavourite[]; page: number; pages: number; }; export type CreateFavouriteParams = { userId: string; serviceId: string; sessionUser: string; }; export type DeleteFavouriteParams = { id: string; sessionUser: string; }; export interface IFavouritesManager { favourites: IFavouritesAdapter; createFavourite(data: CreateFavouriteParams): Promise; deleteFavourite(data: DeleteFavouriteParams): Promise; paginate(data: PaginateFavouritesParams): Promise; }