import { BaseService, BaseServiceOptions } from '../../api/services/base-service';
import { PagedResponse } from '../../common';
import { Wishlist, WishlistExtended } from '../interfaces';
import { CreateWishlistRequest, SearchWishlistRequest } from './wishlist.service.interfaces';

export class WishlistService extends BaseService {
  wishlistApiUrl: string;

  constructor(opts: BaseServiceOptions) {
    super(opts);
    this.wishlistApiUrl = `${this.apiUrl}/marketplace/v1/wishlists`;
  }

  search(req: SearchWishlistRequest = {}) {
    return this.get<PagedResponse<WishlistExtended>, SearchWishlistRequest>(this.wishlistApiUrl, req);
  }

  add(req: CreateWishlistRequest) {
    return this.post<Wishlist, CreateWishlistRequest>(this.wishlistApiUrl, req);
  }

  getByAssetId(assetId: string) {
    return this.get<Wishlist>(`${this.wishlistApiUrl}/${assetId}`);
  }

  remove(id: string) {
    return this.delete<Wishlist>(`${this.wishlistApiUrl}/${id}`);
  }
}
