graphql-code-generator icon indicating copy to clipboard operation
graphql-code-generator copied to clipboard

Cannot read property 'value' of undefined with typescript-react-query enabled

Open iamhaaamed opened this issue 2 years ago • 4 comments

Describe the bug I'm just trying to integrate graphql-code-generator with typescript-react-query plugin into my project and having this error:

 ✔ Parse configuration
  ❯ Generate outputs
    ❯ Generate src/generated/graphql.tsx
      ✔ Load GraphQL schemas
      ✔ Load GraphQL documents
      ✖ Generate
        → Cannot read property 'value' of undefined

 Found 1 error

  ✖ src/generated/graphql.tsx
    TypeError: Cannot read property 'value' of undefined
        at generateQueryKey (/Users/user/Projects/DrivesAndDetours/node_modules/@graphq
l-codegen/typescript-react-query/index.js:24:31)

To Reproduce Create a .graphql file, with a query. Enable typescript-react-query codegen plugin. Run yarn generate.

My GraphQL schema:

"""
The `@defer` directive may be provided for fragment spreads and inline fragments to inform the executor to delay the execution of the current fragment to indicate deprioritization of the current fragment. A query with `@defer` directive will cause the request to potentially return multiple responses, where non-deferred data is delivered in the initial response and data deferred is delivered in a subsequent response. `@include` and `@skip` take precedence over `@defer`.
"""
directive @defer(
  """
  If this argument label has a value other than null, it will be passed on to the result of this defer directive. This label is intended to give client applications a way to identify to which fragment a deferred result belongs to.
  """
  label: String

  """
  Deferred when true.
  """
  if: Boolean
) on FRAGMENT_SPREAD | INLINE_FRAGMENT

"""
The `@stream` directive may be provided for a field of `List` type so that the backend can leverage technology such as asynchronous iterators to provide a partial list in the initial response, and additional list items in subsequent responses. `@include` and `@skip` take precedence over `@stream`.
"""
directive @stream(
  """
  If this argument label has a value other than null, it will be passed on to the result of this stream directive. This label is intended to give client applications a way to identify to which fragment a streamed result belongs to.
  """
  label: String

  """
  The initial elements that shall be send down to the consumer.
  """
  initialCount: Int!

  """
  Streamed when true.
  """
  if: Boolean
) on FIELD

directive @authorize(
  """
  The name of the authorization policy that determines access to the annotated resource.
  """
  policy: String

  """
  Roles that are allowed to access the annotated resource.
  """
  roles: [String!]

  """
  Defines when when the resolver shall be executed.By default the resolver is executed after the policy has determined that the current user is allowed to access the field.
  """
  apply: ApplyPolicy! = BEFORE_RESOLVER
) repeatable on SCHEMA | OBJECT | FIELD_DEFINITION

"""
A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element.
"""
scalar Position

interface GeoJSONInterface {
  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType!

  """
  The minimum bounding box around the geometry object
  """
  bbox: [Float]

  """
  The coordinate reference system integer identifier
  """
  crs: Int
}

input GeoJSONPointInput {
  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType

  """
  The "coordinates" field is a single position.
  """
  coordinates: Position

  """
  The coordinate reference system integer identifier
  """
  crs: Int
}

input GeoJSONMultiPointInput {
  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType

  """
  The "coordinates" field is an array of positions.
  """
  coordinates: [Position]

  """
  The coordinate reference system integer identifier
  """
  crs: Int
}

input GeoJSONLineStringInput {
  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType

  """
  The "coordinates" field is an array of two or more positions.
  """
  coordinates: [Position]

  """
  The coordinate reference system integer identifier
  """
  crs: Int
}

input GeoJSONMultiLineStringInput {
  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType

  """
  The "coordinates" field is an array of LineString coordinate arrays.
  """
  coordinates: [[Position]]

  """
  The coordinate reference system integer identifier
  """
  crs: Int
}

input GeoJSONPolygonInput {
  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType

  """
  The "coordinates" field MUST be an array of linear ring coordinate arrays. For Polygons with more than one of these rings, the first MUST be the exterior ring, and any others MUST be interior rings. The exterior ring bounds the surface, and the interior rings (if present) bound holes within the surface.
  """
  coordinates: [Position]

  """
  The coordinate reference system integer identifier
  """
  crs: Int
}

input GeoJSONMultiPolygonInput {
  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType

  """
  The "coordinates" field is an array of Polygon coordinate arrays.
  """
  coordinates: [[Position]]

  """
  The coordinate reference system integer identifier
  """
  crs: Int
}

type GeoJSONPointType implements GeoJSONInterface {
  """
  The "coordinates" field is a single position.
  """
  coordinates: Position

  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType!

  """
  The minimum bounding box around the geometry object
  """
  bbox: [Float!]!

  """
  The coordinate reference system integer identifier
  """
  crs: Int!
}

type GeoJSONMultiPointType implements GeoJSONInterface {
  """
  The "coordinates" field is an array of positions.
  """
  coordinates: [Position]

  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType!

  """
  The minimum bounding box around the geometry object
  """
  bbox: [Float!]!

  """
  The coordinate reference system integer identifier
  """
  crs: Int!
}

type GeoJSONLineStringType implements GeoJSONInterface {
  """
  The "coordinates" field is an array of two or more positions.
  """
  coordinates: [Position]

  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType!

  """
  The minimum bounding box around the geometry object
  """
  bbox: [Float!]!

  """
  The coordinate reference system integer identifier
  """
  crs: Int!
}

type GeoJSONMultiLineStringType implements GeoJSONInterface {
  """
  The "coordinates" field is an array of LineString coordinate arrays.
  """
  coordinates: [Position]

  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType!

  """
  The minimum bounding box around the geometry object
  """
  bbox: [Float!]!

  """
  The coordinate reference system integer identifier
  """
  crs: Int!
}

type GeoJSONPolygonType implements GeoJSONInterface {
  """
  The "coordinates" field MUST be an array of linear ring coordinate arrays. For Polygons with more than one of these rings, the first MUST be the exterior ring, and any others MUST be interior rings. The exterior ring bounds the surface, and the interior rings (if present) bound holes within the surface.
  """
  coordinates: [Position]

  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType!

  """
  The minimum bounding box around the geometry object
  """
  bbox: [Float!]!

  """
  The coordinate reference system integer identifier
  """
  crs: Int!
}

type GeoJSONMultiPolygonType implements GeoJSONInterface {
  """
  The "coordinates" field is an array of Polygon coordinate arrays.
  """
  coordinates: [Position]

  """
  The geometry type of the GeoJson object
  """
  type: GeoJSONGeometryType!

  """
  The minimum bounding box around the geometry object
  """
  bbox: [Float!]!

  """
  The coordinate reference system integer identifier
  """
  crs: Int!
}

enum GeoJSONGeometryType {
  Point
  MultiPoint
  LineString
  MultiLineString
  Polygon
  MultiPolygon
  GeometryCollection
}

scalar Geometry

type Query {
  explore_getRecentlyAddedRoutes(
    routeFilters: RouteFiltersInput
  ): ListResponseBaseOfRouteDto
  explore_getMostPopularRoutes(
    routeFilters: RouteFiltersInput
  ): ListResponseBaseOfRouteDto
  explore_getHighlyRatedRoutes(
    routeFilters: RouteFiltersInput
  ): ListResponseBaseOfRouteDto
  followRequest_getFollowRequestById(
    requestId: Int!
  ): ResponseBaseOfFollowRequestDto
  followRequest_getFollowRequestByRequestedUserId(
    requestedUserId: Int!
  ): ResponseBaseOfFollowRequestDto
  groupInvitation_invited_active: ListResponseBaseOfGroupInvitationDto
  groupInvitation_inviter_active: ListResponseBaseOfGroupInvitationDto
  groupInvitation_invited_processed: ListResponseBaseOfGroupInvitationDto
  groupInvitation_inviter_processed: ListResponseBaseOfGroupInvitationDto
  groupInvitation_getGroupInvitation(
    invitationId: Int!
  ): ResponseBaseOfGroupInvitationDto
  group_getOwnGroups(
    userId: Int!
    deleted: Boolean = false
  ): ListResponseBaseOfGroupDto
  group_userGetOwnGroups(deleted: Boolean = false): ListResponseBaseOfGroupDto
  group_getJoinedGroups(
    userId: Int!
    deleted: Boolean = false
  ): ListResponseBaseOfGroupDto
  group_userGetJoinedGroups(
    deleted: Boolean = false
  ): ListResponseBaseOfGroupDto
  group_getAllGroups(
    userId: Int!
    deleted: Boolean = false
  ): ListResponseBaseOfGroupDto
  group_userGetAllGroups(deleted: Boolean = false): ListResponseBaseOfGroupDto
  group_getGroup(groupId: Int!): ResponseBaseOfGroupDto
  groupReview_getGroupReviews(
    userId: Int
    deleted: Boolean
  ): ListResponseBaseOfGroupReviewDto
  groupRoute_getGroupRoutes(
    userId: Int
    deleted: Boolean
  ): ListResponseBaseOfGroupRouteDto
  notification_getNotifications: ListResponseBaseOfNotificationDto
  notification_getUnreadNotificationExists: ResponseBaseOfBoolean
  photo_getOwnerRoutePhotos(
    routeId: Int!
    deleted: Boolean
  ): ListResponseBaseOfPhotoDto
  photo_getOthersRoutePhotos(
    routeId: Int!
    deleted: Boolean
  ): ListResponseBaseOfPhotoDto
  route_getCurrentRecording: ResponseBaseOfInt32
  route_getRoute(routeId: Int!): ResponseBaseOfRouteDto
  route_getNearbyRoutes(
    location: Position
    maxDistance: Int!
  ): ListResponseBaseOfRouteDto
  routeReview_getRouteReviews(
    userId: Int
    deleted: Boolean
  ): ListResponseBaseOfRouteReviewDto
  savedRoute_getSavedRoute(
    savedRouteId: Int!
    deleted: Boolean! = false
  ): ResponseBaseOfSavedRouteDto
  savedRoute_getSavedRoutes(
    deleted: Boolean! = false
  ): ListResponseBaseOfSavedRouteDto
  following_getFollowers(
    userId: Int
    deleted: Boolean
  ): ListResponseBaseOfUserFollowingDto
  following_getFolloweds(
    userId: Int
    deleted: Boolean
  ): ListResponseBaseOfUserFollowingDto
  following_isFollowedBy(
    followerUserId: Int!
    followedUserId: Int
  ): ResponseBaseOfBoolean
  following_isFollowerOf(
    followedUserId: Int!
    followerUserId: Int
  ): ResponseBaseOfBoolean
  user_getUser(userId: Int!): ResponseBaseOfUserDto
  user_getMe: ResponseBaseOfUserDto
  vehicle_getVehicles(
    userId: Int
    deleted: Boolean
  ): ListResponseBaseOfVehicleDto
  wayPoint_getWayPoint(waypointId: Int!): ResponseBaseOfWayPointDto
  wayPoint_getWayPoints(routeId: Int!): ListResponseBaseOfWayPointDto
}

