Major update
This commit is contained in:
54
graphql/package-lock.json
generated
54
graphql/package-lock.json
generated
@@ -12,6 +12,7 @@
|
||||
"@nestjs/apollo": "^10.1.7",
|
||||
"@nestjs/axios": "^1.0.1",
|
||||
"@nestjs/common": "^9.0.0",
|
||||
"@nestjs/config": "^2.3.1",
|
||||
"@nestjs/core": "^9.0.0",
|
||||
"@nestjs/platform-express": "^9.0.0",
|
||||
"axios": "^1.3.1",
|
||||
@@ -1920,6 +1921,22 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@nestjs/config": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.3.1.tgz",
|
||||
"integrity": "sha512-Ckzel0NZ9CWhNsLfE1hxfDuxJuEbhQvGxSlmZ1/X8awjRmAA/g3kT6M1+MO1SHj1wMtPyUfd9WpwkiqFbiwQgA==",
|
||||
"dependencies": {
|
||||
"dotenv": "16.0.3",
|
||||
"dotenv-expand": "10.0.0",
|
||||
"lodash": "4.17.21",
|
||||
"uuid": "9.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rxjs": "^6.0.0 || ^7.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nestjs/core": {
|
||||
"version": "9.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-9.3.1.tgz",
|
||||
@@ -4301,6 +4318,22 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "16.0.3",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
|
||||
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-expand": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
|
||||
"integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
@@ -11007,6 +11040,17 @@
|
||||
"uid": "2.0.1"
|
||||
}
|
||||
},
|
||||
"@nestjs/config": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.3.1.tgz",
|
||||
"integrity": "sha512-Ckzel0NZ9CWhNsLfE1hxfDuxJuEbhQvGxSlmZ1/X8awjRmAA/g3kT6M1+MO1SHj1wMtPyUfd9WpwkiqFbiwQgA==",
|
||||
"requires": {
|
||||
"dotenv": "16.0.3",
|
||||
"dotenv-expand": "10.0.0",
|
||||
"lodash": "4.17.21",
|
||||
"uuid": "9.0.0"
|
||||
}
|
||||
},
|
||||
"@nestjs/core": {
|
||||
"version": "9.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-9.3.1.tgz",
|
||||
@@ -12831,6 +12875,16 @@
|
||||
"esutils": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "16.0.3",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
|
||||
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
|
||||
},
|
||||
"dotenv-expand": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
|
||||
"integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A=="
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
"@nestjs/apollo": "^10.1.7",
|
||||
"@nestjs/axios": "^1.0.1",
|
||||
"@nestjs/common": "^9.0.0",
|
||||
"@nestjs/config": "^2.3.1",
|
||||
"@nestjs/core": "^9.0.0",
|
||||
"@nestjs/platform-express": "^9.0.0",
|
||||
"axios": "^1.3.1",
|
||||
|
||||
@@ -1,17 +1,29 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { ConfigModule } from '@nestjs/config';
|
||||
import { GraphQLModule } from '@nestjs/graphql';
|
||||
import { TeamModule } from './teams/team.module';
|
||||
import { VenueModule } from './venues/venue.module';
|
||||
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'
|
||||
import { DivisionModule } from './divisions/division.module';
|
||||
import { LeagueModule } from './leagues/league.module';
|
||||
import { SportModule } from './sports/sport.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
ConfigModule.forRoot({
|
||||
isGlobal: true,
|
||||
|
||||
}),
|
||||
GraphQLModule.forRoot<ApolloDriverConfig>({
|
||||
typePaths: ['./**/*.graphql'],
|
||||
driver: ApolloDriver
|
||||
driver: ApolloDriver,
|
||||
context: ({req, res}) => ({req, res}),
|
||||
}),
|
||||
TeamModule,
|
||||
VenueModule,
|
||||
DivisionModule,
|
||||
LeagueModule,
|
||||
SportModule,
|
||||
],
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
19
graphql/src/divisions/division.graphql
Normal file
19
graphql/src/divisions/division.graphql
Normal file
@@ -0,0 +1,19 @@
|
||||
type Division {
|
||||
id: Int!
|
||||
name: String!
|
||||
season: Int!
|
||||
nameShort: String!
|
||||
link: String!
|
||||
abbreviation: String!
|
||||
leagueId: Int!
|
||||
sportId: Int!
|
||||
hasWildcard: String!
|
||||
sortOrder: Int!
|
||||
numPlayoffTeams: Int!
|
||||
active: String!
|
||||
}
|
||||
|
||||
type Query {
|
||||
divisions(pageNumber: Int!, pageSize: Int!): [Division]
|
||||
division(id: ID!): Division
|
||||
}
|
||||
11
graphql/src/divisions/division.module.ts
Normal file
11
graphql/src/divisions/division.module.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { HttpModule } from '@nestjs/axios';
|
||||
import { DivisionService } from './division.service';
|
||||
import { DivisionResolver } from './division.resolver';
|
||||
|
||||
@Module({
|
||||
imports: [HttpModule],
|
||||
providers: [DivisionService, DivisionResolver]
|
||||
})
|
||||
|
||||
export class DivisionModule {}
|
||||
25
graphql/src/divisions/division.resolver.ts
Normal file
25
graphql/src/divisions/division.resolver.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { Args, Context, Resolver, Query } from '@nestjs/graphql';
|
||||
import { DivisionService } from './division.service';
|
||||
import { Division } from '../graphql';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Resolver('Division')
|
||||
export class DivisionResolver {
|
||||
constructor (private readonly divisionService: DivisionService) {}
|
||||
|
||||
@Query()
|
||||
async divisions(@Args('pageNumber') pageNumber: number, @Args('pageSize') pageSize: number, @Context() context): Promise<Division[]>{
|
||||
const response: AxiosResponse = await this.divisionService.divisions(pageNumber, pageSize);
|
||||
|
||||
context.res.header('x-pagination', response.headers['x-pagination']);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
|
||||
@Query()
|
||||
async division(@Args('id') id: number): Promise<Division> {
|
||||
const response: AxiosResponse = await this.divisionService.division(id);
|
||||
|
||||
return response.data
|
||||
}
|
||||
}
|
||||
17
graphql/src/divisions/division.service.ts
Normal file
17
graphql/src/divisions/division.service.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { HttpService } from '@nestjs/axios';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Division } from 'src/graphql';
|
||||
import { Axios, AxiosResponse } from 'axios';
|
||||
|
||||
@Injectable()
|
||||
export class DivisionService {
|
||||
constructor (private readonly httpService: HttpService) {}
|
||||
|
||||
async divisions(pageNumber: number, pageSize: number): Promise<AxiosResponse> {
|
||||
return await this.httpService.axiosRef.get(`http://localhost:5500/api/divisions?pageNumber=${pageNumber}&pageSize=${pageSize}`);
|
||||
}
|
||||
|
||||
async division(id: number): Promise<AxiosResponse> {
|
||||
return await this.httpService.axiosRef.get(`http://localhost:5500/api/divisons/${id}`);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,74 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
|
||||
export class Division {
|
||||
id: number;
|
||||
name: string;
|
||||
season: number;
|
||||
nameShort: string;
|
||||
link: string;
|
||||
abbreviation: string;
|
||||
leagueId: number;
|
||||
sportId: number;
|
||||
hasWildcard: string;
|
||||
sortOrder: number;
|
||||
numPlayoffTeams: number;
|
||||
active: string;
|
||||
}
|
||||
|
||||
export abstract class IQuery {
|
||||
abstract divisions(pageNumber: number, pageSize: number): Nullable<Nullable<Division>[]> | Promise<Nullable<Nullable<Division>[]>>;
|
||||
|
||||
abstract division(id: string): Nullable<Division> | Promise<Nullable<Division>>;
|
||||
|
||||
abstract leagues(pageNumber: number, pageSize: number): Nullable<Nullable<League>[]> | Promise<Nullable<Nullable<League>[]>>;
|
||||
|
||||
abstract league(id: string): Nullable<League> | Promise<Nullable<League>>;
|
||||
|
||||
abstract sports(pageNumber: number, pageSize: number): Nullable<Nullable<Sport>[]> | Promise<Nullable<Nullable<Sport>[]>>;
|
||||
|
||||
abstract sport(id: string): Nullable<Sport> | Promise<Nullable<Sport>>;
|
||||
|
||||
abstract teams(pageNumber: number, pageSize: number): Nullable<Nullable<Team>[]> | Promise<Nullable<Nullable<Team>[]>>;
|
||||
|
||||
abstract team(id: number): Nullable<Team> | Promise<Nullable<Team>>;
|
||||
|
||||
abstract venues(pageNumber: number, pageSize: number): Nullable<Nullable<Venue>[]> | Promise<Nullable<Nullable<Venue>[]>>;
|
||||
|
||||
abstract venue(id: number): Nullable<Venue> | Promise<Nullable<Venue>>;
|
||||
}
|
||||
|
||||
export class League {
|
||||
id: number;
|
||||
name: string;
|
||||
link: string;
|
||||
abbreviation: string;
|
||||
nameShort: string;
|
||||
seasonState: string;
|
||||
hasWildcard: string;
|
||||
hasSplitSeason: string;
|
||||
numGames: number;
|
||||
hasPlayoffPoints: string;
|
||||
numTeams: number;
|
||||
numWildcardTeams: number;
|
||||
orgCode: string;
|
||||
conferenceInUse: string;
|
||||
divisionsInUse: string;
|
||||
sportId: number;
|
||||
sortOrder: number;
|
||||
active: string;
|
||||
}
|
||||
|
||||
export class Sport {
|
||||
id: string;
|
||||
code: string;
|
||||
link: string;
|
||||
name: string;
|
||||
abbreviation: string;
|
||||
sortOrder: number;
|
||||
activeStatus: string;
|
||||
}
|
||||
|
||||
export class Team {
|
||||
id?: Nullable<string>;
|
||||
name?: Nullable<string>;
|
||||
@@ -32,34 +100,6 @@ export class Team {
|
||||
venueId?: Nullable<number>;
|
||||
}
|
||||
|
||||
export class TeamsPagedResponse {
|
||||
currentPage?: Nullable<number>;
|
||||
errors?: Nullable<string>;
|
||||
message?: Nullable<string>;
|
||||
pageSize?: Nullable<number>;
|
||||
results?: Nullable<Nullable<Team>[]>;
|
||||
succeeded?: Nullable<boolean>;
|
||||
totalItemCount?: Nullable<number>;
|
||||
totalPageCount?: Nullable<number>;
|
||||
}
|
||||
|
||||
export class TeamResponse {
|
||||
errors?: Nullable<string>;
|
||||
message?: Nullable<string>;
|
||||
results: Team;
|
||||
succeeded: boolean;
|
||||
}
|
||||
|
||||
export abstract class IQuery {
|
||||
abstract teams(pageNumber: number, pageSize: number): TeamsPagedResponse | Promise<TeamsPagedResponse>;
|
||||
|
||||
abstract teamById(id: number): TeamResponse | Promise<TeamResponse>;
|
||||
|
||||
abstract venues(pageNumber: number, pageSize: number): VenuesPagedResponse | Promise<VenuesPagedResponse>;
|
||||
|
||||
abstract venueById(id: number): VenueResponse | Promise<VenueResponse>;
|
||||
}
|
||||
|
||||
export class Venue {
|
||||
active: string;
|
||||
id: number;
|
||||
@@ -67,22 +107,4 @@ export class Venue {
|
||||
name: string;
|
||||
}
|
||||
|
||||
export class VenuesPagedResponse {
|
||||
currentPage: number;
|
||||
errors?: Nullable<string>;
|
||||
message?: Nullable<string>;
|
||||
pageSize: number;
|
||||
results: Nullable<Venue>[];
|
||||
succeeded: boolean;
|
||||
totalItemCount: number;
|
||||
totalPageCount: number;
|
||||
}
|
||||
|
||||
export class VenueResponse {
|
||||
errors?: Nullable<string>;
|
||||
message?: Nullable<string>;
|
||||
results: Venue;
|
||||
succeeded: boolean;
|
||||
}
|
||||
|
||||
type Nullable<T> = T | null;
|
||||
|
||||
25
graphql/src/leagues/league.graphql
Normal file
25
graphql/src/leagues/league.graphql
Normal file
@@ -0,0 +1,25 @@
|
||||
type League {
|
||||
id: Int!
|
||||
name: String!
|
||||
link: String!
|
||||
abbreviation: String!
|
||||
nameShort: String!
|
||||
seasonState: String!
|
||||
hasWildcard: String!
|
||||
hasSplitSeason: String!
|
||||
numGames: Int!
|
||||
hasPlayoffPoints: String!
|
||||
numTeams: Int!
|
||||
numWildcardTeams: Int!
|
||||
orgCode: String!
|
||||
conferenceInUse: String!
|
||||
divisionsInUse: String!
|
||||
sportId: Int!
|
||||
sortOrder: Int!
|
||||
active: String!
|
||||
}
|
||||
|
||||
type Query {
|
||||
leagues(pageNumber: Int!, pageSize: Int!): [League]
|
||||
league(id: ID!): League
|
||||
}
|
||||
11
graphql/src/leagues/league.module.ts
Normal file
11
graphql/src/leagues/league.module.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { HttpModule } from '@nestjs/axios';
|
||||
import { LeagueResolver } from './league.resolver';
|
||||
import { LeagueService } from './league.service';
|
||||
|
||||
@Module({
|
||||
imports: [HttpModule],
|
||||
providers: [LeagueResolver, LeagueService]
|
||||
})
|
||||
|
||||
export class LeagueModule {}
|
||||
25
graphql/src/leagues/league.resolver.ts
Normal file
25
graphql/src/leagues/league.resolver.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { Args, Context, Resolver, Query } from "@nestjs/graphql";
|
||||
import { LeagueService } from './league.service';
|
||||
import { League } from '../graphql';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Resolver()
|
||||
export class LeagueResolver {
|
||||
constructor (private readonly leagueService: LeagueService) {}
|
||||
|
||||
@Query()
|
||||
async leagues(@Args('pageNumber') pageNumber: number, @Args('pageSize') pageSize: number, @Context() context): Promise<League[]> {
|
||||
const response: AxiosResponse = await this.leagueService.leagues(pageNumber, pageSize);
|
||||
|
||||
context.res.header('x-pagination', response.headers['x-pagination']);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
|
||||
@Query()
|
||||
async league(@Args('id') id: number): Promise<League> {
|
||||
const response: AxiosResponse = await this.leagueService.league(id);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
}
|
||||
16
graphql/src/leagues/league.service.ts
Normal file
16
graphql/src/leagues/league.service.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { HttpService } from '@nestjs/axios';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Injectable()
|
||||
export class LeagueService {
|
||||
constructor (private readonly httpService: HttpService) {}
|
||||
|
||||
async leagues(pageNumber: number, pageSize: number): Promise<AxiosResponse> {
|
||||
return await this.httpService.axiosRef.get(`http://localhost:5500/api/leagues?pageNumber=${pageNumber}&pageSize=${pageSize}`);
|
||||
}
|
||||
|
||||
async league(id: number): Promise<AxiosResponse> {
|
||||
return await this.httpService.axiosRef.get(`http://localhost:5500/api/leagues/${id}`);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,12 @@ import { AppModule } from './app.module';
|
||||
|
||||
async function bootstrap() {
|
||||
const app = await NestFactory.create(AppModule);
|
||||
await app.listen(8081);
|
||||
|
||||
app.use((req, res, next) => {
|
||||
res.header('Access-Control-Expose-Headers', 'x-pagination');
|
||||
next();
|
||||
})
|
||||
|
||||
await app.listen(8080);
|
||||
}
|
||||
bootstrap();
|
||||
|
||||
14
graphql/src/sports/sport.graphql
Normal file
14
graphql/src/sports/sport.graphql
Normal file
@@ -0,0 +1,14 @@
|
||||
type Sport {
|
||||
id: ID!
|
||||
code: String!
|
||||
link: String!
|
||||
name: String!
|
||||
abbreviation: String!
|
||||
sortOrder: Int!
|
||||
activeStatus: String!
|
||||
}
|
||||
|
||||
type Query {
|
||||
sports(pageNumber: Int!, pageSize: Int!): [Sport]
|
||||
sport(id: ID!): Sport
|
||||
}
|
||||
10
graphql/src/sports/sport.module.ts
Normal file
10
graphql/src/sports/sport.module.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { HttpModule } from '@nestjs/axios';
|
||||
import { SportResolver } from './sport.resolver';
|
||||
import { SportService } from './sport.service';
|
||||
|
||||
@Module({
|
||||
imports: [HttpModule],
|
||||
providers: [SportResolver, SportService]
|
||||
})
|
||||
export class SportModule {}
|
||||
25
graphql/src/sports/sport.resolver.ts
Normal file
25
graphql/src/sports/sport.resolver.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { Args, Context, Resolver, Query } from '@nestjs/graphql';
|
||||
import { SportService } from './sport.service';
|
||||
import { Sport } from '../graphql';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Resolver('Division')
|
||||
export class SportResolver {
|
||||
constructor (private readonly sportService: SportService) {}
|
||||
|
||||
@Query()
|
||||
async sports(@Args('pageNumber') pageNumber: number, @Args('pageSize') pageSize: number, @Context() context): Promise<Sport[]> {
|
||||
const response: AxiosResponse = await this.sportService.sports(pageNumber, pageSize);
|
||||
|
||||
context.res.header('x-pagination', response.headers['x-pagination'])
|
||||
|
||||
return response.data
|
||||
}
|
||||
|
||||
@Query()
|
||||
async sport(@Args('id') id: number): Promise<Sport> {
|
||||
const response: AxiosResponse = await this.sportService.sport(id);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
}
|
||||
16
graphql/src/sports/sport.service.ts
Normal file
16
graphql/src/sports/sport.service.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { HttpService } from "@nestjs/axios";
|
||||
import { Injectable } from "@nestjs/common";
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Injectable()
|
||||
export class SportService {
|
||||
constructor (private readonly httpService: HttpService) {}
|
||||
|
||||
async sports(pageNumber: number, pageSize: number): Promise<AxiosResponse> {
|
||||
return await this.httpService.axiosRef.get(`http://localhost:5500/api/sports?pageNumber=${pageNumber}&pageSize=${pageSize}`);
|
||||
}
|
||||
|
||||
async sport(id: number): Promise<AxiosResponse> {
|
||||
return await this.httpService.axiosRef.get(`http//localhost:5500/api/sports/${id}`);
|
||||
}
|
||||
}
|
||||
@@ -22,33 +22,10 @@ type Team {
|
||||
venueId: Int
|
||||
}
|
||||
|
||||
type TeamsPagedResponse {
|
||||
currentPage: Int
|
||||
errors: String
|
||||
message: String
|
||||
pageSize: Int
|
||||
results: [Team]
|
||||
succeeded: Boolean
|
||||
totalItemCount: Int
|
||||
totalPageCount: Int
|
||||
}
|
||||
|
||||
type TeamResponse {
|
||||
errors: String
|
||||
message: String
|
||||
results: Team!
|
||||
succeeded: Boolean!
|
||||
}
|
||||
|
||||
type Query {
|
||||
teams(
|
||||
pageNumber: Int!
|
||||
pageSize: Int!
|
||||
): TeamsPagedResponse!
|
||||
}
|
||||
|
||||
type Query {
|
||||
teamById(
|
||||
id: Int!
|
||||
): TeamResponse!
|
||||
): [Team]
|
||||
team(id: Int!): Team
|
||||
}
|
||||
@@ -1,18 +1,25 @@
|
||||
import { Args, Resolver, Query } from '@nestjs/graphql';
|
||||
import { Args, Context, Resolver, Query } from '@nestjs/graphql';
|
||||
import { TeamService } from './team.service';
|
||||
import { Team } from '../graphql';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Resolver('Team')
|
||||
export class TeamResolvers {
|
||||
constructor (private readonly teamService: TeamService) {}
|
||||
|
||||
@Query()
|
||||
async teams(@Args('pageNumber') pageNumber: number, @Args('pageSize') pageSize: number): Promise<Team[]>{
|
||||
return this.teamService.findAll(pageNumber, pageSize);
|
||||
async teams(@Args('pageNumber') pageNumber: number, @Args('pageSize') pageSize: number, @Context() context): Promise<Team[]>{
|
||||
const response: AxiosResponse = await this.teamService.teams(pageNumber, pageSize);
|
||||
|
||||
context.res.header('x-pagination', response.headers['x-pagination']);
|
||||
|
||||
return response.data
|
||||
}
|
||||
|
||||
@Query()
|
||||
async teamById(@Args('id') id: number): Promise<Team> {
|
||||
return this.teamService.findById(id);
|
||||
async team(@Args('id') id: number): Promise<Team> {
|
||||
const response: AxiosResponse = await this.teamService.team(id);
|
||||
|
||||
return response.data
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,20 @@
|
||||
import { HttpService } from '@nestjs/axios';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Team } from 'src/graphql';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Injectable()
|
||||
export class TeamService {
|
||||
constructor (private readonly httpService: HttpService) {}
|
||||
|
||||
private readonly teams: Team[] = [];
|
||||
async teams(pageNumber: number, pageSize: number): Promise<AxiosResponse> {
|
||||
const response: AxiosResponse = await this.httpService.axiosRef.get(`http://localhost:5500/api/teams?pageNumber=${pageNumber}&pageSize=${pageSize}`);
|
||||
|
||||
async findAll(pageNumber: number, pageSize: number): Promise<Team[]> {
|
||||
const response: AxiosResponse = await this.httpService.axiosRef.get(`http://localhost:5520/api/teams?pageNumber=${pageNumber}&pageSize=${pageSize}`);
|
||||
|
||||
return response.data;
|
||||
return response;
|
||||
}
|
||||
|
||||
async findById(id: number): Promise<Team> {
|
||||
const response: AxiosResponse = await this.httpService.axiosRef.get(`http://localhost:5520/api/teams/${id}`);
|
||||
|
||||
return response.data
|
||||
async team(id: number): Promise<AxiosResponse> {
|
||||
const response: AxiosResponse = await this.httpService.axiosRef.get(`http://localhost:5500/api/teams/${id}`);
|
||||
|
||||
return response
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
type Venue {
|
||||
active: String!
|
||||
id: Int!
|
||||
link: String!
|
||||
name: String!
|
||||
}
|
||||
|
||||
type VenuesPagedResponse {
|
||||
currentPage: Int!
|
||||
errors: String
|
||||
message: String
|
||||
pageSize: Int!
|
||||
results: [Venue]!
|
||||
succeeded: Boolean!
|
||||
totalItemCount: Int!
|
||||
totalPageCount: Int!
|
||||
}
|
||||
|
||||
type VenueResponse {
|
||||
errors: String
|
||||
message: String
|
||||
results: Venue!
|
||||
succeeded: Boolean!
|
||||
}
|
||||
|
||||
type Query {
|
||||
venues(
|
||||
pageNumber: Int!
|
||||
pageSize: Int!
|
||||
): VenuesPagedResponse!
|
||||
}
|
||||
|
||||
type Query {
|
||||
venueById(
|
||||
id: Int!
|
||||
): VenueResponse!
|
||||
}
|
||||
14
graphql/src/venues/venue.graphql
Normal file
14
graphql/src/venues/venue.graphql
Normal file
@@ -0,0 +1,14 @@
|
||||
type Venue {
|
||||
active: String!
|
||||
id: Int!
|
||||
link: String!
|
||||
name: String!
|
||||
}
|
||||
|
||||
type Query {
|
||||
venues(
|
||||
pageNumber: Int!
|
||||
pageSize: Int!
|
||||
): [Venue]
|
||||
venue(id: Int!): Venue
|
||||
}
|
||||
@@ -1,18 +1,25 @@
|
||||
import { Resolver, Query, Args } from "@nestjs/graphql";
|
||||
import { Args, Context, Resolver, Query } from "@nestjs/graphql";
|
||||
import { VenueService } from "./venue.service";
|
||||
import { Venue } from '../graphql';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Resolver('Venue')
|
||||
export class VenueResolvers {
|
||||
constructor (private readonly venueService: VenueService) {}
|
||||
|
||||
@Query()
|
||||
async venues(@Args('pageNumber') pageNumber: number, @Args('pageSize') pageSize: number): Promise<Venue[]> {
|
||||
return this.venueService.findAll(pageNumber, pageSize);
|
||||
async venues(@Args('pageNumber') pageNumber: number, @Args('pageSize') pageSize: number, @Context() context): Promise<Venue[]> {
|
||||
const response: AxiosResponse = await this.venueService.venues(pageNumber, pageSize);
|
||||
|
||||
context.res.header('x-pagination', response.headers['x-pagination'])
|
||||
|
||||
return response.data
|
||||
}
|
||||
|
||||
@Query()
|
||||
async venueById(@Args('id') id: number): Promise<Venue> {
|
||||
return this.venueService.findById(id);
|
||||
async venue(@Args('id') id: number): Promise<Venue> {
|
||||
const response: AxiosResponse = await this.venueService.venue(id);
|
||||
|
||||
return response.data;
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,20 @@
|
||||
import { HttpService } from "@nestjs/axios";
|
||||
import { Injectable } from "@nestjs/common";
|
||||
import { Venue } from '../graphql';
|
||||
import { AxiosResponse } from 'axios';
|
||||
|
||||
@Injectable()
|
||||
export class VenueService {
|
||||
constructor (private readonly httpService: HttpService) {}
|
||||
|
||||
private readonly venues: Venue[] = [];
|
||||
|
||||
async findAll(pageNumber: number, pageSize: number): Promise<Venue[]> {
|
||||
const response: AxiosResponse = await this.httpService.axiosRef.get(`http://localhost:5510/api/venues?pageNumber=${pageNumber}&pageSize=${pageSize}`);
|
||||
|
||||
return response.data;
|
||||
async venues(pageNumber: number, pageSize: number): Promise<AxiosResponse> {
|
||||
const response: AxiosResponse = await this.httpService.axiosRef.get(`http://localhost:5500/api/venues?pageNumber=${pageNumber}&pageSize=${pageSize}`);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
async findById(id: number): Promise<Venue> {
|
||||
const response: AxiosResponse = await this.httpService.axiosRef.get(`http://localhost:5510/api/venues/${id}`);
|
||||
async venue(id: number): Promise<AxiosResponse> {
|
||||
const response: AxiosResponse = await this.httpService.axiosRef.get(`http://localhost:5500/api/venues/${id}`);
|
||||
|
||||
return response.data;
|
||||
return response;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user