@gotamedia/everysport-datasource-http
TypeScript icon, indicating that this package has built-in type declarations

0.4.3 • Public • Published

Everysport datasource http

This package is a data fetcher for the Everysport api wrapped in an Apollo RESTDatasource class. It exports TypeScript types and JavaScript methods to fetch data from the different endpoints in their api. It can be used as a resolver for a GraphQL subgraph inside an Apollo Federated SuperGraph setup.

Install

$ npm install @gota/everysport-datasource-http

Usage

In apollo server v4 the datasource can be passed in with the context and be used in your resolver to do the actual data fetching.

index.ts

import { ApolloServer } from '@apollo/server'
import { startStandaloneServer } from '@apollo/server/standalone'
import { typeDefs, resolvers } from './schema'

import { EverysportDatasourceHTTP } from '@gota/everysport-datasource-http

interface MyContext {
    dataSource: EverysportDataSourceHTTP
}

const sportAPI = new EverysportDataSourceHTTP({
    baseURL: 'https://everysports.url',
    key: 'secret-key',
    version: '1'
})

const server = new ApolloServer<MyContext>({ typeDefs, resolvers })

await startStandaloneServer(server, {
  context: async ({ req }) => ({ dataSource: sportAPI})
})

resolvers.ts

export const resolvers = {
    Query: {
        sports: (_, __, { dataSource }) => dataSource.getSports(),
        events: (_, args, { dataSource }) => dataSource.getEvents({ leagueId: args.leagueId }),
        topScorers: (_, args, { dataSource }) => dataSource.getTopScorers(args.leagueId)
    },
}

Reference

The EverysportDataSourceHTTP implementation exposes the following methods to fetch data by:

  • getSports(): Promise<SportModel[]>
  • getEvents(args: EventsArgumentsInterface): Promise<EventModel[]>
  • getTopScorers(leagueId: number): Promise<TopScorerPlayerModel[]>
  • getStandings(leagueId: number): Promise<GroupModel[]>

The following TypeScript types is exported:

  • SportModel
  • EventModel
  • PlayerModel
  • TeamModel
  • TopScorerPlayerModel
  • GroupModel
  • StandingModel
  • MetadataModel

They can come in handy when you compose your graphql subgraph and resolvers.

These are also of interest and describes what you can pass in as arguments to the various data fetch methods:

  • EventsArgumentsInterface
  • SportsArgumentsInterface

Readme

Keywords

none

Package Sidebar

Install

npm i @gotamedia/everysport-datasource-http

Weekly Downloads

45

Version

0.4.3

License

none

Unpacked Size

46.5 kB

Total Files

33

Last publish

Collaborators

  • gotamedia-pu
  • diego-gota
  • nichelangelo