type Mutation {
  followingRequest_addRequest(
    requestedUserId: Int!
  ): ResponseBaseOfFollowRequestDto
  followingRequest_acceptRequest(
    requestId: Int!
  ): ResponseBaseOfFollowRequestDto
  followingRequest_rejectRequest(
    requestId: Int!
  ): ResponseBaseOfFollowRequestDto
  followingRequest_cancelRequest(
    requestId: Int!
  ): ResponseBaseOfFollowRequestDto
  groupMember_invite(
    input: GroupInvitationInput
  ): ResponseBaseOfGroupInvitationDto
  groupMember_batchInvite(
    input: BatchGroupInvitationInput
  ): ListResponseBaseOfGroupInvitationDto
  groupMember_acceptInvitation(
    invitationId: Int!
  ): ResponseBaseOfGroupInvitationDto
  groupMember_rejectInvitation(
    invitationId: Int!
  ): ResponseBaseOfGroupInvitationDto
  groupMember_leaveGroup(groupId: Int!): ResponseBaseOfGroupMemerDto
  groupMember_removeMember(
    groupId: Int!
    memberId: Int!
  ): ResponseBaseOfGroupMemerDto
  groupMember_setCoOwner(
    groupId: Int!
    memberId: Int!
  ): ResponseBaseOfGroupMemerDto
  groupMember_removeCoOwner(
    groupId: Int!
    memberId: Int!
  ): ResponseBaseOfGroupMemerDto
  group_create(input: GroupInput): ResponseBaseOfGroupDto
  group_edit(input: GroupInput): ResponseBaseOfGroupDto
  groupReview_addGroupReview(
    input: GroupReviewInput
  ): ResponseBaseOfGroupReviewDto
  groupReview_editGroupReview(
    input: GroupReviewInput
  ): ResponseBaseOfGroupReviewDto
  groupReview_deleteGroupReview(
    groupReviewId: Int!
  ): ResponseBaseOfGroupReviewDto
  groupRoute_addGroupRoute(input: GroupRouteInput): ResponseBaseOfGroupRouteDto
  groupRoute_batchShareRoute(
    routeId: Int!
    groupIds: [Int!]
  ): ListResponseBaseOfGroupRouteDto
  groupRoute_deleteGroupRoute(groupRouteId: Int!): ResponseBaseOfGroupRouteDto
  photo_addPhoto(input: PhotoInput): ResponseBaseOfPhotoDto
  photo_addPhotos(input: [PhotoInput]): ListResponseBaseOfPhotoDto
  photo_editPhoto(input: PhotoInput): ResponseBaseOfPhotoDto
  photo_deletePhoto(photoId: Int!): ResponseBaseOfPhotoDto
  route_addRoute(input: RouteInput): ResponseBaseOfInt32
  route_editRoute(input: RouteInput): ResponseBaseOfBoolean
  route_deleteRoute(routeId: Int!): ResponseBaseOfBoolean
  route_addPoints(
    newPoints: [Position]
    elapsedTime: TimeSpan!
    endOfRecording: Boolean!
  ): ResponseBaseOfBoolean
  route_cencelRecording: ResponseBaseOfBoolean
  routeReview_addRouteReview(
    input: RouteReviewInput
  ): ResponseBaseOfRouteReviewDto
  routeReview_editRouteReview(
    input: RouteReviewInput
  ): ResponseBaseOfRouteReviewDto
  routeReview_deleteRouteReview(
    routeReviewId: Int!
  ): ResponseBaseOfRouteReviewDto
  savedRoute_addSavedRoute(routeId: Int!): ResponseBaseOfSavedRouteDto
  savedRoute_deleteSavedRoute(routeId: Int!): ResponseBaseOfBoolean
  userFollowing_follow(userId: Int!): ResponseBaseOfUserFollowingDto
  userFollowing_unfollow(userId: Int!): ResponseBaseOfUserFollowingDto
  user_signUp: ResponseBaseOfUserDto
  user_signIn: ResponseBaseOfUserDto
  user_setup(input: UserInput): ResponseBaseOfUserDto
  user_sendEmail(emailInput: EmailInput): ResponseBaseOfResponseStatus
  vehicle_addVehicle(input: VehicleInput): ResponseBaseOfVehicleDto
  vehicle_editVehicle(input: VehicleInput): ResponseBaseOfVehicleDto
  vehicle_deleteVehicle(vehicleId: Int!): ResponseBaseOfVehicleDto
  vehicle_restoreVehicle(vehicleId: Int!): ResponseBaseOfVehicleDto
  wayPoint_addWayPoint(point: Position): ResponseBaseOfInt32
  wayPoint_removeWayPoint(waypointId: Int!): ResponseBaseOfBoolean
}

type Subscription {
  notificationAdded(userId: Int!): Notification
}

type FollowRequest {
  applicantUser: User
  requestedUser: User
  notifications(
    skip: Int
    take: Int
    where: NotificationFilterInput
    order: [NotificationSortInput!]
  ): NotificationCollectionSegment
  applicantUserId: Int!
  requestedUserId: Int!
  requestTime: DateTime!
  processedTime: DateTime
  id: Int!
  isDeleted: Boolean!
}

type GroupInvitation {
  group: Group
  invited: User
  inviter: User
  notifications(
    skip: Int
    take: Int
    where: NotificationFilterInput
    order: [NotificationSortInput!]
  ): NotificationCollectionSegment
  inviterId: Int!
  invitedId: Int!
  groupId: Int!
  invitatinTime: DateTime!
  processedAt: DateTime
  id: Int!
  isDeleted: Boolean!
}

type GroupMember {
  group: Group
  member: User
  memberId: Int!
  groupId: Int!
  joinedAt: DateTime!
  isCoCowner: Boolean!
  id: Int!
  isDeleted: Boolean!
}

type GroupReview {
  group: Group
  user: User
  userId: Int!
  groupId: Int!
  text: String
  image: String
  sentAt: DateTime!
  id: Int!
  isDeleted: Boolean!
}

type Notification {
  route: Route
  notifier: User
  notified: User
  userFollowing: UserFollowing
  followRequest: FollowRequest
  groupInvitation: GroupInvitation
  notifierId: Int!
  notifiedId: Int
  createdAt: DateTime!
  notifiedAt: DateTime
  isNotified: Boolean!
  completedAt: DateTime
  isCompleted: Boolean!
  notificationType: NotificationType!
  routeId: Int
  followRequestId: Int
  userFollowingId: Int
  groupInvitationId: Int
  id: Int!
  isDeleted: Boolean!
}

type Group {
  groupInvitations(
    skip: Int
    take: Int
    where: GroupInvitationFilterInput
    order: [GroupInvitationSortInput!]
  ): GroupInvitationCollectionSegment
  groupRoutes(
    skip: Int
    take: Int
    where: GroupRouteFilterInput
    order: [GroupRouteSortInput!]
  ): GroupRouteCollectionSegment
  joinedMembers(
    skip: Int
    take: Int
    where: GroupMemberFilterInput
    order: [GroupMemberSortInput!]
  ): GroupMemberCollectionSegment
  owner: User
  reviews(
    skip: Int
    take: Int
    where: GroupReviewFilterInput
    order: [GroupReviewSortInput!]
  ): GroupReviewCollectionSegment
  coverImage: String
  title: String
  description: String
  ownerId: Int!
  id: Int!
  isDeleted: Boolean!
}

type Route {
  groupRoutes(
    skip: Int
    take: Int
    where: GroupRouteFilterInput
    order: [GroupRouteSortInput!]
  ): GroupRouteCollectionSegment
  photos(
    skip: Int
    take: Int
    where: PhotoFilterInput
    order: [PhotoSortInput!]
  ): PhotoCollectionSegment
  reviews(
    skip: Int
    take: Int
    where: RouteReviewFilterInput
    order: [RouteReviewSortInput!]
  ): RouteReviewCollectionSegment
  roadReports(
    skip: Int
    take: Int
    where: RoadReportFilterInput
    order: [RoadReportSortInput!]
  ): RoadReportCollectionSegment
  savedRoutes(
    skip: Int
    take: Int
    where: SavedRouteFilterInput
    order: [SavedRouteSortInput!]
  ): SavedRouteCollectionSegment
  user: User
  wayPoints(
    skip: Int
    take: Int
    where: WayPointFilterInput
    order: [WayPointSortInput!]
  ): WayPointCollectionSegment
  notifications(
    skip: Int
    take: Int
    where: NotificationFilterInput
    order: [NotificationSortInput!]
  ): NotificationCollectionSegment
  userId: Int!
  driveType: DriveType!
  driveStyle: DriveStyle!
  driveLength: DriveLength!
  isPrivateMode: Boolean!
  coverPhoto: String
  title: String
  description: String
  tags: [String]
  path: GeoJSONLineStringType
  length: Float!
  startPoint: GeoJSONPointType
  endPoint: GeoJSONPointType
  startAt: DateTime!
  endAt: DateTime
  duration: TimeSpan!
  rateCount: Int!
  totalRate: Int!
  averageRate: Float!
  id: Int!
  isDeleted: Boolean!
}

