0.4.3 • Published 1 year ago

@gotamedia/everysport-datasource-http v0.4.3

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

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
0.4.3

1 year ago

0.4.1

1 year ago

0.4.0

1 year ago

0.4.2

1 year ago

0.3.0

2 years ago

0.2.0

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.1.20

2 years ago

0.1.19

2 years ago

0.1.18

2 years ago

0.1.17

2 years ago

0.1.16

2 years ago

0.1.15

2 years ago

0.1.14

2 years ago

0.1.13

2 years ago

0.1.12

2 years ago

0.1.10

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago