import { stringify } from 'qs-esm'
import { PaginatedDocs } from 'payload'
import { Highlight } from '@/payload-types'

export const fetchHighlights = async (): Promise<PaginatedDocs<Highlight> | undefined> => {
  const date = new Date();
  date.setHours(0, 0, 0, 0);

  const query: any = {
    and: [
      {
        from: {
          less_than_equal: date.toISOString(),
        },
        until: {
          greater_than_equal: date.toISOString(),
        }
      }
    ],
  }

  const stringifiedQuery = stringify(
    {
      sort: "date",
      where: query,
      limit: 3
    },
    { addQueryPrefix: true },
  )

  const response = await fetch(`http://localhost:3000/api/highlight${stringifiedQuery}`)
  if (!response.ok) return undefined
  return response.json()
}

export const fetchHighlightsBetweenDates = async (from: Date, until: Date): Promise<PaginatedDocs<Highlight> | undefined> => {
  const query: any = {
    and: [
      {
        date: {
          greater_than_equal: from.toISOString(),
        }
      },
      {
        date: {
          less_than: until.toISOString(),
        }
      }
    ],
  }

  const stringifiedQuery = stringify(
    {
      sort: "date",
      where: query,
      limit: 5
    },
    { addQueryPrefix: true },
  )

  const response = await fetch(`http://localhost:3000/api/highlight${stringifiedQuery}`)
  if (!response.ok) return undefined
  return response.json()
}