type SavedRoute {
  user: User
  route: Route
  userId: Int!
  routeId: Int!
  id: Int!
  isDeleted: Boolean!
}

type UserFollowing {
  followedUser: User
  followerUser: User
  isMutual: Boolean!
  notifications(
    skip: Int
    take: Int
    where: NotificationFilterInput
    order: [NotificationSortInput!]
  ): NotificationCollectionSegment
  followerUserId: Int!
  followedUserId: Int!
  id: Int!
  isDeleted: Boolean!
}

type User {
  followers(
    skip: Int
    take: Int
    where: UserFollowingFilterInput
    order: [UserFollowingSortInput!]
  ): UserFollowingCollectionSegment
  followings(
    skip: Int
    take: Int
    where: UserFollowingFilterInput
    order: [UserFollowingSortInput!]
  ): UserFollowingCollectionSegment
  groupReviews(
    skip: Int
    take: Int
    where: GroupReviewFilterInput
    order: [GroupReviewSortInput!]
  ): GroupReviewCollectionSegment
  joinedGroups(
    skip: Int
    take: Int
    where: GroupMemberFilterInput
    order: [GroupMemberSortInput!]
  ): GroupMemberCollectionSegment
  ownedGroups(
    skip: Int
    take: Int
    where: GroupFilterInput
    order: [GroupSortInput!]
  ): GroupCollectionSegment
  ownedRoutes(
    skip: Int
    take: Int
    where: RouteFilterInput
    order: [RouteSortInput!]
  ): RouteCollectionSegment
  photos(
    skip: Int
    take: Int
    where: PhotoFilterInput
    order: [PhotoSortInput!]
  ): PhotoCollectionSegment
  receivedInvitations(
    skip: Int
    take: Int
    where: GroupInvitationFilterInput
    order: [GroupInvitationSortInput!]
  ): GroupInvitationCollectionSegment
  roadReports(
    skip: Int
    take: Int
    where: RoadReportFilterInput
    order: [RoadReportSortInput!]
  ): RoadReportCollectionSegment
  routeReviews(
    skip: Int
    take: Int
    where: RouteReviewFilterInput
    order: [RouteReviewSortInput!]
  ): RouteReviewCollectionSegment
  savedRoutes(
    skip: Int
    take: Int
    where: SavedRouteFilterInput
    order: [SavedRouteSortInput!]
  ): SavedRouteCollectionSegment
  sentInvitations(
    skip: Int
    take: Int
    where: GroupInvitationFilterInput
    order: [GroupInvitationSortInput!]
  ): GroupInvitationCollectionSegment
  vehicles(
    skip: Int
    take: Int
    where: VehicleFilterInput
    order: [VehicleSortInput!]
  ): VehicleCollectionSegment
  notifiedNotifications(
    skip: Int
    take: Int
    where: NotificationFilterInput
    order: [NotificationSortInput!]
  ): NotificationCollectionSegment
  notifierNotifications(
    skip: Int
    take: Int
    where: NotificationFilterInput
    order: [NotificationSortInput!]
  ): NotificationCollectionSegment
  externalId: String
  email: String!
  firstName: String
  lastName: String
  username: String
  bio: String
  country: String
  state: String
  city: String
  isPrivateMode: Boolean!
  useMetricSystem: Boolean!
  profileHeaderUrl: String
  profilePhotoUrl: String
  id: Int!
  isDeleted: Boolean!
}

type Vehicle {
  user: User
  userId: Int!
  year: Int!
  make: String!
  model: String!
  id: Int!
  isDeleted: Boolean!
}

type WayPoint {
  route: Route
  routeId: Int!
  location: GeoJSONPointType
  id: Int!
  isDeleted: Boolean!
}

type RouteReview {
  user: User
  route: Route
  userId: Int!
  routeId: Int!
  rate: Int!
  text: String
  sentAt: DateTime!
  id: Int!
  isDeleted: Boolean!
}

type GroupRoute {
  group: Group
  route: Route
  groupId: Int!
  routeId: Int!
  id: Int!
  isDeleted: Boolean!
}

type Photo {
  route: Route
  user: User
  url: String
  routeId: Int!
  userId: Int!
  location: GeoJSONPointType
  id: Int!
  isDeleted: Boolean!
}

