export interface ProductData {
  category: string;
  name: string;
  image: string;
  description: string;
  place: string;
  process: string;
  people: string;
  pairing: string;
  available: boolean;
  isFeatured: boolean;
  price: number;
  customID: string;
  stripeID: string;
}

export interface ProductDataDB extends ProductData {
  id: string;
  _id: string;
  __v: number;
}

export interface FeaturedProductsResponseGet {
  message: string;
  featuredProducts: Array<ProductDataDB>;
}

export interface ProductsResponseGet {
  message: string;
  product: Array<ProductData>;
  productCount: number;
  next: string;
  previous: string;
}

export interface ProductsResponseError {
  message: string;
}

export interface ProductsResponsePost {
  message: string;
  product: ProductData;
}

interface SingleProductResponseGet {
  message: string;
  product: ProductDataDB;
  similarProducts: Array<ProductDataDB>;
}

export type SingleProductResponse =
  | SingleProductResponseGet
  | ProductsResponseError;

export type ProductsResponse =
  | ProductsResponseGet
  | ProductsResponsePost
  | ProductsResponseError;

export type FeaturedProductsResponse =
  | FeaturedProductsResponseGet
  | ProductsResponseError;
