diff --git a/backend-nest/schema.gql b/backend-nest/schema.gql new file mode 100644 index 00000000..6552230d --- /dev/null +++ b/backend-nest/schema.gql @@ -0,0 +1,45 @@ +# ------------------------------------------------------ +# THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY) +# ------------------------------------------------------ + +"""route""" +type Route { + id: ID! + name: String! +} + +"""platform""" +type Platform { + id: ID! + name: String! + latitude: Float! + longitude: Float! + routes: [Route!]! +} + +"""stop""" +type Stop { + id: ID! + name: String! + avgLatitude: Float! + avgLongitude: Float! + platforms: [Platform!]! +} + +type Query { + """Get all platforms""" + platform( + """ + if set to `true` returns only metro results, otherwise returns all results (including metro). Defaults to `false`. + """ + metroOnly: Boolean = false + ): [Platform!]! + + """Get all stops""" + stop( + """ + if set to `true` returns only metro results, otherwise returns all results (including metro). Defaults to `false`. + """ + metroOnly: Boolean = false + ): [Stop!]! +} \ No newline at end of file diff --git a/backend-nest/src/modules/platform/platform.module.ts b/backend-nest/src/modules/platform/platform.module.ts index 7a4afde6..b665f186 100644 --- a/backend-nest/src/modules/platform/platform.module.ts +++ b/backend-nest/src/modules/platform/platform.module.ts @@ -1,11 +1,12 @@ import { Module } from "@nestjs/common"; import { PlatformController } from "src/modules/platform/platform.controller"; +import { PlatformResolver } from "src/modules/platform/platform.resolver"; import { PlatformService } from "src/modules/platform/platform.service"; @Module({ controllers: [PlatformController], - providers: [PlatformService], + providers: [PlatformResolver, PlatformService], imports: [], }) export class PlatformModule {} diff --git a/backend-nest/src/modules/platform/platform.resolver.ts b/backend-nest/src/modules/platform/platform.resolver.ts new file mode 100644 index 00000000..226dcc28 --- /dev/null +++ b/backend-nest/src/modules/platform/platform.resolver.ts @@ -0,0 +1,25 @@ +import { Args, Query, Resolver } from "@nestjs/graphql"; + +import { Platform } from "src/models/platform.model"; +import { PlatformService } from "src/modules/platform/platform.service"; +import { metroOnlyQuery } from "src/swagger/query.swagger"; + +@Resolver(() => Platform) +export class PlatformResolver { + constructor(private readonly platformService: PlatformService) {} + + @Query(() => [Platform], { + description: "Get all platforms", + }) + async platform( + @Args("metroOnly", { + description: metroOnlyQuery.description, + defaultValue: false, + nullable: true, + type: () => Boolean, + }) + metroOnly, + ): Promise { + return await this.platformService.getAllPlatforms({ metroOnly }); + } +} diff --git a/backend-nest/src/modules/stop/stop.module.ts b/backend-nest/src/modules/stop/stop.module.ts index ffce660f..27910486 100644 --- a/backend-nest/src/modules/stop/stop.module.ts +++ b/backend-nest/src/modules/stop/stop.module.ts @@ -1,11 +1,12 @@ import { Module } from "@nestjs/common"; import { StopController } from "src/modules/stop/stop.controller"; +import { StopResolver } from "src/modules/stop/stop.resolver"; import { StopService } from "src/modules/stop/stop.service"; @Module({ controllers: [StopController], - providers: [StopService], + providers: [StopResolver, StopService], imports: [], }) export class StopModule {} diff --git a/backend-nest/src/modules/stop/stop.resolver.ts b/backend-nest/src/modules/stop/stop.resolver.ts new file mode 100644 index 00000000..500b25e8 --- /dev/null +++ b/backend-nest/src/modules/stop/stop.resolver.ts @@ -0,0 +1,25 @@ +import { Args, Query, Resolver } from "@nestjs/graphql"; + +import { Stop } from "src/models/stop.model"; +import { StopService } from "src/modules/stop/stop.service"; +import { metroOnlyQuery } from "src/swagger/query.swagger"; + +@Resolver(() => Stop) +export class StopResolver { + constructor(private readonly stopSerice: StopService) {} + + @Query(() => [Stop], { + description: "Get all stops", + }) + async stop( + @Args("metroOnly", { + description: metroOnlyQuery.description, + defaultValue: false, + nullable: true, + type: () => Boolean, + }) + metroOnly, + ): Promise { + return await this.stopSerice.getAll({ metroOnly }); + } +}