[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/electerious/Ackee/develop/src/database/browsers.js [Back]  [Original]

import aggregateNewRecords from '../aggregations/aggregateNewRecords.js'
import aggregateRecentRecords from '../aggregations/aggregateRecentRecords.js'
import aggregateTopRecords from '../aggregations/aggregateTopRecords.js'
import { BROWSERS_TYPE_NO_VERSION, BROWSERS_TYPE_WITH_VERSION } from '../constants/browsers.js'
import { SORTINGS_NEW, SORTINGS_RECENT, SORTINGS_TOP } from '../constants/sortings.js'
import Record from '../models/Record.js'
import recursiveId from '../utils/recursiveId.js'

const get = async (ids, sorting, type, range, limit, dateDetails) => {
  const aggregation = (() => {
    if (type === BROWSERS_TYPE_NO_VERSION) {
      if (sorting === SORTINGS_TOP) return aggregateTopRecords(ids, ['browserName'], range, limit, dateDetails)
      if (sorting === SORTINGS_NEW) return aggregateNewRecords(ids, ['browserName'], limit)
      if (sorting === SORTINGS_RECENT) return aggregateRecentRecords(ids, ['browserName'], limit)
    }
    if (type === BROWSERS_TYPE_WITH_VERSION) {
      if (sorting === SORTINGS_TOP)
        return aggregateTopRecords(ids, ['browserName', 'browserVersion'], range, limit, dateDetails)
      if (sorting === SORTINGS_NEW) return aggregateNewRecords(ids, ['browserName', 'browserVersion'], limit)
      if (sorting === SORTINGS_RECENT) return aggregateRecentRecords(ids, ['browserName', 'browserVersion'], limit)
    }
  })()

  const enhanceId = (id) => {
    if (type === BROWSERS_TYPE_NO_VERSION) return `${id.browserName}`
    if (type === BROWSERS_TYPE_WITH_VERSION) return `${id.browserName} ${id.browserVersion}`
  }

  const enhance = (entries) => {
    return entries.map((entry) => {
      const value = enhanceId(entry._id)

      return {
        id: recursiveId([value, sorting, type, range, ...ids]),
        value,
        count: entry.count,
        created: entry.created,
      }
    })
  }

  return enhance(await Record.aggregate(aggregation))
}

export default get

Web Proxy Viewer  |  New URL  |  Original Page