Exemple #1
0
 return suggestedArtistsLoader(gravityOptions).then(({ body, headers }) => {
   const suggestedArtists = body
   const totalCount = headers["x-total-count"]
   return connectionFromArraySlice(suggestedArtists, options, {
     arrayLength: totalCount,
     sliceStart: offset,
   })
 })
Exemple #2
0
            ({ body, headers }) => {
              const genes = body
              const totalCount = headers["x-total-count"]

              return connectionFromArraySlice(genes, options, {
                arrayLength: totalCount,
                sliceStart: offset,
              })
            }
 ({ total_count, total_unread_count, conversations }) => {
   return assign(
     { total_unread_count },
     connectionFromArraySlice(conversations, options, {
       arrayLength: total_count,
       sliceStart: offset,
     })
   )
 }
Exemple #4
0
 .then(({ aggregations, hits }) => {
   return Object.assign(
     { aggregations }, // Add data to connection so the `aggregations` connection field can resolve it
     connectionFromArraySlice(hits, options, {
       arrayLength: aggregations.total.value,
       sliceStart: gravityOptions.offset,
     })
   )
 })
Exemple #5
0
          return similarGenesLoader(gene.id, gravityArgs).then(({ body, headers }) => {
            const genes = body
            const totalCount = headers["x-total-count"]

            return connectionFromArraySlice(genes, options, {
              arrayLength: totalCount,
              sliceStart: offset,
            })
          })
 resolve: ({ hits, aggregations }, options) => {
   if (!aggregations || !aggregations.total) {
     throw new Error("This query must contain the total aggregation")
   }
   const relayOptions = parseRelayOptions(options)
   return connectionFromArraySlice(hits, options, {
     arrayLength: aggregations.total.value,
     sliceStart: relayOptions.offset,
   })
 },
Exemple #7
0
 }).then(({ total_count, message_details }) => {
   // Inject the convesation initiator's email into each message payload
   // so we can tell if the user sent a particular message.
   // Also inject the conversation id, since we need it in some message
   // resolvers (invoices).
   /* eslint-disable no-param-reassign */
   message_details = message_details.map(message => {
     return merge(message, {
       conversation_from_address: from_email,
       conversation_id: id,
     })
   })
   /* eslint-disable no-param-reassign */
   return connectionFromArraySlice(message_details, options, {
     arrayLength: total_count,
     sliceStart: offset,
   })
 })
  resolve: async (
    _root,
    options,
    _request,
    { rootValue: { saleArtworksFilterLoader, saleArtworksAllLoader } }
  ) => {
    const relayOptions = { ...DEFAULTS, ...options }
    const params = parseRelayOptions(relayOptions)
    let response

    try {
      if (options.live_sale) {
        delete params.page
        params.total_count = true
        const { body, headers } = await saleArtworksAllLoader(params)
        response = body

        // Piggyback on existing ES API. TODO: This could perhaps be unified
        // better, but quickfix.
        response = {
          hits: response,
          aggregations: {
            total: {
              value: headers["x-total-count"],
            },
          },
        }
      } else {
        response = await saleArtworksFilterLoader(params)
      }

      const data = {
        ...response,
        ...connectionFromArraySlice(response.hits, relayOptions, {
          arrayLength: response.aggregations.total.value,
          sliceStart: params.offset,
        }),
      }

      return data
    } catch (error) {
      console.error("schema/sale_artworks Error:", error) // eslint-disable-line
    }
  },
Exemple #9
0
    ).then(({ body, headers }) => {
      const totalCount = headers["x-total-count"]
      const totalPages = Math.ceil(totalCount / size)

      return merge(
        {
          pageCursors: createPageCursors(pageOptions, totalCount),
          totalCount,
        },
        connectionFromArraySlice(body, args, {
          arrayLength: totalCount,
          sliceStart: offset,
        }),
        {
          pageInfo: {
            hasPreviousPage: page > 1,
            hasNextPage: page < totalPages,
          },
        }
      )
    })
  return loader(gravityArgs).then(({ body, headers }) => {
    const connection = connectionFromArraySlice(body, options, {
      arrayLength: headers["x-total-count"],
      sliceStart: offset,
    })

    // Inject the partner artist data into edges, and set the partner as the node.
    let newEdges = []
    connection.edges.forEach(edge => {
      const newEdge = assign(
        {
          ...edge.node,
        },
        {},
        edge
      )
      newEdge.node = edge.node.partner
      newEdges = newEdges.concat(newEdge)
    })
    connection.edges = newEdges

    return connection
  })
 .then(({ body, headers }) => {
   return connectionFromArraySlice(body, options, {
     arrayLength: headers["x-total-count"],
     sliceStart: offset,
   })
 })
Exemple #12
0
 return gravity(`gene/${id}/artists`, gravityOptions).then(response => {
   return connectionFromArraySlice(response, options, {
     arrayLength: counts.artists,
     sliceStart: gravityOptions.offset,
   })
 })
Exemple #13
0
 ]).then(([count, body]) => {
   return connectionFromArraySlice(body, options, {
     arrayLength: count,
     sliceStart: gravityOptions.offset,
   })
 })
 return followedArtistsLoader(gravityArgs).then(({ body, headers }) => {
   return connectionFromArraySlice(body, options, {
     arrayLength: headers["x-total-count"],
     sliceStart: offset,
   })
 })
Exemple #15
0
    const [data, totalCount] = await Promise.all([
      db
        .table('stories')
        .orderBy('created_at', 'desc')
        .limit(limit)
        .offset(offset)
        .then(rows => rows.map(x => Object.assign(x, { __type: 'Story' }))),
      db
        .table('stories')
        .count()
        .then(x => x[0].count),
    ]);

    return {
      ...connectionFromArraySlice(data, args, {
        sliceStart: offset,
        arrayLength: totalCount,
      }),
      totalCount,
    };
  },
};

const inputFields = {
  title: {
    type: GraphQLString,
  },
  text: {
    type: GraphQLString,
  },
  url: {
    type: GraphQLString,
Exemple #16
0
 return artistArtworksLoader(artist.id, gravityArgs).then(artworks =>
   connectionFromArraySlice(artworks, options, {
     arrayLength: artistArtworkArrayLength(artist, filter),
     sliceStart: offset,
   })
Exemple #17
0
 return saleArtworksLoader(sale.id, { size, offset }).then(saleArtworks =>
   connectionFromArraySlice(saleArtworks, options, {
     arrayLength: sale.eligible_sale_artworks_count,
     sliceStart: offset,
   })
Exemple #18
0
 return geneArtistsLoader(id, gravityOptions).then(response => {
   return connectionFromArraySlice(response, options, {
     arrayLength: counts.artists,
     sliceStart: gravityOptions.offset,
   })
 })
 return submissionsLoader(options).then(body => {
   return connectionFromArraySlice(body, options, {
     arrayLength: body.length,
     sliceStart: 0,
   })
 })
Exemple #20
0
 return auctionLotLoader(diffusionArgs).then(({ total_count, _embedded }) => {
   return connectionFromArraySlice(_embedded.items, options, {
     arrayLength: total_count,
     sliceStart: offset,
   })
 })