input NotificationFilterInput {
  and: [NotificationFilterInput!]
  or: [NotificationFilterInput!]
  notifierId: ComparableInt32OperationFilterInput
  notifier: UserFilterInput
  notifiedId: ComparableNullableOfInt32OperationFilterInput
  notified: UserFilterInput
  createdAt: ComparableDateTimeOperationFilterInput
  notifiedAt: ComparableNullableOfDateTimeOperationFilterInput
  isNotified: BooleanOperationFilterInput
  completedAt: ComparableNullableOfDateTimeOperationFilterInput
  isCompleted: BooleanOperationFilterInput
  notificationType: NotificationTypeOperationFilterInput
  routeId: ComparableNullableOfInt32OperationFilterInput
  route: RouteFilterInput
  followRequestId: ComparableNullableOfInt32OperationFilterInput
  followRequest: FollowRequestFilterInput
  userFollowingId: ComparableNullableOfInt32OperationFilterInput
  userFollowing: UserFollowingFilterInput
  groupInvitationId: ComparableNullableOfInt32OperationFilterInput
  groupInvitation: GroupInvitationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input NotificationSortInput {
  notifierId: SortEnumType
  notifier: UserSortInput
  notifiedId: SortEnumType
  notified: UserSortInput
  createdAt: SortEnumType
  notifiedAt: SortEnumType
  isNotified: SortEnumType
  completedAt: SortEnumType
  isCompleted: SortEnumType
  notificationType: SortEnumType
  routeId: SortEnumType
  route: RouteSortInput
  followRequestId: SortEnumType
  followRequest: FollowRequestSortInput
  userFollowingId: SortEnumType
  userFollowing: UserFollowingSortInput
  groupInvitationId: SortEnumType
  groupInvitation: GroupInvitationSortInput
  id: SortEnumType
  isDeleted: SortEnumType
}

type NotificationCollectionSegment {
  items: [Notification]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input GroupInvitationFilterInput {
  and: [GroupInvitationFilterInput!]
  or: [GroupInvitationFilterInput!]
  inviterId: ComparableInt32OperationFilterInput
  inviter: UserFilterInput
  invitedId: ComparableInt32OperationFilterInput
  invited: UserFilterInput
  groupId: ComparableInt32OperationFilterInput
  group: GroupFilterInput
  invitatinTime: ComparableDateTimeOperationFilterInput
  processedAt: ComparableNullableOfDateTimeOperationFilterInput
  notifications: ListFilterInputTypeOfNotificationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input GroupInvitationSortInput {
  inviterId: SortEnumType
  inviter: UserSortInput
  invitedId: SortEnumType
  invited: UserSortInput
  groupId: SortEnumType
  group: GroupSortInput
  invitatinTime: SortEnumType
  processedAt: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

input GroupRouteFilterInput {
  and: [GroupRouteFilterInput!]
  or: [GroupRouteFilterInput!]
  groupId: ComparableInt32OperationFilterInput
  group: GroupFilterInput
  routeId: ComparableInt32OperationFilterInput
  route: RouteFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input GroupRouteSortInput {
  groupId: SortEnumType
  group: GroupSortInput
  routeId: SortEnumType
  route: RouteSortInput
  id: SortEnumType
  isDeleted: SortEnumType
}

input GroupMemberFilterInput {
  and: [GroupMemberFilterInput!]
  or: [GroupMemberFilterInput!]
  memberId: ComparableInt32OperationFilterInput
  member: UserFilterInput
  groupId: ComparableInt32OperationFilterInput
  group: GroupFilterInput
  joinedAt: ComparableDateTimeOperationFilterInput
  isCoCowner: BooleanOperationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input GroupMemberSortInput {
  memberId: SortEnumType
  member: UserSortInput
  groupId: SortEnumType
  group: GroupSortInput
  joinedAt: SortEnumType
  isCoCowner: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

input GroupReviewFilterInput {
  and: [GroupReviewFilterInput!]
  or: [GroupReviewFilterInput!]
  userId: ComparableInt32OperationFilterInput
  user: UserFilterInput
  groupId: ComparableInt32OperationFilterInput
  group: GroupFilterInput
  text: StringOperationFilterInput
  image: StringOperationFilterInput
  sentAt: ComparableDateTimeOperationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input GroupReviewSortInput {
  userId: SortEnumType
  user: UserSortInput
  groupId: SortEnumType
  group: GroupSortInput
  text: SortEnumType
  image: SortEnumType
  sentAt: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

type GroupInvitationCollectionSegment {
  items: [GroupInvitation]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type GroupRouteCollectionSegment {
  items: [GroupRoute]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type GroupMemberCollectionSegment {
  items: [GroupMember]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type GroupReviewCollectionSegment {
  items: [GroupReview]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input PhotoFilterInput {
  and: [PhotoFilterInput!]
  or: [PhotoFilterInput!]
  url: StringOperationFilterInput
  routeId: ComparableInt32OperationFilterInput
  route: RouteFilterInput
  userId: ComparableInt32OperationFilterInput
  user: UserFilterInput
  location: PointFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input PhotoSortInput {
  url: SortEnumType
  routeId: SortEnumType
  route: RouteSortInput
  userId: SortEnumType
  user: UserSortInput
  location: PointSortInput
  id: SortEnumType
  isDeleted: SortEnumType
}

input RouteReviewFilterInput {
  and: [RouteReviewFilterInput!]
  or: [RouteReviewFilterInput!]
  userId: ComparableInt32OperationFilterInput
  user: UserFilterInput
  routeId: ComparableInt32OperationFilterInput
  route: RouteFilterInput
  rate: ComparableInt32OperationFilterInput
  text: StringOperationFilterInput
  sentAt: ComparableDateTimeOperationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input RouteReviewSortInput {
  userId: SortEnumType
  user: UserSortInput
  routeId: SortEnumType
  route: RouteSortInput
  rate: SortEnumType
  text: SortEnumType
  sentAt: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

input RoadReportFilterInput {
  and: [RoadReportFilterInput!]
  or: [RoadReportFilterInput!]
  routeId: ComparableInt32OperationFilterInput
  route: RouteFilterInput
  userId: ComparableInt32OperationFilterInput
  user: UserFilterInput
  point: PointFilterInput
  roadReportType: RoadReportTypeOperationFilterInput
  createAt: ComparableDateTimeOperationFilterInput
  validTo: ComparableDateTimeOperationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input RoadReportSortInput {
  routeId: SortEnumType
  route: RouteSortInput
  userId: SortEnumType
  user: UserSortInput
  point: PointSortInput
  roadReportType: SortEnumType
  createAt: SortEnumType
  validTo: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

input SavedRouteFilterInput {
  and: [SavedRouteFilterInput!]
  or: [SavedRouteFilterInput!]
  userId: ComparableInt32OperationFilterInput
  user: UserFilterInput
  routeId: ComparableInt32OperationFilterInput
  route: RouteFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input SavedRouteSortInput {
  userId: SortEnumType
  user: UserSortInput
  routeId: SortEnumType
  route: RouteSortInput
  id: SortEnumType
  isDeleted: SortEnumType
}

input WayPointFilterInput {
  and: [WayPointFilterInput!]
  or: [WayPointFilterInput!]
  routeId: ComparableInt32OperationFilterInput
  route: RouteFilterInput
  location: PointFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input WayPointSortInput {
  routeId: SortEnumType
  route: RouteSortInput
  location: PointSortInput
  id: SortEnumType
  isDeleted: SortEnumType
}

type PhotoCollectionSegment {
  items: [Photo]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type RouteReviewCollectionSegment {
  items: [RouteReview]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type RoadReportCollectionSegment {
  items: [RoadReport]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type SavedRouteCollectionSegment {
  items: [SavedRoute]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type WayPointCollectionSegment {
  items: [WayPoint]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input UserFollowingFilterInput {
  and: [UserFollowingFilterInput!]
  or: [UserFollowingFilterInput!]
  followerUser: UserFilterInput
  followerUserId: ComparableInt32OperationFilterInput
  followedUser: UserFilterInput
  followedUserId: ComparableInt32OperationFilterInput
  notifications: ListFilterInputTypeOfNotificationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input UserFollowingSortInput {
  followerUser: UserSortInput
  followerUserId: SortEnumType
  followedUser: UserSortInput
  followedUserId: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

input GroupFilterInput {
  and: [GroupFilterInput!]
  or: [GroupFilterInput!]
  coverImage: StringOperationFilterInput
  title: StringOperationFilterInput
  description: StringOperationFilterInput
  ownerId: ComparableInt32OperationFilterInput
  owner: UserFilterInput
  joinedMembers: ListFilterInputTypeOfGroupMemberFilterInput
  groupInvitations: ListFilterInputTypeOfGroupInvitationFilterInput
  groupRoutes: ListFilterInputTypeOfGroupRouteFilterInput
  reviews: ListFilterInputTypeOfGroupReviewFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input GroupSortInput {
  coverImage: SortEnumType
  title: SortEnumType
  description: SortEnumType
  ownerId: SortEnumType
  owner: UserSortInput
  id: SortEnumType
  isDeleted: SortEnumType
}

input RouteFilterInput {
  and: [RouteFilterInput!]
  or: [RouteFilterInput!]
  userId: ComparableInt32OperationFilterInput
  user: UserFilterInput
  driveType: DriveTypeOperationFilterInput
  driveStyle: DriveStyleOperationFilterInput
  driveLength: DriveLengthOperationFilterInput
  isPrivateMode: BooleanOperationFilterInput
  coverPhoto: StringOperationFilterInput
  title: StringOperationFilterInput
  description: StringOperationFilterInput
  tags: ListStringOperationFilterInput
  path: LineStringFilterInput
  length: ComparableDoubleOperationFilterInput
  startPoint: PointFilterInput
  endPoint: PointFilterInput
  startAt: ComparableDateTimeOperationFilterInput
  endAt: ComparableNullableOfDateTimeOperationFilterInput
  duration: ComparableTimeSpanOperationFilterInput
  rateCount: ComparableInt32OperationFilterInput
  totalRate: ComparableInt32OperationFilterInput
  averageRate: ComparableDoubleOperationFilterInput
  savedRoutes: ListFilterInputTypeOfSavedRouteFilterInput
  groupRoutes: ListFilterInputTypeOfGroupRouteFilterInput
  reviews: ListFilterInputTypeOfRouteReviewFilterInput
  roadReports: ListFilterInputTypeOfRoadReportFilterInput
  wayPoints: ListFilterInputTypeOfWayPointFilterInput
  photos: ListFilterInputTypeOfPhotoFilterInput
  notifications: ListFilterInputTypeOfNotificationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input RouteSortInput {
  userId: SortEnumType
  user: UserSortInput
  driveType: SortEnumType
  driveStyle: SortEnumType
  driveLength: SortEnumType
  isPrivateMode: SortEnumType
  coverPhoto: SortEnumType
  title: SortEnumType
  description: SortEnumType
  path: LineStringSortInput
  length: SortEnumType
  startPoint: PointSortInput
  endPoint: PointSortInput
  startAt: SortEnumType
  endAt: SortEnumType
  duration: SortEnumType
  rateCount: SortEnumType
  totalRate: SortEnumType
  averageRate: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

input VehicleFilterInput {
  and: [VehicleFilterInput!]
  or: [VehicleFilterInput!]
  userId: ComparableInt32OperationFilterInput
  user: UserFilterInput
  year: ComparableInt32OperationFilterInput
  make: StringOperationFilterInput
  model: StringOperationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input VehicleSortInput {
  userId: SortEnumType
  user: UserSortInput
  year: SortEnumType
  make: SortEnumType
  model: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

type UserFollowingCollectionSegment {
  items: [UserFollowing]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type GroupCollectionSegment {
  items: [Group]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type RouteCollectionSegment {
  items: [Route]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type VehicleCollectionSegment {
  items: [Vehicle]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

enum ApplyPolicy {
  BEFORE_RESOLVER
  AFTER_RESOLVER
}

input ComparableInt32OperationFilterInput {
  eq: Int
  neq: Int
  in: [Int!]
  nin: [Int!]
  gt: Int
  ngt: Int
  gte: Int
  ngte: Int
  lt: Int
  nlt: Int
  lte: Int
  nlte: Int
}

input UserFilterInput {
  and: [UserFilterInput!]
  or: [UserFilterInput!]
  externalId: StringOperationFilterInput
  email: StringOperationFilterInput
  firstName: StringOperationFilterInput
  lastName: StringOperationFilterInput
  username: StringOperationFilterInput
  bio: StringOperationFilterInput
  country: StringOperationFilterInput
  state: StringOperationFilterInput
  city: StringOperationFilterInput
  isPrivateMode: BooleanOperationFilterInput
  useMetricSystem: BooleanOperationFilterInput
  profileHeaderUrl: StringOperationFilterInput
  profilePhotoUrl: StringOperationFilterInput
  followers: ListFilterInputTypeOfUserFollowingFilterInput
  followings: ListFilterInputTypeOfUserFollowingFilterInput
  ownedGroups: ListFilterInputTypeOfGroupFilterInput
  joinedGroups: ListFilterInputTypeOfGroupMemberFilterInput
  sentInvitations: ListFilterInputTypeOfGroupInvitationFilterInput
  receivedInvitations: ListFilterInputTypeOfGroupInvitationFilterInput
  groupReviews: ListFilterInputTypeOfGroupReviewFilterInput
  ownedRoutes: ListFilterInputTypeOfRouteFilterInput
  savedRoutes: ListFilterInputTypeOfSavedRouteFilterInput
  routeReviews: ListFilterInputTypeOfRouteReviewFilterInput
  roadReports: ListFilterInputTypeOfRoadReportFilterInput
  photos: ListFilterInputTypeOfPhotoFilterInput
  vehicles: ListFilterInputTypeOfVehicleFilterInput
  notifierNotifications: ListFilterInputTypeOfNotificationFilterInput
  notifiedNotifications: ListFilterInputTypeOfNotificationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

input ComparableNullableOfInt32OperationFilterInput {
  eq: Int
  neq: Int
  in: [Int]
  nin: [Int]
  gt: Int
  ngt: Int
  gte: Int
  ngte: Int
  lt: Int
  nlt: Int
  lte: Int
  nlte: Int
}

input ComparableDateTimeOperationFilterInput {
  eq: DateTime
  neq: DateTime
  in: [DateTime!]
  nin: [DateTime!]
  gt: DateTime
  ngt: DateTime
  gte: DateTime
  ngte: DateTime
  lt: DateTime
  nlt: DateTime
  lte: DateTime
  nlte: DateTime
}

input ComparableNullableOfDateTimeOperationFilterInput {
  eq: DateTime
  neq: DateTime
  in: [DateTime]
  nin: [DateTime]
  gt: DateTime
  ngt: DateTime
  gte: DateTime
  ngte: DateTime
  lt: DateTime
  nlt: DateTime
  lte: DateTime
  nlte: DateTime
}

input BooleanOperationFilterInput {
  eq: Boolean
  neq: Boolean
}

input NotificationTypeOperationFilterInput {
  eq: NotificationType
  neq: NotificationType
  in: [NotificationType!]
  nin: [NotificationType!]
}

input FollowRequestFilterInput {
  and: [FollowRequestFilterInput!]
  or: [FollowRequestFilterInput!]
  applicantUserId: ComparableInt32OperationFilterInput
  applicantUser: UserFilterInput
  requestedUserId: ComparableInt32OperationFilterInput
  requestedUser: UserFilterInput
  requestTime: ComparableDateTimeOperationFilterInput
  processedTime: ComparableNullableOfDateTimeOperationFilterInput
  notifications: ListFilterInputTypeOfNotificationFilterInput
  id: ComparableInt32OperationFilterInput
  isDeleted: BooleanOperationFilterInput
}

enum SortEnumType {
  ASC
  DESC
}

input UserSortInput {
  externalId: SortEnumType
  email: SortEnumType
  firstName: SortEnumType
  lastName: SortEnumType
  username: SortEnumType
  bio: SortEnumType
  country: SortEnumType
  state: SortEnumType
  city: SortEnumType
  isPrivateMode: SortEnumType
  useMetricSystem: SortEnumType
  profileHeaderUrl: SortEnumType
  profilePhotoUrl: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

input FollowRequestSortInput {
  applicantUserId: SortEnumType
  applicantUser: UserSortInput
  requestedUserId: SortEnumType
  requestedUser: UserSortInput
  requestTime: SortEnumType
  processedTime: SortEnumType
  id: SortEnumType
  isDeleted: SortEnumType
}

"""
Information about the offset pagination.
"""
type CollectionSegmentInfo {
  """
  Indicates whether more items exist following the set defined by the clients arguments.
  """
  hasNextPage: Boolean!

  """
  Indicates whether more items exist prior the set defined by the clients arguments.
  """
  hasPreviousPage: Boolean!
}

input ListFilterInputTypeOfNotificationFilterInput {
  all: NotificationFilterInput
  none: NotificationFilterInput
  some: NotificationFilterInput
  any: Boolean
}

input StringOperationFilterInput {
  and: [StringOperationFilterInput!]
  or: [StringOperationFilterInput!]
  eq: String
  neq: String
  contains: String
  ncontains: String
  in: [String]
  nin: [String]
  startsWith: String
  nstartsWith: String
  endsWith: String
  nendsWith: String
}

input PointFilterInput {
  and: [PointFilterInput!]
  or: [PointFilterInput!]
  coordinate: CoordinateFilterInput
  coordinateSequence: CoordinateSequenceFilterInput
  coordinates: ListFilterInputTypeOfCoordinateFilterInput
  numPoints: ComparableInt32OperationFilterInput
  isEmpty: BooleanOperationFilterInput
  dimension: DimensionOperationFilterInput
  boundaryDimension: DimensionOperationFilterInput
  x: ComparableDoubleOperationFilterInput
  y: ComparableDoubleOperationFilterInput
  geometryType: StringOperationFilterInput
  ogcGeometryType: OgcGeometryTypeOperationFilterInput
  boundary: GeometryFilterInput
  z: ComparableDoubleOperationFilterInput
  m: ComparableDoubleOperationFilterInput
  factory: GeometryFactoryFilterInput
  sRID: ComparableInt32OperationFilterInput
  precisionModel: PrecisionModelFilterInput
  numGeometries: ComparableInt32OperationFilterInput
  isSimple: BooleanOperationFilterInput
  isValid: BooleanOperationFilterInput
  area: ComparableDoubleOperationFilterInput
  length: ComparableDoubleOperationFilterInput
  centroid: PointFilterInput
  interiorPoint: PointFilterInput
  pointOnSurface: PointFilterInput
  envelope: GeometryFilterInput
  envelopeInternal: EnvelopeFilterInput
  isRectangle: BooleanOperationFilterInput
}

input PointSortInput {
  coordinate: CoordinateSortInput
  coordinateSequence: CoordinateSequenceSortInput
  numPoints: SortEnumType
  isEmpty: SortEnumType
  dimension: SortEnumType
  boundaryDimension: SortEnumType
  x: SortEnumType
  y: SortEnumType
  geometryType: SortEnumType
  ogcGeometryType: SortEnumType
  boundary: GeometrySortInput
  z: SortEnumType
  m: SortEnumType
  factory: GeometryFactorySortInput
  sRID: SortEnumType
  precisionModel: PrecisionModelSortInput
  numGeometries: SortEnumType
  isSimple: SortEnumType
  isValid: SortEnumType
  area: SortEnumType
  length: SortEnumType
  centroid: PointSortInput
  interiorPoint: PointSortInput
  pointOnSurface: PointSortInput
  envelope: GeometrySortInput
  envelopeInternal: EnvelopeSortInput
  isRectangle: SortEnumType
}

input RoadReportTypeOperationFilterInput {
  eq: RoadReportType
  neq: RoadReportType
  in: [RoadReportType!]
  nin: [RoadReportType!]
}

type RoadReport {
  routeId: Int!
  route: Route
  userId: Int!
  user: User
  point: GeoJSONPointType
  roadReportType: RoadReportType!
  createAt: DateTime!
  validTo: DateTime!
  id: Int!
  isDeleted: Boolean!
}

input ListFilterInputTypeOfGroupMemberFilterInput {
  all: GroupMemberFilterInput
  none: GroupMemberFilterInput
  some: GroupMemberFilterInput
  any: Boolean
}

input ListFilterInputTypeOfGroupInvitationFilterInput {
  all: GroupInvitationFilterInput
  none: GroupInvitationFilterInput
  some: GroupInvitationFilterInput
  any: Boolean
}

input ListFilterInputTypeOfGroupRouteFilterInput {
  all: GroupRouteFilterInput
  none: GroupRouteFilterInput
  some: GroupRouteFilterInput
  any: Boolean
}

input ListFilterInputTypeOfGroupReviewFilterInput {
  all: GroupReviewFilterInput
  none: GroupReviewFilterInput
  some: GroupReviewFilterInput
  any: Boolean
}

input DriveTypeOperationFilterInput {
  eq: DriveType
  neq: DriveType
  in: [DriveType!]
  nin: [DriveType!]
}

input DriveStyleOperationFilterInput {
  eq: DriveStyle
  neq: DriveStyle
  in: [DriveStyle!]
  nin: [DriveStyle!]
}

input DriveLengthOperationFilterInput {
  eq: DriveLength
  neq: DriveLength
  in: [DriveLength!]
  nin: [DriveLength!]
}

input ListStringOperationFilterInput {
  all: StringOperationFilterInput
  none: StringOperationFilterInput
  some: StringOperationFilterInput
  any: Boolean
}

input LineStringFilterInput {
  and: [LineStringFilterInput!]
  or: [LineStringFilterInput!]
  coordinates: ListFilterInputTypeOfCoordinateFilterInput
  coordinateSequence: CoordinateSequenceFilterInput
  coordinate: CoordinateFilterInput
  dimension: DimensionOperationFilterInput
  boundaryDimension: DimensionOperationFilterInput
  isEmpty: BooleanOperationFilterInput
  numPoints: ComparableInt32OperationFilterInput
  startPoint: PointFilterInput
  endPoint: PointFilterInput
  isClosed: BooleanOperationFilterInput
  isRing: BooleanOperationFilterInput
  geometryType: StringOperationFilterInput
  ogcGeometryType: OgcGeometryTypeOperationFilterInput
  length: ComparableDoubleOperationFilterInput
  boundary: GeometryFilterInput
  count: ComparableInt32OperationFilterInput
  factory: GeometryFactoryFilterInput
  sRID: ComparableInt32OperationFilterInput
  precisionModel: PrecisionModelFilterInput
  numGeometries: ComparableInt32OperationFilterInput
  isSimple: BooleanOperationFilterInput
  isValid: BooleanOperationFilterInput
  area: ComparableDoubleOperationFilterInput
  centroid: PointFilterInput
  interiorPoint: PointFilterInput
  pointOnSurface: PointFilterInput
  envelope: GeometryFilterInput
  envelopeInternal: EnvelopeFilterInput
  isRectangle: BooleanOperationFilterInput
}

input ComparableDoubleOperationFilterInput {
  eq: Float
  neq: Float
  in: [Float!]
  nin: [Float!]
  gt: Float
  ngt: Float
  gte: Float
  ngte: Float
  lt: Float
  nlt: Float
  lte: Float
  nlte: Float
}

input ComparableTimeSpanOperationFilterInput {
  eq: TimeSpan
  neq: TimeSpan
  in: [TimeSpan!]
  nin: [TimeSpan!]
  gt: TimeSpan
  ngt: TimeSpan
  gte: TimeSpan
  ngte: TimeSpan
  lt: TimeSpan
  nlt: TimeSpan
  lte: TimeSpan
  nlte: TimeSpan
}

input ListFilterInputTypeOfSavedRouteFilterInput {
  all: SavedRouteFilterInput
  none: SavedRouteFilterInput
  some: SavedRouteFilterInput
  any: Boolean
}

input ListFilterInputTypeOfRouteReviewFilterInput {
  all: RouteReviewFilterInput
  none: RouteReviewFilterInput
  some: RouteReviewFilterInput
  any: Boolean
}

input ListFilterInputTypeOfRoadReportFilterInput {
  all: RoadReportFilterInput
  none: RoadReportFilterInput
  some: RoadReportFilterInput
  any: Boolean
}

input ListFilterInputTypeOfWayPointFilterInput {
  all: WayPointFilterInput
  none: WayPointFilterInput
  some: WayPointFilterInput
  any: Boolean
}

input ListFilterInputTypeOfPhotoFilterInput {
  all: PhotoFilterInput
  none: PhotoFilterInput
  some: PhotoFilterInput
  any: Boolean
}

input LineStringSortInput {
  coordinateSequence: CoordinateSequenceSortInput
  coordinate: CoordinateSortInput
  dimension: SortEnumType
  boundaryDimension: SortEnumType
  isEmpty: SortEnumType
  numPoints: SortEnumType
  startPoint: PointSortInput
  endPoint: PointSortInput
  isClosed: SortEnumType
  isRing: SortEnumType
  geometryType: SortEnumType
  ogcGeometryType: SortEnumType
  length: SortEnumType
  boundary: GeometrySortInput
  count: SortEnumType
  factory: GeometryFactorySortInput
  sRID: SortEnumType
  precisionModel: PrecisionModelSortInput
  numGeometries: SortEnumType
  isSimple: SortEnumType
  isValid: SortEnumType
  area: SortEnumType
  centroid: PointSortInput
  interiorPoint: PointSortInput
  pointOnSurface: PointSortInput
  envelope: GeometrySortInput
  envelopeInternal: EnvelopeSortInput
  isRectangle: SortEnumType
}

input ListFilterInputTypeOfUserFollowingFilterInput {
  all: UserFollowingFilterInput
  none: UserFollowingFilterInput
  some: UserFollowingFilterInput
  any: Boolean
}

input ListFilterInputTypeOfGroupFilterInput {
  all: GroupFilterInput
  none: GroupFilterInput
  some: GroupFilterInput
  any: Boolean
}

input ListFilterInputTypeOfRouteFilterInput {
  all: RouteFilterInput
  none: RouteFilterInput
  some: RouteFilterInput
  any: Boolean
}

input ListFilterInputTypeOfVehicleFilterInput {
  all: VehicleFilterInput
  none: VehicleFilterInput
  some: VehicleFilterInput
  any: Boolean
}

input CoordinateFilterInput {
  and: [CoordinateFilterInput!]
  or: [CoordinateFilterInput!]
  x: ComparableDoubleOperationFilterInput
  y: ComparableDoubleOperationFilterInput
  z: ComparableDoubleOperationFilterInput
  m: ComparableDoubleOperationFilterInput
  coordinateValue: CoordinateFilterInput
}

input CoordinateSequenceFilterInput {
  and: [CoordinateSequenceFilterInput!]
  or: [CoordinateSequenceFilterInput!]
  dimension: ComparableInt32OperationFilterInput
  measures: ComparableInt32OperationFilterInput
  spatial: ComparableInt32OperationFilterInput
  ordinates: OrdinatesOperationFilterInput
  hasZ: BooleanOperationFilterInput
  hasM: BooleanOperationFilterInput
  zOrdinateIndex: ComparableInt32OperationFilterInput
  mOrdinateIndex: ComparableInt32OperationFilterInput
  count: ComparableInt32OperationFilterInput
}

input ListFilterInputTypeOfCoordinateFilterInput {
  all: CoordinateFilterInput
  none: CoordinateFilterInput
  some: CoordinateFilterInput
  any: Boolean
}

input DimensionOperationFilterInput {
  eq: Dimension
  neq: Dimension
  in: [Dimension!]
  nin: [Dimension!]
}

input OgcGeometryTypeOperationFilterInput {
  eq: OgcGeometryType
  neq: OgcGeometryType
  in: [OgcGeometryType!]
  nin: [OgcGeometryType!]
}

input GeometryFilterInput {
  and: [GeometryFilterInput!]
  or: [GeometryFilterInput!]
  factory: GeometryFactoryFilterInput
  sRID: ComparableInt32OperationFilterInput
  geometryType: StringOperationFilterInput
  ogcGeometryType: OgcGeometryTypeOperationFilterInput
  precisionModel: PrecisionModelFilterInput
  coordinate: CoordinateFilterInput
  coordinates: ListFilterInputTypeOfCoordinateFilterInput
  numPoints: ComparableInt32OperationFilterInput
  numGeometries: ComparableInt32OperationFilterInput
  isSimple: BooleanOperationFilterInput
  isValid: BooleanOperationFilterInput
  isEmpty: BooleanOperationFilterInput
  area: ComparableDoubleOperationFilterInput
  length: ComparableDoubleOperationFilterInput
  centroid: PointFilterInput
  interiorPoint: PointFilterInput
  pointOnSurface: PointFilterInput
  dimension: DimensionOperationFilterInput
  boundary: GeometryFilterInput
  boundaryDimension: DimensionOperationFilterInput
  envelope: GeometryFilterInput
  envelopeInternal: EnvelopeFilterInput
  isRectangle: BooleanOperationFilterInput
}

input GeometryFactoryFilterInput {
  and: [GeometryFactoryFilterInput!]
  or: [GeometryFactoryFilterInput!]
  precisionModel: PrecisionModelFilterInput
  coordinateSequenceFactory: CoordinateSequenceFactoryFilterInput
  sRID: ComparableInt32OperationFilterInput
}

input PrecisionModelFilterInput {
  and: [PrecisionModelFilterInput!]
  or: [PrecisionModelFilterInput!]
  isFloating: BooleanOperationFilterInput
  maximumSignificantDigits: ComparableInt32OperationFilterInput
  scale: ComparableDoubleOperationFilterInput
  precisionModelType: PrecisionModelsOperationFilterInput
}

input EnvelopeFilterInput {
  and: [EnvelopeFilterInput!]
  or: [EnvelopeFilterInput!]
  isNull: BooleanOperationFilterInput
  width: ComparableDoubleOperationFilterInput
  height: ComparableDoubleOperationFilterInput
  diameter: ComparableDoubleOperationFilterInput
  minX: ComparableDoubleOperationFilterInput
  maxX: ComparableDoubleOperationFilterInput
  minY: ComparableDoubleOperationFilterInput
  maxY: ComparableDoubleOperationFilterInput
  area: ComparableDoubleOperationFilterInput
  minExtent: ComparableDoubleOperationFilterInput
  maxExtent: ComparableDoubleOperationFilterInput
  centre: CoordinateFilterInput
}

input CoordinateSortInput {
  x: SortEnumType
  y: SortEnumType
  z: SortEnumType
  m: SortEnumType
  coordinateValue: CoordinateSortInput
}

input CoordinateSequenceSortInput {
  dimension: SortEnumType
  measures: SortEnumType
  spatial: SortEnumType
  ordinates: SortEnumType
  hasZ: SortEnumType
  hasM: SortEnumType
  zOrdinateIndex: SortEnumType
  mOrdinateIndex: SortEnumType
  count: SortEnumType
}

input GeometrySortInput {
  factory: GeometryFactorySortInput
  sRID: SortEnumType
  geometryType: SortEnumType
  ogcGeometryType: SortEnumType
  precisionModel: PrecisionModelSortInput
  coordinate: CoordinateSortInput
  numPoints: SortEnumType
  numGeometries: SortEnumType
  isSimple: SortEnumType
  isValid: SortEnumType
  isEmpty: SortEnumType
  area: SortEnumType
  length: SortEnumType
  centroid: PointSortInput
  interiorPoint: PointSortInput
  pointOnSurface: PointSortInput
  dimension: SortEnumType
  boundary: GeometrySortInput
  boundaryDimension: SortEnumType
  envelope: GeometrySortInput
  envelopeInternal: EnvelopeSortInput
  isRectangle: SortEnumType
}

input GeometryFactorySortInput {
  precisionModel: PrecisionModelSortInput
  coordinateSequenceFactory: CoordinateSequenceFactorySortInput
  sRID: SortEnumType
}

input PrecisionModelSortInput {
  isFloating: SortEnumType
  maximumSignificantDigits: SortEnumType
  scale: SortEnumType
  precisionModelType: SortEnumType
}

input EnvelopeSortInput {
  isNull: SortEnumType
  width: SortEnumType
  height: SortEnumType
  diameter: SortEnumType
  minX: SortEnumType
  maxX: SortEnumType
  minY: SortEnumType
  maxY: SortEnumType
  area: SortEnumType
  minExtent: SortEnumType
  maxExtent: SortEnumType
  centre: CoordinateSortInput
}

input OrdinatesOperationFilterInput {
  eq: Ordinates
  neq: Ordinates
  in: [Ordinates!]
  nin: [Ordinates!]
}

input CoordinateSequenceFactoryFilterInput {
  and: [CoordinateSequenceFactoryFilterInput!]
  or: [CoordinateSequenceFactoryFilterInput!]
  ordinates: OrdinatesOperationFilterInput
}

input PrecisionModelsOperationFilterInput {
  eq: PrecisionModels
  neq: PrecisionModels
  in: [PrecisionModels!]
  nin: [PrecisionModels!]
}

input CoordinateSequenceFactorySortInput {
  ordinates: SortEnumType
}

type ListResponseBaseOfRouteDto {
  result(
    skip: Int
    take: Int
    where: RouteDtoFilterInput
    order: [RouteDtoSortInput!]
  ): RouteDtoCollectionSegment
  status: ResponseStatus!
}

input RouteFiltersInput {
  titleFilter: String
  driveStyles: [DriveStyle!]
  driveTypes: [DriveType!]
  driveLengths: [DriveLength!]
}

type ResponseBaseOfFollowRequestDto {
  result: FollowRequestDto
  status: ResponseStatus!
}

type ListResponseBaseOfGroupInvitationDto {
  result(
    skip: Int
    take: Int
    where: GroupInvitationDtoFilterInput
    order: [GroupInvitationDtoSortInput!]
  ): GroupInvitationDtoCollectionSegment
  status: ResponseStatus!
}

type ResponseBaseOfGroupInvitationDto {
  result: GroupInvitationDto
  status: ResponseStatus!
}

type ListResponseBaseOfGroupDto {
  result(
    skip: Int
    take: Int
    where: GroupDtoFilterInput
    order: [GroupDtoSortInput!]
  ): GroupDtoCollectionSegment
  status: ResponseStatus!
}

type ResponseBaseOfGroupDto {
  result: GroupDto
  status: ResponseStatus!
}

type ListResponseBaseOfGroupReviewDto {
  result(
    skip: Int
    take: Int
    where: GroupReviewDtoFilterInput
    order: [GroupReviewDtoSortInput!]
  ): GroupReviewDtoCollectionSegment
  status: ResponseStatus!
}

type ListResponseBaseOfGroupRouteDto {
  result(
    skip: Int
    take: Int
    where: GroupRouteDtoFilterInput
    order: [GroupRouteDtoSortInput!]
  ): GroupRouteDtoCollectionSegment
  status: ResponseStatus!
}

type ListResponseBaseOfNotificationDto {
  result(
    skip: Int
    take: Int
    where: NotificationDtoFilterInput
    order: [NotificationDtoSortInput!]
  ): NotificationDtoCollectionSegment
  status: ResponseStatus!
}

type ResponseBaseOfBoolean {
  result: Boolean!
  status: ResponseStatus!
}

type ListResponseBaseOfPhotoDto {
  result(
    skip: Int
    take: Int
    where: PhotoDtoFilterInput
    order: [PhotoDtoSortInput!]
  ): PhotoDtoCollectionSegment
  status: ResponseStatus!
}

type ResponseBaseOfInt32 {
  result: Int!
  status: ResponseStatus!
}

type ResponseBaseOfRouteDto {
  result: RouteDto
  status: ResponseStatus!
}

type ListResponseBaseOfRouteReviewDto {
  result(
    skip: Int
    take: Int
    where: RouteReviewDtoFilterInput
    order: [RouteReviewDtoSortInput!]
  ): RouteReviewDtoCollectionSegment
  status: ResponseStatus!
}

type ResponseBaseOfSavedRouteDto {
  result: SavedRouteDto
  status: ResponseStatus!
}

type ListResponseBaseOfSavedRouteDto {
  result(
    skip: Int
    take: Int
    where: SavedRouteDtoFilterInput
    order: [SavedRouteDtoSortInput!]
  ): SavedRouteDtoCollectionSegment
  status: ResponseStatus!
}

type ListResponseBaseOfUserFollowingDto {
  result(
    skip: Int
    take: Int
    where: UserFollowingDtoFilterInput
    order: [UserFollowingDtoSortInput!]
  ): UserFollowingDtoCollectionSegment
  status: ResponseStatus!
}

type ResponseBaseOfUserDto {
  result: UserDto
  status: ResponseStatus!
}

type ListResponseBaseOfVehicleDto {
  result(
    skip: Int
    take: Int
    where: VehicleDtoFilterInput
    order: [VehicleDtoSortInput!]
  ): VehicleDtoCollectionSegment
  status: ResponseStatus!
}

type ResponseBaseOfWayPointDto {
  result: WayPointDto
  status: ResponseStatus!
}

type ListResponseBaseOfWayPointDto {
  result(
    skip: Int
    take: Int
    where: WayPointDtoFilterInput
    order: [WayPointDtoSortInput!]
  ): WayPointDtoCollectionSegment
  status: ResponseStatus!
}

input GroupInvitationInput {
  invitedId: Int!
  groupId: Int!
}

input BatchGroupInvitationInput {
  invitedIds: [Int!]
  groupId: Int!
}

type ResponseBaseOfGroupMemerDto {
  result: GroupMemerDto
  status: ResponseStatus!
}

input GroupInput {
  id: Int
  coverImage: String
  title: String
  description: String
}

type ResponseBaseOfGroupReviewDto {
  result: GroupReviewDto
  status: ResponseStatus!
}

input GroupReviewInput {
  id: Int
  groupId: Int!
  text: String
  image: String
}

type ResponseBaseOfGroupRouteDto {
  result: GroupRouteDto
  status: ResponseStatus!
}

input GroupRouteInput {
  id: Int
  groupId: Int!
  routeId: Int!
}

type ResponseBaseOfPhotoDto {
  result: PhotoDto
  status: ResponseStatus!
}

input PhotoInput {
  id: Int
  url: String
  routeId: Int!
  location: Position
}

input RouteInput {
  id: Int
  driveType: DriveType!
  driveStyle: DriveStyle!
  isPrivateMode: Boolean!
  coverPhoto: String
  title: String
  description: String
  tags: [String]
}

"""
The `TimeSpan` scalar represents an ISO-8601 compliant duration type.
"""
scalar TimeSpan

type ResponseBaseOfRouteReviewDto {
  result: RouteReviewDto
  status: ResponseStatus!
}

input RouteReviewInput {
  id: Int
  routeId: Int!
  rate: Int!
  text: String
}

type ResponseBaseOfUserFollowingDto {
  result: UserFollowingDto
  status: ResponseStatus!
}

input UserInput {
  firstName: String
  lastName: String
  username: String
  country: String
  state: String
  city: String
  isPrivateMode: Boolean!
  useMetricSystem: Boolean!
  bio: String
  profileHeaderUrl: String
  profilePhotoUrl: String
}

type ResponseBaseOfResponseStatus {
  result: ResponseStatus!
  status: ResponseStatus!
}

input EmailInput {
  to: String
  subject: String
  plainTextContent: String
  htmlContent: String
}

type ResponseBaseOfVehicleDto {
  result: VehicleDto
  status: ResponseStatus!
}

input VehicleInput {
  id: Int
  year: Int!
  make: String
  model: String
}

"""
The `DateTime` scalar represents an ISO-8601 compliant date time type.
"""
scalar DateTime

enum NotificationType {
  FOLLOW
  UNFOLLOW
  FOLLOW_REQUEST
  ACCEPT_FOLLOW_REQUEST
  REJECT_FOLLOW_REQUEST
  CANCEL_FOLLOW_REQUEST
  INVITE_TO_GROUP
  ACCEPT_GROUP_INVITATION
  REJECT_GROUP_INVITATION
  NEW_ROUTE
}

enum DriveType {
  COASTAL
  MOUNTAINS
  COUNTRY_SIDE
  DESERT
  URBAN
}

enum DriveStyle {
  SPIRITED
  SCENIC
  GRAND_TOUR
}

enum DriveLength {
  SHORT
  MEDIUM
  DAY_TRIP
  GRAND_TOUR
}

enum RoadReportType {
  ROAD_CLOSURE
}

enum Dimension {
  POINT
  CURVE
  SURFACE
  DONTCARE
  TRUE
  FALSE
}

enum OgcGeometryType {
  POINT
  LINE_STRING
  POLYGON
  MULTI_POINT
  MULTI_LINE_STRING
  MULTI_POLYGON
  GEOMETRY_COLLECTION
  CIRCULAR_STRING
  COMPOUND_CURVE
  CURVE_POLYGON
  MULTI_CURVE
  MULTI_SURFACE
  CURVE
  SURFACE
  POLYHEDRAL_SURFACE
  TIN
}

enum Ordinates {
  NONE
  SPATIAL1
  SPATIAL2
  XY
  Z
  XYZ
  SPATIAL4
  SPATIAL5
  SPATIAL6
  SPATIAL7
  SPATIAL8
  SPATIAL9
  SPATIAL10
  SPATIAL11
  SPATIAL12
  SPATIAL13
  SPATIAL14
  SPATIAL15
  SPATIAL16
  ALL_SPATIAL_ORDINATES
  M
  XYM
  XYZM
  MEASURE2
  MEASURE3
  MEASURE4
  MEASURE5
  MEASURE6
  MEASURE7
  MEASURE8
  MEASURE9
  MEASURE10
  MEASURE11
  MEASURE12
  MEASURE13
  MEASURE14
  MEASURE15
  MEASURE16
  ALL_MEASURE_ORDINATES
  ALL_ORDINATES
}

enum PrecisionModels {
  FLOATING
  FLOATING_SINGLE
  FIXED
}

input RouteDtoFilterInput {
  and: [RouteDtoFilterInput!]
  or: [RouteDtoFilterInput!]
  route: RouteFilterInput
}

input RouteDtoSortInput {
  route: RouteSortInput
}

type RouteDtoCollectionSegment {
  items: [RouteDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input GroupInvitationDtoFilterInput {
  and: [GroupInvitationDtoFilterInput!]
  or: [GroupInvitationDtoFilterInput!]
  groupInvitation: GroupInvitationFilterInput
}

input GroupInvitationDtoSortInput {
  groupInvitation: GroupInvitationSortInput
}

type GroupInvitationDtoCollectionSegment {
  items: [GroupInvitationDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input GroupDtoFilterInput {
  and: [GroupDtoFilterInput!]
  or: [GroupDtoFilterInput!]
  group: GroupFilterInput
}

input GroupDtoSortInput {
  group: GroupSortInput
}

type GroupDtoCollectionSegment {
  items: [GroupDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input GroupReviewDtoFilterInput {
  and: [GroupReviewDtoFilterInput!]
  or: [GroupReviewDtoFilterInput!]
  groupReview: GroupReviewFilterInput
}

input GroupReviewDtoSortInput {
  groupReview: GroupReviewSortInput
}

type GroupReviewDtoCollectionSegment {
  items: [GroupReviewDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input GroupRouteDtoFilterInput {
  and: [GroupRouteDtoFilterInput!]
  or: [GroupRouteDtoFilterInput!]
  groupRoute: GroupRouteFilterInput
}

input GroupRouteDtoSortInput {
  groupRoute: GroupRouteSortInput
}

type GroupRouteDtoCollectionSegment {
  items: [GroupRouteDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input NotificationDtoFilterInput {
  and: [NotificationDtoFilterInput!]
  or: [NotificationDtoFilterInput!]
  notification: NotificationFilterInput
  followed: BooleanOperationFilterInput
  followRequested: BooleanOperationFilterInput
}

input NotificationDtoSortInput {
  notification: NotificationSortInput
  followed: SortEnumType
  followRequested: SortEnumType
}

type NotificationDtoCollectionSegment {
  items: [NotificationDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input PhotoDtoFilterInput {
  and: [PhotoDtoFilterInput!]
  or: [PhotoDtoFilterInput!]
  photo: PhotoFilterInput
}

input PhotoDtoSortInput {
  photo: PhotoSortInput
}

type PhotoDtoCollectionSegment {
  items: [PhotoDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input RouteReviewDtoFilterInput {
  and: [RouteReviewDtoFilterInput!]
  or: [RouteReviewDtoFilterInput!]
  routeReview: RouteReviewFilterInput
}

input RouteReviewDtoSortInput {
  routeReview: RouteReviewSortInput
}

type RouteReviewDtoCollectionSegment {
  items: [RouteReviewDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input SavedRouteDtoFilterInput {
  and: [SavedRouteDtoFilterInput!]
  or: [SavedRouteDtoFilterInput!]
  savedRoute: SavedRouteFilterInput
}

input SavedRouteDtoSortInput {
  savedRoute: SavedRouteSortInput
}

type SavedRouteDtoCollectionSegment {
  items: [SavedRouteDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input UserFollowingDtoFilterInput {
  and: [UserFollowingDtoFilterInput!]
  or: [UserFollowingDtoFilterInput!]
  userFollowing: UserFollowingFilterInput
}

input UserFollowingDtoSortInput {
  userFollowing: UserFollowingSortInput
}

type UserFollowingDtoCollectionSegment {
  items: [UserFollowingDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input VehicleDtoFilterInput {
  and: [VehicleDtoFilterInput!]
  or: [VehicleDtoFilterInput!]
  vehicle: VehicleFilterInput
}

input VehicleDtoSortInput {
  vehicle: VehicleSortInput
}

type VehicleDtoCollectionSegment {
  items: [VehicleDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

input WayPointDtoFilterInput {
  and: [WayPointDtoFilterInput!]
  or: [WayPointDtoFilterInput!]
  wayPoint: WayPointFilterInput
}

input WayPointDtoSortInput {
  wayPoint: WayPointSortInput
}

type WayPointDtoCollectionSegment {
  items: [WayPointDto]

  """
  Information to aid in pagination.
  """
  pageInfo: CollectionSegmentInfo!
  totalCount: Int!
}

type RouteDto {
  route: Route
}

type GroupInvitationDto {
  groupInvitation: GroupInvitation
}

type GroupDto {
  group: Group
}

type GroupReviewDto {
  groupReview: GroupReview
}

type GroupRouteDto {
  groupRoute: GroupRoute
}

type NotificationDto {
  notification: Notification
  followed: Boolean!
  followRequested: Boolean!
}

type PhotoDto {
  photo: Photo
}

type RouteReviewDto {
  routeReview: RouteReview
}

type SavedRouteDto {
  savedRoute: SavedRoute
}

type UserFollowingDto {
  userFollowing: UserFollowing
}

type VehicleDto {
  vehicle: Vehicle
}

type WayPointDto {
  wayPoint: WayPoint
}

type GroupMemerDto {
  groupMemmer: GroupMember
}

type UserDto {
  user: User
}

type FollowRequestDto {
  applicantUserId: Int!
  applicantUser: User
  requestedUserId: Int!
  requestedUser: User
  requestTime: DateTime!
  processedTime: DateTime
  notifications: [Notification]
  id: Int!
  isDeleted: Boolean!
}

enum ResponseStatus {
  IMAGE_UPLOAD_FAILED
  NOT_FOUND
  ALREADY_EXISTS
  REACHED_THE_LIMIT
  USER_NOT_FOUND
  AUTHENTICATION_FAILED
  SUCCESS
  EVENT_DOES_NOT_EXIST
  USER_NOT_INVITED
  EVENT_NOT_STARTED
  EVENT_ENDED
  EXTERNAL_EVENT_ERROR
  USER_HAS_NOT_JOINED
  NON_HOST_TRIED_TO_START
  NON_HOST_TRIED_TO_DELETE
  EVENT_NEEDS_AT_LEAST_ONE_HOST
  USER_ALREADY_JOINED
  USER_ALREADY_INVITED
  USER_CREATION_FAILED
  ALREADY_FOLLOWING
  NOT_FOLLOWING
  SELF_FOLLOWING_NOT_ALLOWED
  USER_IS_PRIVATE
  USER_IS_NOT_PRIVATE
  CATEGORY_NOT_FOUND
  GROUP_NEEDS_AT_LEAST_ONE_OWNER
  GROUP_DOES_NOT_EXIST
  NON_OWNER_TRIED_TO_DELETE
  NON_OWNER_TRIED_TO_RESTORE
  NON_OWNER_TRIED_TO_EDIT
  OWNER_CANNOT_LEAVE_GROUP
  USER_ALREADY_IS_CO_OWNER
  USER_IS_NOT_CO_OWNER
  INDELIBLE_WAY_POINT
  ROUTE_DOES_NOT_EXIST
  POST_NOT_FOUND
  COMMENT_NOT_FOUND
  NOT_ENOUGH_DATA
  OPERATION_FAILED
}

My codegen.yml config file:

overwrite: true
schema: 'schema.graphql'
documents: 'src/graphql'
generates:
  src/generated/graphql.tsx:
    plugins:
      - 'typescript'
      - 'typescript-operations'
      - 'typescript-react-query'

Expected behavior should generate graphql.ts

iamhaaamed avatar Dec 16 '21 05:12 iamhaaamed

I had a very similar issue with the following stacktrace:

 Found 1 error

  ✖ app/javascript/graphql/types.tsx
    TypeError: Cannot read property 'value' of undefined
        at generateQueryKey (~/application/node_modules/@graphql-codegen/typescript-react-query/index.js:29:53)
        at FetchFetcher.generateQueryHook (~/application/node_modules/@graphql-codegen/typescript-react-query/index.js:213:9)
        at ReactQueryVisitor.buildOperation (~/application/node_modules/@graphql-codegen/typescript-react-query/index.js:520:38)
        at ReactQueryVisitor.OperationDefinition (~/application/node_modules/@graphql-codegen/visitor-plugin-common/index.js:2542:33)
        at Object.visit (~/application/node_modules/graphql/language/visitor.js:197:21)
        at Object.oldVisit (~/application/node_modules/@graphql-codegen/plugin-helpers/index.js:517:20)
        at Object.plugin (~/application/node_modules/@graphql-codegen/typescript-react-query/index.js:571:41)
        at executePlugin (~/application/node_modules/@graphql-codegen/core/index.js:38:35)
        at async ~/application/node_modules/@graphql-codegen/core/index.js:167:24
        at async Promise.all (index 2)

This was down to me not having a name for a query operation that I was trying to make, I fixed by by changing

import gql from "graphql-tag";

export const thingieQuery = gql`
{
  thingies {
        id
        createdAt
  }
}`;

to:

import gql from "graphql-tag";

export const thingieQuery = gql`
query fetchThingies {
  thingies {
        id
        createdAt
  }
}`;

geoffwa avatar Feb 03 '22 04:02 geoffwa

Hi @geoffwa, @iamhaaamed,

You are right, the typescript-react-query does not support anonymous operations (it should). This is definitely a bug 🐞

We'll plan to do a fix.

In the meantime, the solution is to use named operations.

Thank you!

charlypoly avatar Mar 17 '22 13:03 charlypoly

I also had a similar issue with the following stacktrace: √ Parse configuration

Generate outputs > Generate ./src/graphql.ts √ Load GraphQL schemas √ Load GraphQL documents × Generate → Cannot read properties of undefined (reading 'value')

Found 1 error

✖ ./src/graphql.ts TypeError: Cannot read properties of undefined (reading 'value')

I solved it by change my GraphQL Documents

FROM THIS ONE:

query {
  me {
    data {
      id
      location
      isVerified
      accountType
      role
      profilePicture
      name
      email
      createdAt
      updatedAt
    }
    error
  }
}

TO:

query GetMe {
  me {
    data {
      id
      location
      isVerified
      accountType
      role
      profilePicture
      name
      email
      createdAt
      updatedAt
    }
    error
  }
}

In conclusion, you have to give the query or mutation name on all of your .graphql files, so that the typescript-react-query plugin can create queries, and mutations based on that name

  √ Parse configuration
  √ Generate outputs
Done in 1.16s.

NovqiGarrix avatar Jun 26 '22 10:06 NovqiGarrix

I also had a similar issue with the following stacktrace: √ Parse configuration

Generate outputs

Generate ./src/graphql.ts √ Load GraphQL schemas √ Load GraphQL documents × Generate → Cannot read properties of undefined (reading 'value')

Found 1 error

✖ ./src/graphql.ts TypeError: Cannot read properties of undefined (reading 'value')

I solved it by change my GraphQL Documents

FROM THIS ONE:

query {
  me {
    data {
      id
      location
      isVerified
      accountType
      role
      profilePicture
      name
      email
      createdAt
      updatedAt
    }
    error
  }
}

TO:

query GetMe {
  me {
    data {
      id
      location
      isVerified
      accountType
      role
      profilePicture
      name
      email
      createdAt
      updatedAt
    }
    error
  }
}

In conclusion, you have to give the query or mutation name on all of your .graphql files, so that the typescript-react-query plugin can create queries, and mutations based on that name

  √ Parse configuration
  √ Generate outputs
Done in 1.16s.

soo mush thanks

hassanrbh avatar Aug 21 '22 12:08 hassanrbh