maoosi/prisma-appsync

AppSync producing empty GraphQL blocks in schema

genehynson opened this issue · 1 comments

Discussed in #151

When trying to deploy my Prisma-AppSync project AWS complains that the GraphQL schema is invalid. I used @graphql-validate/cli on the schema and it errored saying with the following message: GraphQLError: Syntax Error: Expected Name, found "}". And pointed to this block in my schema:

    input UserActivityWhereUniqueInput {
        
    }

It does seem like this generated fragment is missing some content.

Here's the related part of my schema.prisma:

model User {
  id                             Int                      @id @default(autoincrement())
  username                       String                   @unique @db.VarChar(255)
  password                       String                   @db.VarChar(255)
  firstName                      String                   @db.VarChar(255)
  lastName                       String                   @db.VarChar(255)
  age                            Int?
  gender                         String?                  @db.VarChar(255)
  phoneNumber                    String?                  @db.VarChar(255)
  photo                          Bytes?
  bio                            String?                  @db.VarChar(255)
  address                        String?                  @db.VarChar(255)
  lat                            Float?
  lon                            Float?
  goal                           String?                  @db.VarChar(255)
  memberSince                    DateTime?
  createdAt                      DateTime                 @default(now())
  updatedAt                      DateTime                 @updatedAt
  createdBy                      Int?
  updatedBy                      Int?
  role                           role                     @default(PARTICIPANT)
  subscription                   subscription             @default(FREE)
  createdByUser                  User?                    @relation("createdBy", fields: [createdBy], references: [id])
  createdUsers                   User[]                   @relation("createdBy")
  updatedByUser                  User?                    @relation("updatedBy", fields: [updatedBy], references: [id])
  updatedUsers                   User[]                   @relation("updatedBy")
  createdUserActivities          UserActivity[]           @relation("createdBy")
  updatedUserActivities          UserActivity[]           @relation("updatedBy")
  UserActivity                   UserActivity[]           @relation("userID")
}

model UserActivity {
  userID             Int
  activityID         Int
  experienceLevelID  Int
  activityPositionID Int
  hasCoached         Boolean
  interest           Int
  distance           Int
  createdAt          DateTime         @default(now())
  createdBy          Int
  updatedAt          DateTime         @updatedAt
  updatedBy          Int
  activity           Activity         @relation("activityID", fields: [activityID], references: [id])
  createdByUser      User             @relation("createdBy", fields: [createdBy], references: [id])
  updatedByUser      User             @relation("updatedBy", fields: [updatedBy], references: [id])
  user               User             @relation("userID", fields: [userID], references: [id])

  @@id([userID, activityID, activityPositionID])
}
maoosi commented

Thanks @genehynson! Based on your Prisma Schema, the issue seems related to the use of a custom @@id attribute in your UserActivity model (similar to #149).

Replacing it with a classic id Int @id @default(autoincrement()) should temporarily solve the issue, until we release a proper fix for Prisma-AppSync.

Closing this issue in favour of #149. Will try ship a fix with the next release!