Pārlūkot izejas kodu

added prisma schema and started mutations to enter data into database

Tomi Cvetic 5 gadi atpakaļ
vecāks
revīzija
c7337859f3

+ 10 - 0
backend/.graphqlconfig.yml

@@ -0,0 +1,10 @@
+projects:
+  app:
+    schemaPath: "schema.graphql"
+    extensions:
+      endpoints:
+        default: "http://localhost:4444"
+  prisma:
+    schemaPath: "database/generated/prisma.graphql"
+    extensions:
+      prisma: prisma.yml

+ 9 - 9
backend/database/generated/prisma-client/index.d.ts

@@ -1477,9 +1477,9 @@ export interface ProjectWhereInput {
   description_not_starts_with?: String;
   description_ends_with?: String;
   description_not_ends_with?: String;
-  images_every?: FileWhereInput;
-  images_some?: FileWhereInput;
-  images_none?: FileWhereInput;
+  files_every?: FileWhereInput;
+  files_some?: FileWhereInput;
+  files_none?: FileWhereInput;
   versions_every?: ProjectVersionWhereInput;
   versions_some?: ProjectVersionWhereInput;
   versions_none?: ProjectVersionWhereInput;
@@ -2550,7 +2550,7 @@ export interface ProjectCreateWithoutVersionsInput {
   name: String;
   abbreviation: String;
   description?: String;
-  images?: FileCreateManyInput;
+  files?: FileCreateManyInput;
 }
 
 export interface FileCreateManyInput {
@@ -2826,7 +2826,7 @@ export interface ProjectUpdateWithoutVersionsDataInput {
   name?: String;
   abbreviation?: String;
   description?: String;
-  images?: FileUpdateManyInput;
+  files?: FileUpdateManyInput;
 }
 
 export interface FileUpdateManyInput {
@@ -4511,7 +4511,7 @@ export interface ProjectCreateInput {
   name: String;
   abbreviation: String;
   description?: String;
-  images?: FileCreateManyInput;
+  files?: FileCreateManyInput;
   versions?: ProjectVersionCreateManyWithoutProjectInput;
 }
 
@@ -4532,7 +4532,7 @@ export interface ProjectUpdateInput {
   name?: String;
   abbreviation?: String;
   description?: String;
-  images?: FileUpdateManyInput;
+  files?: FileUpdateManyInput;
   versions?: ProjectVersionUpdateManyWithoutProjectInput;
 }
 
@@ -5048,7 +5048,7 @@ export interface ProjectPromise extends Promise<Project>, Fragmentable {
   name: () => Promise<String>;
   abbreviation: () => Promise<String>;
   description: () => Promise<String>;
-  images: <T = FragmentableArray<File>>(
+  files: <T = FragmentableArray<File>>(
     args?: {
       where?: FileWhereInput;
       orderBy?: FileOrderByInput;
@@ -5079,7 +5079,7 @@ export interface ProjectSubscription
   name: () => Promise<AsyncIterator<String>>;
   abbreviation: () => Promise<AsyncIterator<String>>;
   description: () => Promise<AsyncIterator<String>>;
-  images: <T = Promise<AsyncIterator<FileSubscription>>>(
+  files: <T = Promise<AsyncIterator<FileSubscription>>>(
     args?: {
       where?: FileWhereInput;
       orderBy?: FileOrderByInput;

+ 8 - 8
backend/database/generated/prisma-client/prisma-schema.js

@@ -3349,7 +3349,7 @@ type Project {
   name: String!
   abbreviation: String!
   description: String
-  images(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File!]
+  files(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File!]
   versions(where: ProjectVersionWhereInput, orderBy: ProjectVersionOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [ProjectVersion!]
 }
 
@@ -3363,7 +3363,7 @@ input ProjectCreateInput {
   name: String!
   abbreviation: String!
   description: String
-  images: FileCreateManyInput
+  files: FileCreateManyInput
   versions: ProjectVersionCreateManyWithoutProjectInput
 }
 
@@ -3376,7 +3376,7 @@ input ProjectCreateWithoutVersionsInput {
   name: String!
   abbreviation: String!
   description: String
-  images: FileCreateManyInput
+  files: FileCreateManyInput
 }
 
 type ProjectEdge {
@@ -3428,7 +3428,7 @@ input ProjectUpdateInput {
   name: String
   abbreviation: String
   description: String
-  images: FileUpdateManyInput
+  files: FileUpdateManyInput
   versions: ProjectVersionUpdateManyWithoutProjectInput
 }
 
@@ -3449,7 +3449,7 @@ input ProjectUpdateWithoutVersionsDataInput {
   name: String
   abbreviation: String
   description: String
-  images: FileUpdateManyInput
+  files: FileUpdateManyInput
 }
 
 input ProjectUpsertWithoutVersionsInput {
@@ -3764,9 +3764,9 @@ input ProjectWhereInput {
   description_not_starts_with: String
   description_ends_with: String
   description_not_ends_with: String
-  images_every: FileWhereInput
-  images_some: FileWhereInput
-  images_none: FileWhereInput
+  files_every: FileWhereInput
+  files_some: FileWhereInput
+  files_none: FileWhereInput
   versions_every: ProjectVersionWhereInput
   versions_some: ProjectVersionWhereInput
   versions_none: ProjectVersionWhereInput

+ 8415 - 0
backend/database/generated/prisma.graphql

@@ -0,0 +1,8415 @@
+# source: http://localhost:4466
+# timestamp: Mon Apr 22 2019 07:21:06 GMT+0200 (Central European Summer Time)
+
+type AggregateCharacterization {
+  count: Int!
+}
+
+type AggregateComment {
+  count: Int!
+}
+
+type AggregateDUT {
+  count: Int!
+}
+
+type AggregateEvent {
+  count: Int!
+}
+
+type AggregateFile {
+  count: Int!
+}
+
+type AggregateInstrument {
+  count: Int!
+}
+
+type AggregateInstrumentCommand {
+  count: Int!
+}
+
+type AggregateInstrumentInstance {
+  count: Int!
+}
+
+type AggregateInstrumentParameter {
+  count: Int!
+}
+
+type AggregateInstrumentSubsystem {
+  count: Int!
+}
+
+type AggregateMeasurement {
+  count: Int!
+}
+
+type AggregateMeasurementRun {
+  count: Int!
+}
+
+type AggregateMeta {
+  count: Int!
+}
+
+type AggregateProject {
+  count: Int!
+}
+
+type AggregateProjectVersion {
+  count: Int!
+}
+
+type AggregateSetup {
+  count: Int!
+}
+
+type AggregateSetupHardware {
+  count: Int!
+}
+
+type AggregateSetupHardwareInstance {
+  count: Int!
+}
+
+type AggregateUser {
+  count: Int!
+}
+
+type BatchPayload {
+  """The number of nodes that have been affected by the Batch operation."""
+  count: Long!
+}
+
+type Characterization implements Node {
+  id: ID!
+  name: String!
+  projectVersion: ProjectVersion!
+  measurementRuns(where: MeasurementRunWhereInput, orderBy: MeasurementRunOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [MeasurementRun!]
+}
+
+"""A connection to a list of items."""
+type CharacterizationConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [CharacterizationEdge]!
+  aggregate: AggregateCharacterization!
+}
+
+input CharacterizationCreateInput {
+  name: String!
+  projectVersion: ProjectVersionCreateOneInput!
+  measurementRuns: MeasurementRunCreateManyInput
+}
+
+"""An edge in a connection."""
+type CharacterizationEdge {
+  """The item at the end of the edge."""
+  node: Characterization!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum CharacterizationOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type CharacterizationPreviousValues {
+  id: ID!
+  name: String!
+}
+
+type CharacterizationSubscriptionPayload {
+  mutation: MutationType!
+  node: Characterization
+  updatedFields: [String!]
+  previousValues: CharacterizationPreviousValues
+}
+
+input CharacterizationSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [CharacterizationSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [CharacterizationSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [CharacterizationSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: CharacterizationWhereInput
+}
+
+input CharacterizationUpdateInput {
+  name: String
+  projectVersion: ProjectVersionUpdateOneRequiredInput
+  measurementRuns: MeasurementRunUpdateManyInput
+}
+
+input CharacterizationUpdateManyMutationInput {
+  name: String
+}
+
+input CharacterizationWhereInput {
+  """Logical AND on all given filters."""
+  AND: [CharacterizationWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [CharacterizationWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [CharacterizationWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  projectVersion: ProjectVersionWhereInput
+  measurementRuns_every: MeasurementRunWhereInput
+  measurementRuns_some: MeasurementRunWhereInput
+  measurementRuns_none: MeasurementRunWhereInput
+}
+
+input CharacterizationWhereUniqueInput {
+  id: ID
+}
+
+type Comment implements Node {
+  id: ID!
+  text: String
+  createdAt: DateTime!
+  previousVersion: Comment
+}
+
+"""A connection to a list of items."""
+type CommentConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [CommentEdge]!
+  aggregate: AggregateComment!
+}
+
+input CommentCreateInput {
+  text: String
+  previousVersion: CommentCreateOneInput
+}
+
+input CommentCreateManyInput {
+  create: [CommentCreateInput!]
+  connect: [CommentWhereUniqueInput!]
+}
+
+input CommentCreateOneInput {
+  create: CommentCreateInput
+  connect: CommentWhereUniqueInput
+}
+
+"""An edge in a connection."""
+type CommentEdge {
+  """The item at the end of the edge."""
+  node: Comment!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum CommentOrderByInput {
+  id_ASC
+  id_DESC
+  text_ASC
+  text_DESC
+  createdAt_ASC
+  createdAt_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+}
+
+type CommentPreviousValues {
+  id: ID!
+  text: String
+  createdAt: DateTime!
+}
+
+input CommentScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [CommentScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [CommentScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [CommentScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  text: String
+
+  """All values that are not equal to given value."""
+  text_not: String
+
+  """All values that are contained in given list."""
+  text_in: [String!]
+
+  """All values that are not contained in given list."""
+  text_not_in: [String!]
+
+  """All values less than the given value."""
+  text_lt: String
+
+  """All values less than or equal the given value."""
+  text_lte: String
+
+  """All values greater than the given value."""
+  text_gt: String
+
+  """All values greater than or equal the given value."""
+  text_gte: String
+
+  """All values containing the given string."""
+  text_contains: String
+
+  """All values not containing the given string."""
+  text_not_contains: String
+
+  """All values starting with the given string."""
+  text_starts_with: String
+
+  """All values not starting with the given string."""
+  text_not_starts_with: String
+
+  """All values ending with the given string."""
+  text_ends_with: String
+
+  """All values not ending with the given string."""
+  text_not_ends_with: String
+  createdAt: DateTime
+
+  """All values that are not equal to given value."""
+  createdAt_not: DateTime
+
+  """All values that are contained in given list."""
+  createdAt_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  createdAt_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  createdAt_lt: DateTime
+
+  """All values less than or equal the given value."""
+  createdAt_lte: DateTime
+
+  """All values greater than the given value."""
+  createdAt_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  createdAt_gte: DateTime
+}
+
+type CommentSubscriptionPayload {
+  mutation: MutationType!
+  node: Comment
+  updatedFields: [String!]
+  previousValues: CommentPreviousValues
+}
+
+input CommentSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [CommentSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [CommentSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [CommentSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: CommentWhereInput
+}
+
+input CommentUpdateDataInput {
+  text: String
+  previousVersion: CommentUpdateOneInput
+}
+
+input CommentUpdateInput {
+  text: String
+  previousVersion: CommentUpdateOneInput
+}
+
+input CommentUpdateManyDataInput {
+  text: String
+}
+
+input CommentUpdateManyInput {
+  create: [CommentCreateInput!]
+  connect: [CommentWhereUniqueInput!]
+  set: [CommentWhereUniqueInput!]
+  disconnect: [CommentWhereUniqueInput!]
+  delete: [CommentWhereUniqueInput!]
+  update: [CommentUpdateWithWhereUniqueNestedInput!]
+  updateMany: [CommentUpdateManyWithWhereNestedInput!]
+  deleteMany: [CommentScalarWhereInput!]
+  upsert: [CommentUpsertWithWhereUniqueNestedInput!]
+}
+
+input CommentUpdateManyMutationInput {
+  text: String
+}
+
+input CommentUpdateManyWithWhereNestedInput {
+  where: CommentScalarWhereInput!
+  data: CommentUpdateManyDataInput!
+}
+
+input CommentUpdateOneInput {
+  create: CommentCreateInput
+  connect: CommentWhereUniqueInput
+  disconnect: Boolean
+  delete: Boolean
+  update: CommentUpdateDataInput
+  upsert: CommentUpsertNestedInput
+}
+
+input CommentUpdateWithWhereUniqueNestedInput {
+  where: CommentWhereUniqueInput!
+  data: CommentUpdateDataInput!
+}
+
+input CommentUpsertNestedInput {
+  update: CommentUpdateDataInput!
+  create: CommentCreateInput!
+}
+
+input CommentUpsertWithWhereUniqueNestedInput {
+  where: CommentWhereUniqueInput!
+  update: CommentUpdateDataInput!
+  create: CommentCreateInput!
+}
+
+input CommentWhereInput {
+  """Logical AND on all given filters."""
+  AND: [CommentWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [CommentWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [CommentWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  text: String
+
+  """All values that are not equal to given value."""
+  text_not: String
+
+  """All values that are contained in given list."""
+  text_in: [String!]
+
+  """All values that are not contained in given list."""
+  text_not_in: [String!]
+
+  """All values less than the given value."""
+  text_lt: String
+
+  """All values less than or equal the given value."""
+  text_lte: String
+
+  """All values greater than the given value."""
+  text_gt: String
+
+  """All values greater than or equal the given value."""
+  text_gte: String
+
+  """All values containing the given string."""
+  text_contains: String
+
+  """All values not containing the given string."""
+  text_not_contains: String
+
+  """All values starting with the given string."""
+  text_starts_with: String
+
+  """All values not starting with the given string."""
+  text_not_starts_with: String
+
+  """All values ending with the given string."""
+  text_ends_with: String
+
+  """All values not ending with the given string."""
+  text_not_ends_with: String
+  createdAt: DateTime
+
+  """All values that are not equal to given value."""
+  createdAt_not: DateTime
+
+  """All values that are contained in given list."""
+  createdAt_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  createdAt_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  createdAt_lt: DateTime
+
+  """All values less than or equal the given value."""
+  createdAt_lte: DateTime
+
+  """All values greater than the given value."""
+  createdAt_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  createdAt_gte: DateTime
+  previousVersion: CommentWhereInput
+}
+
+input CommentWhereUniqueInput {
+  id: ID
+}
+
+scalar DateTime
+
+type DUT implements Node {
+  id: ID!
+  name: String!
+  description: String
+  project: ProjectVersion!
+  modifications: [String!]!
+}
+
+"""A connection to a list of items."""
+type DUTConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [DUTEdge]!
+  aggregate: AggregateDUT!
+}
+
+input DUTCreateInput {
+  name: String!
+  description: String
+  modifications: DUTCreatemodificationsInput
+  project: ProjectVersionCreateOneInput!
+}
+
+input DUTCreatemodificationsInput {
+  set: [String!]
+}
+
+"""An edge in a connection."""
+type DUTEdge {
+  """The item at the end of the edge."""
+  node: DUT!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum DUTOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type DUTPreviousValues {
+  id: ID!
+  name: String!
+  description: String
+  modifications: [String!]!
+}
+
+type DUTSubscriptionPayload {
+  mutation: MutationType!
+  node: DUT
+  updatedFields: [String!]
+  previousValues: DUTPreviousValues
+}
+
+input DUTSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [DUTSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [DUTSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [DUTSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: DUTWhereInput
+}
+
+input DUTUpdateInput {
+  name: String
+  description: String
+  modifications: DUTUpdatemodificationsInput
+  project: ProjectVersionUpdateOneRequiredInput
+}
+
+input DUTUpdateManyMutationInput {
+  name: String
+  description: String
+  modifications: DUTUpdatemodificationsInput
+}
+
+input DUTUpdatemodificationsInput {
+  set: [String!]
+}
+
+input DUTWhereInput {
+  """Logical AND on all given filters."""
+  AND: [DUTWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [DUTWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [DUTWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  project: ProjectVersionWhereInput
+}
+
+input DUTWhereUniqueInput {
+  id: ID
+}
+
+type Event implements Node {
+  id: ID!
+  json: String!
+  when: DateTime!
+}
+
+"""A connection to a list of items."""
+type EventConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [EventEdge]!
+  aggregate: AggregateEvent!
+}
+
+input EventCreateInput {
+  json: String!
+  when: DateTime!
+}
+
+input EventCreateManyInput {
+  create: [EventCreateInput!]
+  connect: [EventWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type EventEdge {
+  """The item at the end of the edge."""
+  node: Event!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum EventOrderByInput {
+  id_ASC
+  id_DESC
+  json_ASC
+  json_DESC
+  when_ASC
+  when_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type EventPreviousValues {
+  id: ID!
+  json: String!
+  when: DateTime!
+}
+
+input EventScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [EventScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [EventScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [EventScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  json: String
+
+  """All values that are not equal to given value."""
+  json_not: String
+
+  """All values that are contained in given list."""
+  json_in: [String!]
+
+  """All values that are not contained in given list."""
+  json_not_in: [String!]
+
+  """All values less than the given value."""
+  json_lt: String
+
+  """All values less than or equal the given value."""
+  json_lte: String
+
+  """All values greater than the given value."""
+  json_gt: String
+
+  """All values greater than or equal the given value."""
+  json_gte: String
+
+  """All values containing the given string."""
+  json_contains: String
+
+  """All values not containing the given string."""
+  json_not_contains: String
+
+  """All values starting with the given string."""
+  json_starts_with: String
+
+  """All values not starting with the given string."""
+  json_not_starts_with: String
+
+  """All values ending with the given string."""
+  json_ends_with: String
+
+  """All values not ending with the given string."""
+  json_not_ends_with: String
+  when: DateTime
+
+  """All values that are not equal to given value."""
+  when_not: DateTime
+
+  """All values that are contained in given list."""
+  when_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  when_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  when_lt: DateTime
+
+  """All values less than or equal the given value."""
+  when_lte: DateTime
+
+  """All values greater than the given value."""
+  when_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  when_gte: DateTime
+}
+
+type EventSubscriptionPayload {
+  mutation: MutationType!
+  node: Event
+  updatedFields: [String!]
+  previousValues: EventPreviousValues
+}
+
+input EventSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [EventSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [EventSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [EventSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: EventWhereInput
+}
+
+input EventUpdateDataInput {
+  json: String
+  when: DateTime
+}
+
+input EventUpdateInput {
+  json: String
+  when: DateTime
+}
+
+input EventUpdateManyDataInput {
+  json: String
+  when: DateTime
+}
+
+input EventUpdateManyInput {
+  create: [EventCreateInput!]
+  connect: [EventWhereUniqueInput!]
+  set: [EventWhereUniqueInput!]
+  disconnect: [EventWhereUniqueInput!]
+  delete: [EventWhereUniqueInput!]
+  update: [EventUpdateWithWhereUniqueNestedInput!]
+  updateMany: [EventUpdateManyWithWhereNestedInput!]
+  deleteMany: [EventScalarWhereInput!]
+  upsert: [EventUpsertWithWhereUniqueNestedInput!]
+}
+
+input EventUpdateManyMutationInput {
+  json: String
+  when: DateTime
+}
+
+input EventUpdateManyWithWhereNestedInput {
+  where: EventScalarWhereInput!
+  data: EventUpdateManyDataInput!
+}
+
+input EventUpdateWithWhereUniqueNestedInput {
+  where: EventWhereUniqueInput!
+  data: EventUpdateDataInput!
+}
+
+input EventUpsertWithWhereUniqueNestedInput {
+  where: EventWhereUniqueInput!
+  update: EventUpdateDataInput!
+  create: EventCreateInput!
+}
+
+input EventWhereInput {
+  """Logical AND on all given filters."""
+  AND: [EventWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [EventWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [EventWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  json: String
+
+  """All values that are not equal to given value."""
+  json_not: String
+
+  """All values that are contained in given list."""
+  json_in: [String!]
+
+  """All values that are not contained in given list."""
+  json_not_in: [String!]
+
+  """All values less than the given value."""
+  json_lt: String
+
+  """All values less than or equal the given value."""
+  json_lte: String
+
+  """All values greater than the given value."""
+  json_gt: String
+
+  """All values greater than or equal the given value."""
+  json_gte: String
+
+  """All values containing the given string."""
+  json_contains: String
+
+  """All values not containing the given string."""
+  json_not_contains: String
+
+  """All values starting with the given string."""
+  json_starts_with: String
+
+  """All values not starting with the given string."""
+  json_not_starts_with: String
+
+  """All values ending with the given string."""
+  json_ends_with: String
+
+  """All values not ending with the given string."""
+  json_not_ends_with: String
+  when: DateTime
+
+  """All values that are not equal to given value."""
+  when_not: DateTime
+
+  """All values that are contained in given list."""
+  when_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  when_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  when_lt: DateTime
+
+  """All values less than or equal the given value."""
+  when_lte: DateTime
+
+  """All values greater than the given value."""
+  when_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  when_gte: DateTime
+}
+
+input EventWhereUniqueInput {
+  id: ID
+}
+
+type File implements Node {
+  id: ID!
+  path: String!
+  name: String
+  description: String
+  filename: String!
+  mimetype: String!
+  size: Int!
+}
+
+"""A connection to a list of items."""
+type FileConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [FileEdge]!
+  aggregate: AggregateFile!
+}
+
+input FileCreateInput {
+  path: String!
+  name: String
+  description: String
+  filename: String!
+  mimetype: String!
+  size: Int!
+}
+
+input FileCreateManyInput {
+  create: [FileCreateInput!]
+  connect: [FileWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type FileEdge {
+  """The item at the end of the edge."""
+  node: File!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum FileOrderByInput {
+  id_ASC
+  id_DESC
+  path_ASC
+  path_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  filename_ASC
+  filename_DESC
+  mimetype_ASC
+  mimetype_DESC
+  size_ASC
+  size_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type FilePreviousValues {
+  id: ID!
+  path: String!
+  name: String
+  description: String
+  filename: String!
+  mimetype: String!
+  size: Int!
+}
+
+input FileScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [FileScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [FileScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [FileScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  path: String
+
+  """All values that are not equal to given value."""
+  path_not: String
+
+  """All values that are contained in given list."""
+  path_in: [String!]
+
+  """All values that are not contained in given list."""
+  path_not_in: [String!]
+
+  """All values less than the given value."""
+  path_lt: String
+
+  """All values less than or equal the given value."""
+  path_lte: String
+
+  """All values greater than the given value."""
+  path_gt: String
+
+  """All values greater than or equal the given value."""
+  path_gte: String
+
+  """All values containing the given string."""
+  path_contains: String
+
+  """All values not containing the given string."""
+  path_not_contains: String
+
+  """All values starting with the given string."""
+  path_starts_with: String
+
+  """All values not starting with the given string."""
+  path_not_starts_with: String
+
+  """All values ending with the given string."""
+  path_ends_with: String
+
+  """All values not ending with the given string."""
+  path_not_ends_with: String
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  filename: String
+
+  """All values that are not equal to given value."""
+  filename_not: String
+
+  """All values that are contained in given list."""
+  filename_in: [String!]
+
+  """All values that are not contained in given list."""
+  filename_not_in: [String!]
+
+  """All values less than the given value."""
+  filename_lt: String
+
+  """All values less than or equal the given value."""
+  filename_lte: String
+
+  """All values greater than the given value."""
+  filename_gt: String
+
+  """All values greater than or equal the given value."""
+  filename_gte: String
+
+  """All values containing the given string."""
+  filename_contains: String
+
+  """All values not containing the given string."""
+  filename_not_contains: String
+
+  """All values starting with the given string."""
+  filename_starts_with: String
+
+  """All values not starting with the given string."""
+  filename_not_starts_with: String
+
+  """All values ending with the given string."""
+  filename_ends_with: String
+
+  """All values not ending with the given string."""
+  filename_not_ends_with: String
+  mimetype: String
+
+  """All values that are not equal to given value."""
+  mimetype_not: String
+
+  """All values that are contained in given list."""
+  mimetype_in: [String!]
+
+  """All values that are not contained in given list."""
+  mimetype_not_in: [String!]
+
+  """All values less than the given value."""
+  mimetype_lt: String
+
+  """All values less than or equal the given value."""
+  mimetype_lte: String
+
+  """All values greater than the given value."""
+  mimetype_gt: String
+
+  """All values greater than or equal the given value."""
+  mimetype_gte: String
+
+  """All values containing the given string."""
+  mimetype_contains: String
+
+  """All values not containing the given string."""
+  mimetype_not_contains: String
+
+  """All values starting with the given string."""
+  mimetype_starts_with: String
+
+  """All values not starting with the given string."""
+  mimetype_not_starts_with: String
+
+  """All values ending with the given string."""
+  mimetype_ends_with: String
+
+  """All values not ending with the given string."""
+  mimetype_not_ends_with: String
+  size: Int
+
+  """All values that are not equal to given value."""
+  size_not: Int
+
+  """All values that are contained in given list."""
+  size_in: [Int!]
+
+  """All values that are not contained in given list."""
+  size_not_in: [Int!]
+
+  """All values less than the given value."""
+  size_lt: Int
+
+  """All values less than or equal the given value."""
+  size_lte: Int
+
+  """All values greater than the given value."""
+  size_gt: Int
+
+  """All values greater than or equal the given value."""
+  size_gte: Int
+}
+
+type FileSubscriptionPayload {
+  mutation: MutationType!
+  node: File
+  updatedFields: [String!]
+  previousValues: FilePreviousValues
+}
+
+input FileSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [FileSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [FileSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [FileSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: FileWhereInput
+}
+
+input FileUpdateDataInput {
+  path: String
+  name: String
+  description: String
+  filename: String
+  mimetype: String
+  size: Int
+}
+
+input FileUpdateInput {
+  path: String
+  name: String
+  description: String
+  filename: String
+  mimetype: String
+  size: Int
+}
+
+input FileUpdateManyDataInput {
+  path: String
+  name: String
+  description: String
+  filename: String
+  mimetype: String
+  size: Int
+}
+
+input FileUpdateManyInput {
+  create: [FileCreateInput!]
+  connect: [FileWhereUniqueInput!]
+  set: [FileWhereUniqueInput!]
+  disconnect: [FileWhereUniqueInput!]
+  delete: [FileWhereUniqueInput!]
+  update: [FileUpdateWithWhereUniqueNestedInput!]
+  updateMany: [FileUpdateManyWithWhereNestedInput!]
+  deleteMany: [FileScalarWhereInput!]
+  upsert: [FileUpsertWithWhereUniqueNestedInput!]
+}
+
+input FileUpdateManyMutationInput {
+  path: String
+  name: String
+  description: String
+  filename: String
+  mimetype: String
+  size: Int
+}
+
+input FileUpdateManyWithWhereNestedInput {
+  where: FileScalarWhereInput!
+  data: FileUpdateManyDataInput!
+}
+
+input FileUpdateWithWhereUniqueNestedInput {
+  where: FileWhereUniqueInput!
+  data: FileUpdateDataInput!
+}
+
+input FileUpsertWithWhereUniqueNestedInput {
+  where: FileWhereUniqueInput!
+  update: FileUpdateDataInput!
+  create: FileCreateInput!
+}
+
+input FileWhereInput {
+  """Logical AND on all given filters."""
+  AND: [FileWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [FileWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [FileWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  path: String
+
+  """All values that are not equal to given value."""
+  path_not: String
+
+  """All values that are contained in given list."""
+  path_in: [String!]
+
+  """All values that are not contained in given list."""
+  path_not_in: [String!]
+
+  """All values less than the given value."""
+  path_lt: String
+
+  """All values less than or equal the given value."""
+  path_lte: String
+
+  """All values greater than the given value."""
+  path_gt: String
+
+  """All values greater than or equal the given value."""
+  path_gte: String
+
+  """All values containing the given string."""
+  path_contains: String
+
+  """All values not containing the given string."""
+  path_not_contains: String
+
+  """All values starting with the given string."""
+  path_starts_with: String
+
+  """All values not starting with the given string."""
+  path_not_starts_with: String
+
+  """All values ending with the given string."""
+  path_ends_with: String
+
+  """All values not ending with the given string."""
+  path_not_ends_with: String
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  filename: String
+
+  """All values that are not equal to given value."""
+  filename_not: String
+
+  """All values that are contained in given list."""
+  filename_in: [String!]
+
+  """All values that are not contained in given list."""
+  filename_not_in: [String!]
+
+  """All values less than the given value."""
+  filename_lt: String
+
+  """All values less than or equal the given value."""
+  filename_lte: String
+
+  """All values greater than the given value."""
+  filename_gt: String
+
+  """All values greater than or equal the given value."""
+  filename_gte: String
+
+  """All values containing the given string."""
+  filename_contains: String
+
+  """All values not containing the given string."""
+  filename_not_contains: String
+
+  """All values starting with the given string."""
+  filename_starts_with: String
+
+  """All values not starting with the given string."""
+  filename_not_starts_with: String
+
+  """All values ending with the given string."""
+  filename_ends_with: String
+
+  """All values not ending with the given string."""
+  filename_not_ends_with: String
+  mimetype: String
+
+  """All values that are not equal to given value."""
+  mimetype_not: String
+
+  """All values that are contained in given list."""
+  mimetype_in: [String!]
+
+  """All values that are not contained in given list."""
+  mimetype_not_in: [String!]
+
+  """All values less than the given value."""
+  mimetype_lt: String
+
+  """All values less than or equal the given value."""
+  mimetype_lte: String
+
+  """All values greater than the given value."""
+  mimetype_gt: String
+
+  """All values greater than or equal the given value."""
+  mimetype_gte: String
+
+  """All values containing the given string."""
+  mimetype_contains: String
+
+  """All values not containing the given string."""
+  mimetype_not_contains: String
+
+  """All values starting with the given string."""
+  mimetype_starts_with: String
+
+  """All values not starting with the given string."""
+  mimetype_not_starts_with: String
+
+  """All values ending with the given string."""
+  mimetype_ends_with: String
+
+  """All values not ending with the given string."""
+  mimetype_not_ends_with: String
+  size: Int
+
+  """All values that are not equal to given value."""
+  size_not: Int
+
+  """All values that are contained in given list."""
+  size_in: [Int!]
+
+  """All values that are not contained in given list."""
+  size_not_in: [Int!]
+
+  """All values less than the given value."""
+  size_lt: Int
+
+  """All values less than or equal the given value."""
+  size_lte: Int
+
+  """All values greater than the given value."""
+  size_gt: Int
+
+  """All values greater than or equal the given value."""
+  size_gte: Int
+}
+
+input FileWhereUniqueInput {
+  id: ID
+}
+
+type Instrument implements Node {
+  id: ID!
+  name: String!
+  description: String
+  documents(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File!]
+  interfaces: [String!]!
+  commands(where: InstrumentCommandWhereInput, orderBy: InstrumentCommandOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentCommand!]
+  parameters(where: InstrumentParameterWhereInput, orderBy: InstrumentParameterOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentParameter!]
+  subsystems(where: InstrumentSubsystemWhereInput, orderBy: InstrumentSubsystemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentSubsystem!]
+}
+
+type InstrumentCommand implements Node {
+  id: ID!
+  tag: String!
+  name: String
+  description: String!
+  instrument: Instrument!
+  readString: String
+  writeString: String
+  parameters(where: InstrumentParameterWhereInput, orderBy: InstrumentParameterOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentParameter!]
+}
+
+"""A connection to a list of items."""
+type InstrumentCommandConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [InstrumentCommandEdge]!
+  aggregate: AggregateInstrumentCommand!
+}
+
+input InstrumentCommandCreateInput {
+  tag: String!
+  name: String
+  description: String!
+  readString: String
+  writeString: String
+  instrument: InstrumentCreateOneWithoutCommandsInput!
+  parameters: InstrumentParameterCreateManyInput
+}
+
+input InstrumentCommandCreateManyInput {
+  create: [InstrumentCommandCreateInput!]
+  connect: [InstrumentCommandWhereUniqueInput!]
+}
+
+input InstrumentCommandCreateManyWithoutInstrumentInput {
+  create: [InstrumentCommandCreateWithoutInstrumentInput!]
+  connect: [InstrumentCommandWhereUniqueInput!]
+}
+
+input InstrumentCommandCreateWithoutInstrumentInput {
+  tag: String!
+  name: String
+  description: String!
+  readString: String
+  writeString: String
+  parameters: InstrumentParameterCreateManyInput
+}
+
+"""An edge in a connection."""
+type InstrumentCommandEdge {
+  """The item at the end of the edge."""
+  node: InstrumentCommand!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum InstrumentCommandOrderByInput {
+  id_ASC
+  id_DESC
+  tag_ASC
+  tag_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  readString_ASC
+  readString_DESC
+  writeString_ASC
+  writeString_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type InstrumentCommandPreviousValues {
+  id: ID!
+  tag: String!
+  name: String
+  description: String!
+  readString: String
+  writeString: String
+}
+
+input InstrumentCommandScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentCommandScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentCommandScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentCommandScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  tag: String
+
+  """All values that are not equal to given value."""
+  tag_not: String
+
+  """All values that are contained in given list."""
+  tag_in: [String!]
+
+  """All values that are not contained in given list."""
+  tag_not_in: [String!]
+
+  """All values less than the given value."""
+  tag_lt: String
+
+  """All values less than or equal the given value."""
+  tag_lte: String
+
+  """All values greater than the given value."""
+  tag_gt: String
+
+  """All values greater than or equal the given value."""
+  tag_gte: String
+
+  """All values containing the given string."""
+  tag_contains: String
+
+  """All values not containing the given string."""
+  tag_not_contains: String
+
+  """All values starting with the given string."""
+  tag_starts_with: String
+
+  """All values not starting with the given string."""
+  tag_not_starts_with: String
+
+  """All values ending with the given string."""
+  tag_ends_with: String
+
+  """All values not ending with the given string."""
+  tag_not_ends_with: String
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  readString: String
+
+  """All values that are not equal to given value."""
+  readString_not: String
+
+  """All values that are contained in given list."""
+  readString_in: [String!]
+
+  """All values that are not contained in given list."""
+  readString_not_in: [String!]
+
+  """All values less than the given value."""
+  readString_lt: String
+
+  """All values less than or equal the given value."""
+  readString_lte: String
+
+  """All values greater than the given value."""
+  readString_gt: String
+
+  """All values greater than or equal the given value."""
+  readString_gte: String
+
+  """All values containing the given string."""
+  readString_contains: String
+
+  """All values not containing the given string."""
+  readString_not_contains: String
+
+  """All values starting with the given string."""
+  readString_starts_with: String
+
+  """All values not starting with the given string."""
+  readString_not_starts_with: String
+
+  """All values ending with the given string."""
+  readString_ends_with: String
+
+  """All values not ending with the given string."""
+  readString_not_ends_with: String
+  writeString: String
+
+  """All values that are not equal to given value."""
+  writeString_not: String
+
+  """All values that are contained in given list."""
+  writeString_in: [String!]
+
+  """All values that are not contained in given list."""
+  writeString_not_in: [String!]
+
+  """All values less than the given value."""
+  writeString_lt: String
+
+  """All values less than or equal the given value."""
+  writeString_lte: String
+
+  """All values greater than the given value."""
+  writeString_gt: String
+
+  """All values greater than or equal the given value."""
+  writeString_gte: String
+
+  """All values containing the given string."""
+  writeString_contains: String
+
+  """All values not containing the given string."""
+  writeString_not_contains: String
+
+  """All values starting with the given string."""
+  writeString_starts_with: String
+
+  """All values not starting with the given string."""
+  writeString_not_starts_with: String
+
+  """All values ending with the given string."""
+  writeString_ends_with: String
+
+  """All values not ending with the given string."""
+  writeString_not_ends_with: String
+}
+
+type InstrumentCommandSubscriptionPayload {
+  mutation: MutationType!
+  node: InstrumentCommand
+  updatedFields: [String!]
+  previousValues: InstrumentCommandPreviousValues
+}
+
+input InstrumentCommandSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentCommandSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentCommandSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentCommandSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: InstrumentCommandWhereInput
+}
+
+input InstrumentCommandUpdateDataInput {
+  tag: String
+  name: String
+  description: String
+  readString: String
+  writeString: String
+  instrument: InstrumentUpdateOneRequiredWithoutCommandsInput
+  parameters: InstrumentParameterUpdateManyInput
+}
+
+input InstrumentCommandUpdateInput {
+  tag: String
+  name: String
+  description: String
+  readString: String
+  writeString: String
+  instrument: InstrumentUpdateOneRequiredWithoutCommandsInput
+  parameters: InstrumentParameterUpdateManyInput
+}
+
+input InstrumentCommandUpdateManyDataInput {
+  tag: String
+  name: String
+  description: String
+  readString: String
+  writeString: String
+}
+
+input InstrumentCommandUpdateManyInput {
+  create: [InstrumentCommandCreateInput!]
+  connect: [InstrumentCommandWhereUniqueInput!]
+  set: [InstrumentCommandWhereUniqueInput!]
+  disconnect: [InstrumentCommandWhereUniqueInput!]
+  delete: [InstrumentCommandWhereUniqueInput!]
+  update: [InstrumentCommandUpdateWithWhereUniqueNestedInput!]
+  updateMany: [InstrumentCommandUpdateManyWithWhereNestedInput!]
+  deleteMany: [InstrumentCommandScalarWhereInput!]
+  upsert: [InstrumentCommandUpsertWithWhereUniqueNestedInput!]
+}
+
+input InstrumentCommandUpdateManyMutationInput {
+  tag: String
+  name: String
+  description: String
+  readString: String
+  writeString: String
+}
+
+input InstrumentCommandUpdateManyWithoutInstrumentInput {
+  create: [InstrumentCommandCreateWithoutInstrumentInput!]
+  connect: [InstrumentCommandWhereUniqueInput!]
+  set: [InstrumentCommandWhereUniqueInput!]
+  disconnect: [InstrumentCommandWhereUniqueInput!]
+  delete: [InstrumentCommandWhereUniqueInput!]
+  update: [InstrumentCommandUpdateWithWhereUniqueWithoutInstrumentInput!]
+  updateMany: [InstrumentCommandUpdateManyWithWhereNestedInput!]
+  deleteMany: [InstrumentCommandScalarWhereInput!]
+  upsert: [InstrumentCommandUpsertWithWhereUniqueWithoutInstrumentInput!]
+}
+
+input InstrumentCommandUpdateManyWithWhereNestedInput {
+  where: InstrumentCommandScalarWhereInput!
+  data: InstrumentCommandUpdateManyDataInput!
+}
+
+input InstrumentCommandUpdateWithoutInstrumentDataInput {
+  tag: String
+  name: String
+  description: String
+  readString: String
+  writeString: String
+  parameters: InstrumentParameterUpdateManyInput
+}
+
+input InstrumentCommandUpdateWithWhereUniqueNestedInput {
+  where: InstrumentCommandWhereUniqueInput!
+  data: InstrumentCommandUpdateDataInput!
+}
+
+input InstrumentCommandUpdateWithWhereUniqueWithoutInstrumentInput {
+  where: InstrumentCommandWhereUniqueInput!
+  data: InstrumentCommandUpdateWithoutInstrumentDataInput!
+}
+
+input InstrumentCommandUpsertWithWhereUniqueNestedInput {
+  where: InstrumentCommandWhereUniqueInput!
+  update: InstrumentCommandUpdateDataInput!
+  create: InstrumentCommandCreateInput!
+}
+
+input InstrumentCommandUpsertWithWhereUniqueWithoutInstrumentInput {
+  where: InstrumentCommandWhereUniqueInput!
+  update: InstrumentCommandUpdateWithoutInstrumentDataInput!
+  create: InstrumentCommandCreateWithoutInstrumentInput!
+}
+
+input InstrumentCommandWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentCommandWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentCommandWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentCommandWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  tag: String
+
+  """All values that are not equal to given value."""
+  tag_not: String
+
+  """All values that are contained in given list."""
+  tag_in: [String!]
+
+  """All values that are not contained in given list."""
+  tag_not_in: [String!]
+
+  """All values less than the given value."""
+  tag_lt: String
+
+  """All values less than or equal the given value."""
+  tag_lte: String
+
+  """All values greater than the given value."""
+  tag_gt: String
+
+  """All values greater than or equal the given value."""
+  tag_gte: String
+
+  """All values containing the given string."""
+  tag_contains: String
+
+  """All values not containing the given string."""
+  tag_not_contains: String
+
+  """All values starting with the given string."""
+  tag_starts_with: String
+
+  """All values not starting with the given string."""
+  tag_not_starts_with: String
+
+  """All values ending with the given string."""
+  tag_ends_with: String
+
+  """All values not ending with the given string."""
+  tag_not_ends_with: String
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  readString: String
+
+  """All values that are not equal to given value."""
+  readString_not: String
+
+  """All values that are contained in given list."""
+  readString_in: [String!]
+
+  """All values that are not contained in given list."""
+  readString_not_in: [String!]
+
+  """All values less than the given value."""
+  readString_lt: String
+
+  """All values less than or equal the given value."""
+  readString_lte: String
+
+  """All values greater than the given value."""
+  readString_gt: String
+
+  """All values greater than or equal the given value."""
+  readString_gte: String
+
+  """All values containing the given string."""
+  readString_contains: String
+
+  """All values not containing the given string."""
+  readString_not_contains: String
+
+  """All values starting with the given string."""
+  readString_starts_with: String
+
+  """All values not starting with the given string."""
+  readString_not_starts_with: String
+
+  """All values ending with the given string."""
+  readString_ends_with: String
+
+  """All values not ending with the given string."""
+  readString_not_ends_with: String
+  writeString: String
+
+  """All values that are not equal to given value."""
+  writeString_not: String
+
+  """All values that are contained in given list."""
+  writeString_in: [String!]
+
+  """All values that are not contained in given list."""
+  writeString_not_in: [String!]
+
+  """All values less than the given value."""
+  writeString_lt: String
+
+  """All values less than or equal the given value."""
+  writeString_lte: String
+
+  """All values greater than the given value."""
+  writeString_gt: String
+
+  """All values greater than or equal the given value."""
+  writeString_gte: String
+
+  """All values containing the given string."""
+  writeString_contains: String
+
+  """All values not containing the given string."""
+  writeString_not_contains: String
+
+  """All values starting with the given string."""
+  writeString_starts_with: String
+
+  """All values not starting with the given string."""
+  writeString_not_starts_with: String
+
+  """All values ending with the given string."""
+  writeString_ends_with: String
+
+  """All values not ending with the given string."""
+  writeString_not_ends_with: String
+  instrument: InstrumentWhereInput
+  parameters_every: InstrumentParameterWhereInput
+  parameters_some: InstrumentParameterWhereInput
+  parameters_none: InstrumentParameterWhereInput
+}
+
+input InstrumentCommandWhereUniqueInput {
+  id: ID
+}
+
+"""A connection to a list of items."""
+type InstrumentConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [InstrumentEdge]!
+  aggregate: AggregateInstrument!
+}
+
+input InstrumentCreateInput {
+  name: String!
+  description: String
+  interfaces: InstrumentCreateinterfacesInput
+  documents: FileCreateManyInput
+  commands: InstrumentCommandCreateManyWithoutInstrumentInput
+  parameters: InstrumentParameterCreateManyInput
+  subsystems: InstrumentSubsystemCreateManyInput
+}
+
+input InstrumentCreateinterfacesInput {
+  set: [String!]
+}
+
+input InstrumentCreateOneInput {
+  create: InstrumentCreateInput
+  connect: InstrumentWhereUniqueInput
+}
+
+input InstrumentCreateOneWithoutCommandsInput {
+  create: InstrumentCreateWithoutCommandsInput
+  connect: InstrumentWhereUniqueInput
+}
+
+input InstrumentCreateWithoutCommandsInput {
+  name: String!
+  description: String
+  interfaces: InstrumentCreateinterfacesInput
+  documents: FileCreateManyInput
+  parameters: InstrumentParameterCreateManyInput
+  subsystems: InstrumentSubsystemCreateManyInput
+}
+
+"""An edge in a connection."""
+type InstrumentEdge {
+  """The item at the end of the edge."""
+  node: Instrument!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+type InstrumentInstance implements Node {
+  id: ID!
+  instrument: Instrument!
+  identifier: String!
+  interface: [String!]!
+  label: String
+  location: String
+}
+
+"""A connection to a list of items."""
+type InstrumentInstanceConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [InstrumentInstanceEdge]!
+  aggregate: AggregateInstrumentInstance!
+}
+
+input InstrumentInstanceCreateInput {
+  identifier: String!
+  label: String
+  location: String
+  interface: InstrumentInstanceCreateinterfaceInput
+  instrument: InstrumentCreateOneInput!
+}
+
+input InstrumentInstanceCreateinterfaceInput {
+  set: [String!]
+}
+
+input InstrumentInstanceCreateManyInput {
+  create: [InstrumentInstanceCreateInput!]
+  connect: [InstrumentInstanceWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type InstrumentInstanceEdge {
+  """The item at the end of the edge."""
+  node: InstrumentInstance!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum InstrumentInstanceOrderByInput {
+  id_ASC
+  id_DESC
+  identifier_ASC
+  identifier_DESC
+  label_ASC
+  label_DESC
+  location_ASC
+  location_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type InstrumentInstancePreviousValues {
+  id: ID!
+  identifier: String!
+  interface: [String!]!
+  label: String
+  location: String
+}
+
+input InstrumentInstanceScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentInstanceScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentInstanceScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentInstanceScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  identifier: String
+
+  """All values that are not equal to given value."""
+  identifier_not: String
+
+  """All values that are contained in given list."""
+  identifier_in: [String!]
+
+  """All values that are not contained in given list."""
+  identifier_not_in: [String!]
+
+  """All values less than the given value."""
+  identifier_lt: String
+
+  """All values less than or equal the given value."""
+  identifier_lte: String
+
+  """All values greater than the given value."""
+  identifier_gt: String
+
+  """All values greater than or equal the given value."""
+  identifier_gte: String
+
+  """All values containing the given string."""
+  identifier_contains: String
+
+  """All values not containing the given string."""
+  identifier_not_contains: String
+
+  """All values starting with the given string."""
+  identifier_starts_with: String
+
+  """All values not starting with the given string."""
+  identifier_not_starts_with: String
+
+  """All values ending with the given string."""
+  identifier_ends_with: String
+
+  """All values not ending with the given string."""
+  identifier_not_ends_with: String
+  label: String
+
+  """All values that are not equal to given value."""
+  label_not: String
+
+  """All values that are contained in given list."""
+  label_in: [String!]
+
+  """All values that are not contained in given list."""
+  label_not_in: [String!]
+
+  """All values less than the given value."""
+  label_lt: String
+
+  """All values less than or equal the given value."""
+  label_lte: String
+
+  """All values greater than the given value."""
+  label_gt: String
+
+  """All values greater than or equal the given value."""
+  label_gte: String
+
+  """All values containing the given string."""
+  label_contains: String
+
+  """All values not containing the given string."""
+  label_not_contains: String
+
+  """All values starting with the given string."""
+  label_starts_with: String
+
+  """All values not starting with the given string."""
+  label_not_starts_with: String
+
+  """All values ending with the given string."""
+  label_ends_with: String
+
+  """All values not ending with the given string."""
+  label_not_ends_with: String
+  location: String
+
+  """All values that are not equal to given value."""
+  location_not: String
+
+  """All values that are contained in given list."""
+  location_in: [String!]
+
+  """All values that are not contained in given list."""
+  location_not_in: [String!]
+
+  """All values less than the given value."""
+  location_lt: String
+
+  """All values less than or equal the given value."""
+  location_lte: String
+
+  """All values greater than the given value."""
+  location_gt: String
+
+  """All values greater than or equal the given value."""
+  location_gte: String
+
+  """All values containing the given string."""
+  location_contains: String
+
+  """All values not containing the given string."""
+  location_not_contains: String
+
+  """All values starting with the given string."""
+  location_starts_with: String
+
+  """All values not starting with the given string."""
+  location_not_starts_with: String
+
+  """All values ending with the given string."""
+  location_ends_with: String
+
+  """All values not ending with the given string."""
+  location_not_ends_with: String
+}
+
+type InstrumentInstanceSubscriptionPayload {
+  mutation: MutationType!
+  node: InstrumentInstance
+  updatedFields: [String!]
+  previousValues: InstrumentInstancePreviousValues
+}
+
+input InstrumentInstanceSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentInstanceSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentInstanceSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentInstanceSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: InstrumentInstanceWhereInput
+}
+
+input InstrumentInstanceUpdateDataInput {
+  identifier: String
+  label: String
+  location: String
+  interface: InstrumentInstanceUpdateinterfaceInput
+  instrument: InstrumentUpdateOneRequiredInput
+}
+
+input InstrumentInstanceUpdateInput {
+  identifier: String
+  label: String
+  location: String
+  interface: InstrumentInstanceUpdateinterfaceInput
+  instrument: InstrumentUpdateOneRequiredInput
+}
+
+input InstrumentInstanceUpdateinterfaceInput {
+  set: [String!]
+}
+
+input InstrumentInstanceUpdateManyDataInput {
+  identifier: String
+  label: String
+  location: String
+  interface: InstrumentInstanceUpdateinterfaceInput
+}
+
+input InstrumentInstanceUpdateManyInput {
+  create: [InstrumentInstanceCreateInput!]
+  connect: [InstrumentInstanceWhereUniqueInput!]
+  set: [InstrumentInstanceWhereUniqueInput!]
+  disconnect: [InstrumentInstanceWhereUniqueInput!]
+  delete: [InstrumentInstanceWhereUniqueInput!]
+  update: [InstrumentInstanceUpdateWithWhereUniqueNestedInput!]
+  updateMany: [InstrumentInstanceUpdateManyWithWhereNestedInput!]
+  deleteMany: [InstrumentInstanceScalarWhereInput!]
+  upsert: [InstrumentInstanceUpsertWithWhereUniqueNestedInput!]
+}
+
+input InstrumentInstanceUpdateManyMutationInput {
+  identifier: String
+  label: String
+  location: String
+  interface: InstrumentInstanceUpdateinterfaceInput
+}
+
+input InstrumentInstanceUpdateManyWithWhereNestedInput {
+  where: InstrumentInstanceScalarWhereInput!
+  data: InstrumentInstanceUpdateManyDataInput!
+}
+
+input InstrumentInstanceUpdateWithWhereUniqueNestedInput {
+  where: InstrumentInstanceWhereUniqueInput!
+  data: InstrumentInstanceUpdateDataInput!
+}
+
+input InstrumentInstanceUpsertWithWhereUniqueNestedInput {
+  where: InstrumentInstanceWhereUniqueInput!
+  update: InstrumentInstanceUpdateDataInput!
+  create: InstrumentInstanceCreateInput!
+}
+
+input InstrumentInstanceWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentInstanceWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentInstanceWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentInstanceWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  identifier: String
+
+  """All values that are not equal to given value."""
+  identifier_not: String
+
+  """All values that are contained in given list."""
+  identifier_in: [String!]
+
+  """All values that are not contained in given list."""
+  identifier_not_in: [String!]
+
+  """All values less than the given value."""
+  identifier_lt: String
+
+  """All values less than or equal the given value."""
+  identifier_lte: String
+
+  """All values greater than the given value."""
+  identifier_gt: String
+
+  """All values greater than or equal the given value."""
+  identifier_gte: String
+
+  """All values containing the given string."""
+  identifier_contains: String
+
+  """All values not containing the given string."""
+  identifier_not_contains: String
+
+  """All values starting with the given string."""
+  identifier_starts_with: String
+
+  """All values not starting with the given string."""
+  identifier_not_starts_with: String
+
+  """All values ending with the given string."""
+  identifier_ends_with: String
+
+  """All values not ending with the given string."""
+  identifier_not_ends_with: String
+  label: String
+
+  """All values that are not equal to given value."""
+  label_not: String
+
+  """All values that are contained in given list."""
+  label_in: [String!]
+
+  """All values that are not contained in given list."""
+  label_not_in: [String!]
+
+  """All values less than the given value."""
+  label_lt: String
+
+  """All values less than or equal the given value."""
+  label_lte: String
+
+  """All values greater than the given value."""
+  label_gt: String
+
+  """All values greater than or equal the given value."""
+  label_gte: String
+
+  """All values containing the given string."""
+  label_contains: String
+
+  """All values not containing the given string."""
+  label_not_contains: String
+
+  """All values starting with the given string."""
+  label_starts_with: String
+
+  """All values not starting with the given string."""
+  label_not_starts_with: String
+
+  """All values ending with the given string."""
+  label_ends_with: String
+
+  """All values not ending with the given string."""
+  label_not_ends_with: String
+  location: String
+
+  """All values that are not equal to given value."""
+  location_not: String
+
+  """All values that are contained in given list."""
+  location_in: [String!]
+
+  """All values that are not contained in given list."""
+  location_not_in: [String!]
+
+  """All values less than the given value."""
+  location_lt: String
+
+  """All values less than or equal the given value."""
+  location_lte: String
+
+  """All values greater than the given value."""
+  location_gt: String
+
+  """All values greater than or equal the given value."""
+  location_gte: String
+
+  """All values containing the given string."""
+  location_contains: String
+
+  """All values not containing the given string."""
+  location_not_contains: String
+
+  """All values starting with the given string."""
+  location_starts_with: String
+
+  """All values not starting with the given string."""
+  location_not_starts_with: String
+
+  """All values ending with the given string."""
+  location_ends_with: String
+
+  """All values not ending with the given string."""
+  location_not_ends_with: String
+  instrument: InstrumentWhereInput
+}
+
+input InstrumentInstanceWhereUniqueInput {
+  id: ID
+}
+
+enum InstrumentOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type InstrumentParameter implements Node {
+  id: ID!
+  tag: String!
+  name: String
+  description: String
+  type: String!
+  values: String
+}
+
+"""A connection to a list of items."""
+type InstrumentParameterConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [InstrumentParameterEdge]!
+  aggregate: AggregateInstrumentParameter!
+}
+
+input InstrumentParameterCreateInput {
+  tag: String!
+  name: String
+  description: String
+  type: String!
+  values: String
+}
+
+input InstrumentParameterCreateManyInput {
+  create: [InstrumentParameterCreateInput!]
+  connect: [InstrumentParameterWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type InstrumentParameterEdge {
+  """The item at the end of the edge."""
+  node: InstrumentParameter!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum InstrumentParameterOrderByInput {
+  id_ASC
+  id_DESC
+  tag_ASC
+  tag_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  type_ASC
+  type_DESC
+  values_ASC
+  values_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type InstrumentParameterPreviousValues {
+  id: ID!
+  tag: String!
+  name: String
+  description: String
+  type: String!
+  values: String
+}
+
+input InstrumentParameterScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentParameterScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentParameterScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentParameterScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  tag: String
+
+  """All values that are not equal to given value."""
+  tag_not: String
+
+  """All values that are contained in given list."""
+  tag_in: [String!]
+
+  """All values that are not contained in given list."""
+  tag_not_in: [String!]
+
+  """All values less than the given value."""
+  tag_lt: String
+
+  """All values less than or equal the given value."""
+  tag_lte: String
+
+  """All values greater than the given value."""
+  tag_gt: String
+
+  """All values greater than or equal the given value."""
+  tag_gte: String
+
+  """All values containing the given string."""
+  tag_contains: String
+
+  """All values not containing the given string."""
+  tag_not_contains: String
+
+  """All values starting with the given string."""
+  tag_starts_with: String
+
+  """All values not starting with the given string."""
+  tag_not_starts_with: String
+
+  """All values ending with the given string."""
+  tag_ends_with: String
+
+  """All values not ending with the given string."""
+  tag_not_ends_with: String
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  type: String
+
+  """All values that are not equal to given value."""
+  type_not: String
+
+  """All values that are contained in given list."""
+  type_in: [String!]
+
+  """All values that are not contained in given list."""
+  type_not_in: [String!]
+
+  """All values less than the given value."""
+  type_lt: String
+
+  """All values less than or equal the given value."""
+  type_lte: String
+
+  """All values greater than the given value."""
+  type_gt: String
+
+  """All values greater than or equal the given value."""
+  type_gte: String
+
+  """All values containing the given string."""
+  type_contains: String
+
+  """All values not containing the given string."""
+  type_not_contains: String
+
+  """All values starting with the given string."""
+  type_starts_with: String
+
+  """All values not starting with the given string."""
+  type_not_starts_with: String
+
+  """All values ending with the given string."""
+  type_ends_with: String
+
+  """All values not ending with the given string."""
+  type_not_ends_with: String
+  values: String
+
+  """All values that are not equal to given value."""
+  values_not: String
+
+  """All values that are contained in given list."""
+  values_in: [String!]
+
+  """All values that are not contained in given list."""
+  values_not_in: [String!]
+
+  """All values less than the given value."""
+  values_lt: String
+
+  """All values less than or equal the given value."""
+  values_lte: String
+
+  """All values greater than the given value."""
+  values_gt: String
+
+  """All values greater than or equal the given value."""
+  values_gte: String
+
+  """All values containing the given string."""
+  values_contains: String
+
+  """All values not containing the given string."""
+  values_not_contains: String
+
+  """All values starting with the given string."""
+  values_starts_with: String
+
+  """All values not starting with the given string."""
+  values_not_starts_with: String
+
+  """All values ending with the given string."""
+  values_ends_with: String
+
+  """All values not ending with the given string."""
+  values_not_ends_with: String
+}
+
+type InstrumentParameterSubscriptionPayload {
+  mutation: MutationType!
+  node: InstrumentParameter
+  updatedFields: [String!]
+  previousValues: InstrumentParameterPreviousValues
+}
+
+input InstrumentParameterSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentParameterSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentParameterSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentParameterSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: InstrumentParameterWhereInput
+}
+
+input InstrumentParameterUpdateDataInput {
+  tag: String
+  name: String
+  description: String
+  type: String
+  values: String
+}
+
+input InstrumentParameterUpdateInput {
+  tag: String
+  name: String
+  description: String
+  type: String
+  values: String
+}
+
+input InstrumentParameterUpdateManyDataInput {
+  tag: String
+  name: String
+  description: String
+  type: String
+  values: String
+}
+
+input InstrumentParameterUpdateManyInput {
+  create: [InstrumentParameterCreateInput!]
+  connect: [InstrumentParameterWhereUniqueInput!]
+  set: [InstrumentParameterWhereUniqueInput!]
+  disconnect: [InstrumentParameterWhereUniqueInput!]
+  delete: [InstrumentParameterWhereUniqueInput!]
+  update: [InstrumentParameterUpdateWithWhereUniqueNestedInput!]
+  updateMany: [InstrumentParameterUpdateManyWithWhereNestedInput!]
+  deleteMany: [InstrumentParameterScalarWhereInput!]
+  upsert: [InstrumentParameterUpsertWithWhereUniqueNestedInput!]
+}
+
+input InstrumentParameterUpdateManyMutationInput {
+  tag: String
+  name: String
+  description: String
+  type: String
+  values: String
+}
+
+input InstrumentParameterUpdateManyWithWhereNestedInput {
+  where: InstrumentParameterScalarWhereInput!
+  data: InstrumentParameterUpdateManyDataInput!
+}
+
+input InstrumentParameterUpdateWithWhereUniqueNestedInput {
+  where: InstrumentParameterWhereUniqueInput!
+  data: InstrumentParameterUpdateDataInput!
+}
+
+input InstrumentParameterUpsertWithWhereUniqueNestedInput {
+  where: InstrumentParameterWhereUniqueInput!
+  update: InstrumentParameterUpdateDataInput!
+  create: InstrumentParameterCreateInput!
+}
+
+input InstrumentParameterWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentParameterWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentParameterWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentParameterWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  tag: String
+
+  """All values that are not equal to given value."""
+  tag_not: String
+
+  """All values that are contained in given list."""
+  tag_in: [String!]
+
+  """All values that are not contained in given list."""
+  tag_not_in: [String!]
+
+  """All values less than the given value."""
+  tag_lt: String
+
+  """All values less than or equal the given value."""
+  tag_lte: String
+
+  """All values greater than the given value."""
+  tag_gt: String
+
+  """All values greater than or equal the given value."""
+  tag_gte: String
+
+  """All values containing the given string."""
+  tag_contains: String
+
+  """All values not containing the given string."""
+  tag_not_contains: String
+
+  """All values starting with the given string."""
+  tag_starts_with: String
+
+  """All values not starting with the given string."""
+  tag_not_starts_with: String
+
+  """All values ending with the given string."""
+  tag_ends_with: String
+
+  """All values not ending with the given string."""
+  tag_not_ends_with: String
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  type: String
+
+  """All values that are not equal to given value."""
+  type_not: String
+
+  """All values that are contained in given list."""
+  type_in: [String!]
+
+  """All values that are not contained in given list."""
+  type_not_in: [String!]
+
+  """All values less than the given value."""
+  type_lt: String
+
+  """All values less than or equal the given value."""
+  type_lte: String
+
+  """All values greater than the given value."""
+  type_gt: String
+
+  """All values greater than or equal the given value."""
+  type_gte: String
+
+  """All values containing the given string."""
+  type_contains: String
+
+  """All values not containing the given string."""
+  type_not_contains: String
+
+  """All values starting with the given string."""
+  type_starts_with: String
+
+  """All values not starting with the given string."""
+  type_not_starts_with: String
+
+  """All values ending with the given string."""
+  type_ends_with: String
+
+  """All values not ending with the given string."""
+  type_not_ends_with: String
+  values: String
+
+  """All values that are not equal to given value."""
+  values_not: String
+
+  """All values that are contained in given list."""
+  values_in: [String!]
+
+  """All values that are not contained in given list."""
+  values_not_in: [String!]
+
+  """All values less than the given value."""
+  values_lt: String
+
+  """All values less than or equal the given value."""
+  values_lte: String
+
+  """All values greater than the given value."""
+  values_gt: String
+
+  """All values greater than or equal the given value."""
+  values_gte: String
+
+  """All values containing the given string."""
+  values_contains: String
+
+  """All values not containing the given string."""
+  values_not_contains: String
+
+  """All values starting with the given string."""
+  values_starts_with: String
+
+  """All values not starting with the given string."""
+  values_not_starts_with: String
+
+  """All values ending with the given string."""
+  values_ends_with: String
+
+  """All values not ending with the given string."""
+  values_not_ends_with: String
+}
+
+input InstrumentParameterWhereUniqueInput {
+  id: ID
+}
+
+type InstrumentPreviousValues {
+  id: ID!
+  name: String!
+  description: String
+  interfaces: [String!]!
+}
+
+type InstrumentSubscriptionPayload {
+  mutation: MutationType!
+  node: Instrument
+  updatedFields: [String!]
+  previousValues: InstrumentPreviousValues
+}
+
+input InstrumentSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: InstrumentWhereInput
+}
+
+type InstrumentSubsystem implements Node {
+  id: ID!
+  name: String
+  description: String!
+  commands(where: InstrumentCommandWhereInput, orderBy: InstrumentCommandOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentCommand!]
+  parameters(where: InstrumentParameterWhereInput, orderBy: InstrumentParameterOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentParameter!]
+  subsystems(where: InstrumentSubsystemWhereInput, orderBy: InstrumentSubsystemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentSubsystem!]
+}
+
+"""A connection to a list of items."""
+type InstrumentSubsystemConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [InstrumentSubsystemEdge]!
+  aggregate: AggregateInstrumentSubsystem!
+}
+
+input InstrumentSubsystemCreateInput {
+  name: String
+  description: String!
+  commands: InstrumentCommandCreateManyInput
+  parameters: InstrumentParameterCreateManyInput
+  subsystems: InstrumentSubsystemCreateManyInput
+}
+
+input InstrumentSubsystemCreateManyInput {
+  create: [InstrumentSubsystemCreateInput!]
+  connect: [InstrumentSubsystemWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type InstrumentSubsystemEdge {
+  """The item at the end of the edge."""
+  node: InstrumentSubsystem!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum InstrumentSubsystemOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type InstrumentSubsystemPreviousValues {
+  id: ID!
+  name: String
+  description: String!
+}
+
+input InstrumentSubsystemScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentSubsystemScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentSubsystemScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentSubsystemScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+}
+
+type InstrumentSubsystemSubscriptionPayload {
+  mutation: MutationType!
+  node: InstrumentSubsystem
+  updatedFields: [String!]
+  previousValues: InstrumentSubsystemPreviousValues
+}
+
+input InstrumentSubsystemSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentSubsystemSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentSubsystemSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentSubsystemSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: InstrumentSubsystemWhereInput
+}
+
+input InstrumentSubsystemUpdateDataInput {
+  name: String
+  description: String
+  commands: InstrumentCommandUpdateManyInput
+  parameters: InstrumentParameterUpdateManyInput
+  subsystems: InstrumentSubsystemUpdateManyInput
+}
+
+input InstrumentSubsystemUpdateInput {
+  name: String
+  description: String
+  commands: InstrumentCommandUpdateManyInput
+  parameters: InstrumentParameterUpdateManyInput
+  subsystems: InstrumentSubsystemUpdateManyInput
+}
+
+input InstrumentSubsystemUpdateManyDataInput {
+  name: String
+  description: String
+}
+
+input InstrumentSubsystemUpdateManyInput {
+  create: [InstrumentSubsystemCreateInput!]
+  connect: [InstrumentSubsystemWhereUniqueInput!]
+  set: [InstrumentSubsystemWhereUniqueInput!]
+  disconnect: [InstrumentSubsystemWhereUniqueInput!]
+  delete: [InstrumentSubsystemWhereUniqueInput!]
+  update: [InstrumentSubsystemUpdateWithWhereUniqueNestedInput!]
+  updateMany: [InstrumentSubsystemUpdateManyWithWhereNestedInput!]
+  deleteMany: [InstrumentSubsystemScalarWhereInput!]
+  upsert: [InstrumentSubsystemUpsertWithWhereUniqueNestedInput!]
+}
+
+input InstrumentSubsystemUpdateManyMutationInput {
+  name: String
+  description: String
+}
+
+input InstrumentSubsystemUpdateManyWithWhereNestedInput {
+  where: InstrumentSubsystemScalarWhereInput!
+  data: InstrumentSubsystemUpdateManyDataInput!
+}
+
+input InstrumentSubsystemUpdateWithWhereUniqueNestedInput {
+  where: InstrumentSubsystemWhereUniqueInput!
+  data: InstrumentSubsystemUpdateDataInput!
+}
+
+input InstrumentSubsystemUpsertWithWhereUniqueNestedInput {
+  where: InstrumentSubsystemWhereUniqueInput!
+  update: InstrumentSubsystemUpdateDataInput!
+  create: InstrumentSubsystemCreateInput!
+}
+
+input InstrumentSubsystemWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentSubsystemWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentSubsystemWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentSubsystemWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  commands_every: InstrumentCommandWhereInput
+  commands_some: InstrumentCommandWhereInput
+  commands_none: InstrumentCommandWhereInput
+  parameters_every: InstrumentParameterWhereInput
+  parameters_some: InstrumentParameterWhereInput
+  parameters_none: InstrumentParameterWhereInput
+  subsystems_every: InstrumentSubsystemWhereInput
+  subsystems_some: InstrumentSubsystemWhereInput
+  subsystems_none: InstrumentSubsystemWhereInput
+}
+
+input InstrumentSubsystemWhereUniqueInput {
+  id: ID
+}
+
+input InstrumentUpdateDataInput {
+  name: String
+  description: String
+  interfaces: InstrumentUpdateinterfacesInput
+  documents: FileUpdateManyInput
+  commands: InstrumentCommandUpdateManyWithoutInstrumentInput
+  parameters: InstrumentParameterUpdateManyInput
+  subsystems: InstrumentSubsystemUpdateManyInput
+}
+
+input InstrumentUpdateInput {
+  name: String
+  description: String
+  interfaces: InstrumentUpdateinterfacesInput
+  documents: FileUpdateManyInput
+  commands: InstrumentCommandUpdateManyWithoutInstrumentInput
+  parameters: InstrumentParameterUpdateManyInput
+  subsystems: InstrumentSubsystemUpdateManyInput
+}
+
+input InstrumentUpdateinterfacesInput {
+  set: [String!]
+}
+
+input InstrumentUpdateManyMutationInput {
+  name: String
+  description: String
+  interfaces: InstrumentUpdateinterfacesInput
+}
+
+input InstrumentUpdateOneRequiredInput {
+  create: InstrumentCreateInput
+  connect: InstrumentWhereUniqueInput
+  update: InstrumentUpdateDataInput
+  upsert: InstrumentUpsertNestedInput
+}
+
+input InstrumentUpdateOneRequiredWithoutCommandsInput {
+  create: InstrumentCreateWithoutCommandsInput
+  connect: InstrumentWhereUniqueInput
+  update: InstrumentUpdateWithoutCommandsDataInput
+  upsert: InstrumentUpsertWithoutCommandsInput
+}
+
+input InstrumentUpdateWithoutCommandsDataInput {
+  name: String
+  description: String
+  interfaces: InstrumentUpdateinterfacesInput
+  documents: FileUpdateManyInput
+  parameters: InstrumentParameterUpdateManyInput
+  subsystems: InstrumentSubsystemUpdateManyInput
+}
+
+input InstrumentUpsertNestedInput {
+  update: InstrumentUpdateDataInput!
+  create: InstrumentCreateInput!
+}
+
+input InstrumentUpsertWithoutCommandsInput {
+  update: InstrumentUpdateWithoutCommandsDataInput!
+  create: InstrumentCreateWithoutCommandsInput!
+}
+
+input InstrumentWhereInput {
+  """Logical AND on all given filters."""
+  AND: [InstrumentWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [InstrumentWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [InstrumentWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  documents_every: FileWhereInput
+  documents_some: FileWhereInput
+  documents_none: FileWhereInput
+  commands_every: InstrumentCommandWhereInput
+  commands_some: InstrumentCommandWhereInput
+  commands_none: InstrumentCommandWhereInput
+  parameters_every: InstrumentParameterWhereInput
+  parameters_some: InstrumentParameterWhereInput
+  parameters_none: InstrumentParameterWhereInput
+  subsystems_every: InstrumentSubsystemWhereInput
+  subsystems_some: InstrumentSubsystemWhereInput
+  subsystems_none: InstrumentSubsystemWhereInput
+}
+
+input InstrumentWhereUniqueInput {
+  id: ID
+}
+
+"""
+The `Long` scalar type represents non-fractional signed whole numeric values.
+Long can represent values between -(2^63) and 2^63 - 1.
+"""
+scalar Long
+
+type Measurement implements Node {
+  id: ID!
+  createdAt: DateTime!
+  intValue: Int
+  floatValue: Float
+  stringValue: String
+}
+
+"""A connection to a list of items."""
+type MeasurementConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [MeasurementEdge]!
+  aggregate: AggregateMeasurement!
+}
+
+input MeasurementCreateInput {
+  intValue: Int
+  floatValue: Float
+  stringValue: String
+}
+
+input MeasurementCreateManyInput {
+  create: [MeasurementCreateInput!]
+  connect: [MeasurementWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type MeasurementEdge {
+  """The item at the end of the edge."""
+  node: Measurement!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum MeasurementOrderByInput {
+  id_ASC
+  id_DESC
+  createdAt_ASC
+  createdAt_DESC
+  intValue_ASC
+  intValue_DESC
+  floatValue_ASC
+  floatValue_DESC
+  stringValue_ASC
+  stringValue_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+}
+
+type MeasurementPreviousValues {
+  id: ID!
+  createdAt: DateTime!
+  intValue: Int
+  floatValue: Float
+  stringValue: String
+}
+
+type MeasurementRun implements Node {
+  id: ID!
+  name: String!
+  operators(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User!]
+  location: String!
+  temperature: Float
+  startTime: DateTime!
+  endTime: DateTime!
+  log(where: EventWhereInput, orderBy: EventOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Event!]
+  comments(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Comment!]
+  measurements(where: MeasurementWhereInput, orderBy: MeasurementOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Measurement!]
+  setup: Setup!
+}
+
+"""A connection to a list of items."""
+type MeasurementRunConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [MeasurementRunEdge]!
+  aggregate: AggregateMeasurementRun!
+}
+
+input MeasurementRunCreateInput {
+  name: String!
+  location: String!
+  temperature: Float
+  startTime: DateTime!
+  endTime: DateTime!
+  operators: UserCreateManyInput
+  log: EventCreateManyInput
+  comments: CommentCreateManyInput
+  measurements: MeasurementCreateManyInput
+  setup: SetupCreateOneInput!
+}
+
+input MeasurementRunCreateManyInput {
+  create: [MeasurementRunCreateInput!]
+  connect: [MeasurementRunWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type MeasurementRunEdge {
+  """The item at the end of the edge."""
+  node: MeasurementRun!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum MeasurementRunOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  location_ASC
+  location_DESC
+  temperature_ASC
+  temperature_DESC
+  startTime_ASC
+  startTime_DESC
+  endTime_ASC
+  endTime_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type MeasurementRunPreviousValues {
+  id: ID!
+  name: String!
+  location: String!
+  temperature: Float
+  startTime: DateTime!
+  endTime: DateTime!
+}
+
+input MeasurementRunScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [MeasurementRunScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [MeasurementRunScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [MeasurementRunScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  location: String
+
+  """All values that are not equal to given value."""
+  location_not: String
+
+  """All values that are contained in given list."""
+  location_in: [String!]
+
+  """All values that are not contained in given list."""
+  location_not_in: [String!]
+
+  """All values less than the given value."""
+  location_lt: String
+
+  """All values less than or equal the given value."""
+  location_lte: String
+
+  """All values greater than the given value."""
+  location_gt: String
+
+  """All values greater than or equal the given value."""
+  location_gte: String
+
+  """All values containing the given string."""
+  location_contains: String
+
+  """All values not containing the given string."""
+  location_not_contains: String
+
+  """All values starting with the given string."""
+  location_starts_with: String
+
+  """All values not starting with the given string."""
+  location_not_starts_with: String
+
+  """All values ending with the given string."""
+  location_ends_with: String
+
+  """All values not ending with the given string."""
+  location_not_ends_with: String
+  temperature: Float
+
+  """All values that are not equal to given value."""
+  temperature_not: Float
+
+  """All values that are contained in given list."""
+  temperature_in: [Float!]
+
+  """All values that are not contained in given list."""
+  temperature_not_in: [Float!]
+
+  """All values less than the given value."""
+  temperature_lt: Float
+
+  """All values less than or equal the given value."""
+  temperature_lte: Float
+
+  """All values greater than the given value."""
+  temperature_gt: Float
+
+  """All values greater than or equal the given value."""
+  temperature_gte: Float
+  startTime: DateTime
+
+  """All values that are not equal to given value."""
+  startTime_not: DateTime
+
+  """All values that are contained in given list."""
+  startTime_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  startTime_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  startTime_lt: DateTime
+
+  """All values less than or equal the given value."""
+  startTime_lte: DateTime
+
+  """All values greater than the given value."""
+  startTime_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  startTime_gte: DateTime
+  endTime: DateTime
+
+  """All values that are not equal to given value."""
+  endTime_not: DateTime
+
+  """All values that are contained in given list."""
+  endTime_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  endTime_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  endTime_lt: DateTime
+
+  """All values less than or equal the given value."""
+  endTime_lte: DateTime
+
+  """All values greater than the given value."""
+  endTime_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  endTime_gte: DateTime
+}
+
+type MeasurementRunSubscriptionPayload {
+  mutation: MutationType!
+  node: MeasurementRun
+  updatedFields: [String!]
+  previousValues: MeasurementRunPreviousValues
+}
+
+input MeasurementRunSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [MeasurementRunSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [MeasurementRunSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [MeasurementRunSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: MeasurementRunWhereInput
+}
+
+input MeasurementRunUpdateDataInput {
+  name: String
+  location: String
+  temperature: Float
+  startTime: DateTime
+  endTime: DateTime
+  operators: UserUpdateManyInput
+  log: EventUpdateManyInput
+  comments: CommentUpdateManyInput
+  measurements: MeasurementUpdateManyInput
+  setup: SetupUpdateOneRequiredInput
+}
+
+input MeasurementRunUpdateInput {
+  name: String
+  location: String
+  temperature: Float
+  startTime: DateTime
+  endTime: DateTime
+  operators: UserUpdateManyInput
+  log: EventUpdateManyInput
+  comments: CommentUpdateManyInput
+  measurements: MeasurementUpdateManyInput
+  setup: SetupUpdateOneRequiredInput
+}
+
+input MeasurementRunUpdateManyDataInput {
+  name: String
+  location: String
+  temperature: Float
+  startTime: DateTime
+  endTime: DateTime
+}
+
+input MeasurementRunUpdateManyInput {
+  create: [MeasurementRunCreateInput!]
+  connect: [MeasurementRunWhereUniqueInput!]
+  set: [MeasurementRunWhereUniqueInput!]
+  disconnect: [MeasurementRunWhereUniqueInput!]
+  delete: [MeasurementRunWhereUniqueInput!]
+  update: [MeasurementRunUpdateWithWhereUniqueNestedInput!]
+  updateMany: [MeasurementRunUpdateManyWithWhereNestedInput!]
+  deleteMany: [MeasurementRunScalarWhereInput!]
+  upsert: [MeasurementRunUpsertWithWhereUniqueNestedInput!]
+}
+
+input MeasurementRunUpdateManyMutationInput {
+  name: String
+  location: String
+  temperature: Float
+  startTime: DateTime
+  endTime: DateTime
+}
+
+input MeasurementRunUpdateManyWithWhereNestedInput {
+  where: MeasurementRunScalarWhereInput!
+  data: MeasurementRunUpdateManyDataInput!
+}
+
+input MeasurementRunUpdateWithWhereUniqueNestedInput {
+  where: MeasurementRunWhereUniqueInput!
+  data: MeasurementRunUpdateDataInput!
+}
+
+input MeasurementRunUpsertWithWhereUniqueNestedInput {
+  where: MeasurementRunWhereUniqueInput!
+  update: MeasurementRunUpdateDataInput!
+  create: MeasurementRunCreateInput!
+}
+
+input MeasurementRunWhereInput {
+  """Logical AND on all given filters."""
+  AND: [MeasurementRunWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [MeasurementRunWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [MeasurementRunWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  location: String
+
+  """All values that are not equal to given value."""
+  location_not: String
+
+  """All values that are contained in given list."""
+  location_in: [String!]
+
+  """All values that are not contained in given list."""
+  location_not_in: [String!]
+
+  """All values less than the given value."""
+  location_lt: String
+
+  """All values less than or equal the given value."""
+  location_lte: String
+
+  """All values greater than the given value."""
+  location_gt: String
+
+  """All values greater than or equal the given value."""
+  location_gte: String
+
+  """All values containing the given string."""
+  location_contains: String
+
+  """All values not containing the given string."""
+  location_not_contains: String
+
+  """All values starting with the given string."""
+  location_starts_with: String
+
+  """All values not starting with the given string."""
+  location_not_starts_with: String
+
+  """All values ending with the given string."""
+  location_ends_with: String
+
+  """All values not ending with the given string."""
+  location_not_ends_with: String
+  temperature: Float
+
+  """All values that are not equal to given value."""
+  temperature_not: Float
+
+  """All values that are contained in given list."""
+  temperature_in: [Float!]
+
+  """All values that are not contained in given list."""
+  temperature_not_in: [Float!]
+
+  """All values less than the given value."""
+  temperature_lt: Float
+
+  """All values less than or equal the given value."""
+  temperature_lte: Float
+
+  """All values greater than the given value."""
+  temperature_gt: Float
+
+  """All values greater than or equal the given value."""
+  temperature_gte: Float
+  startTime: DateTime
+
+  """All values that are not equal to given value."""
+  startTime_not: DateTime
+
+  """All values that are contained in given list."""
+  startTime_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  startTime_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  startTime_lt: DateTime
+
+  """All values less than or equal the given value."""
+  startTime_lte: DateTime
+
+  """All values greater than the given value."""
+  startTime_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  startTime_gte: DateTime
+  endTime: DateTime
+
+  """All values that are not equal to given value."""
+  endTime_not: DateTime
+
+  """All values that are contained in given list."""
+  endTime_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  endTime_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  endTime_lt: DateTime
+
+  """All values less than or equal the given value."""
+  endTime_lte: DateTime
+
+  """All values greater than the given value."""
+  endTime_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  endTime_gte: DateTime
+  operators_every: UserWhereInput
+  operators_some: UserWhereInput
+  operators_none: UserWhereInput
+  log_every: EventWhereInput
+  log_some: EventWhereInput
+  log_none: EventWhereInput
+  comments_every: CommentWhereInput
+  comments_some: CommentWhereInput
+  comments_none: CommentWhereInput
+  measurements_every: MeasurementWhereInput
+  measurements_some: MeasurementWhereInput
+  measurements_none: MeasurementWhereInput
+  setup: SetupWhereInput
+}
+
+input MeasurementRunWhereUniqueInput {
+  id: ID
+}
+
+input MeasurementScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [MeasurementScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [MeasurementScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [MeasurementScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  createdAt: DateTime
+
+  """All values that are not equal to given value."""
+  createdAt_not: DateTime
+
+  """All values that are contained in given list."""
+  createdAt_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  createdAt_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  createdAt_lt: DateTime
+
+  """All values less than or equal the given value."""
+  createdAt_lte: DateTime
+
+  """All values greater than the given value."""
+  createdAt_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  createdAt_gte: DateTime
+  intValue: Int
+
+  """All values that are not equal to given value."""
+  intValue_not: Int
+
+  """All values that are contained in given list."""
+  intValue_in: [Int!]
+
+  """All values that are not contained in given list."""
+  intValue_not_in: [Int!]
+
+  """All values less than the given value."""
+  intValue_lt: Int
+
+  """All values less than or equal the given value."""
+  intValue_lte: Int
+
+  """All values greater than the given value."""
+  intValue_gt: Int
+
+  """All values greater than or equal the given value."""
+  intValue_gte: Int
+  floatValue: Float
+
+  """All values that are not equal to given value."""
+  floatValue_not: Float
+
+  """All values that are contained in given list."""
+  floatValue_in: [Float!]
+
+  """All values that are not contained in given list."""
+  floatValue_not_in: [Float!]
+
+  """All values less than the given value."""
+  floatValue_lt: Float
+
+  """All values less than or equal the given value."""
+  floatValue_lte: Float
+
+  """All values greater than the given value."""
+  floatValue_gt: Float
+
+  """All values greater than or equal the given value."""
+  floatValue_gte: Float
+  stringValue: String
+
+  """All values that are not equal to given value."""
+  stringValue_not: String
+
+  """All values that are contained in given list."""
+  stringValue_in: [String!]
+
+  """All values that are not contained in given list."""
+  stringValue_not_in: [String!]
+
+  """All values less than the given value."""
+  stringValue_lt: String
+
+  """All values less than or equal the given value."""
+  stringValue_lte: String
+
+  """All values greater than the given value."""
+  stringValue_gt: String
+
+  """All values greater than or equal the given value."""
+  stringValue_gte: String
+
+  """All values containing the given string."""
+  stringValue_contains: String
+
+  """All values not containing the given string."""
+  stringValue_not_contains: String
+
+  """All values starting with the given string."""
+  stringValue_starts_with: String
+
+  """All values not starting with the given string."""
+  stringValue_not_starts_with: String
+
+  """All values ending with the given string."""
+  stringValue_ends_with: String
+
+  """All values not ending with the given string."""
+  stringValue_not_ends_with: String
+}
+
+type MeasurementSubscriptionPayload {
+  mutation: MutationType!
+  node: Measurement
+  updatedFields: [String!]
+  previousValues: MeasurementPreviousValues
+}
+
+input MeasurementSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [MeasurementSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [MeasurementSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [MeasurementSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: MeasurementWhereInput
+}
+
+input MeasurementUpdateDataInput {
+  intValue: Int
+  floatValue: Float
+  stringValue: String
+}
+
+input MeasurementUpdateInput {
+  intValue: Int
+  floatValue: Float
+  stringValue: String
+}
+
+input MeasurementUpdateManyDataInput {
+  intValue: Int
+  floatValue: Float
+  stringValue: String
+}
+
+input MeasurementUpdateManyInput {
+  create: [MeasurementCreateInput!]
+  connect: [MeasurementWhereUniqueInput!]
+  set: [MeasurementWhereUniqueInput!]
+  disconnect: [MeasurementWhereUniqueInput!]
+  delete: [MeasurementWhereUniqueInput!]
+  update: [MeasurementUpdateWithWhereUniqueNestedInput!]
+  updateMany: [MeasurementUpdateManyWithWhereNestedInput!]
+  deleteMany: [MeasurementScalarWhereInput!]
+  upsert: [MeasurementUpsertWithWhereUniqueNestedInput!]
+}
+
+input MeasurementUpdateManyMutationInput {
+  intValue: Int
+  floatValue: Float
+  stringValue: String
+}
+
+input MeasurementUpdateManyWithWhereNestedInput {
+  where: MeasurementScalarWhereInput!
+  data: MeasurementUpdateManyDataInput!
+}
+
+input MeasurementUpdateWithWhereUniqueNestedInput {
+  where: MeasurementWhereUniqueInput!
+  data: MeasurementUpdateDataInput!
+}
+
+input MeasurementUpsertWithWhereUniqueNestedInput {
+  where: MeasurementWhereUniqueInput!
+  update: MeasurementUpdateDataInput!
+  create: MeasurementCreateInput!
+}
+
+input MeasurementWhereInput {
+  """Logical AND on all given filters."""
+  AND: [MeasurementWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [MeasurementWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [MeasurementWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  createdAt: DateTime
+
+  """All values that are not equal to given value."""
+  createdAt_not: DateTime
+
+  """All values that are contained in given list."""
+  createdAt_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  createdAt_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  createdAt_lt: DateTime
+
+  """All values less than or equal the given value."""
+  createdAt_lte: DateTime
+
+  """All values greater than the given value."""
+  createdAt_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  createdAt_gte: DateTime
+  intValue: Int
+
+  """All values that are not equal to given value."""
+  intValue_not: Int
+
+  """All values that are contained in given list."""
+  intValue_in: [Int!]
+
+  """All values that are not contained in given list."""
+  intValue_not_in: [Int!]
+
+  """All values less than the given value."""
+  intValue_lt: Int
+
+  """All values less than or equal the given value."""
+  intValue_lte: Int
+
+  """All values greater than the given value."""
+  intValue_gt: Int
+
+  """All values greater than or equal the given value."""
+  intValue_gte: Int
+  floatValue: Float
+
+  """All values that are not equal to given value."""
+  floatValue_not: Float
+
+  """All values that are contained in given list."""
+  floatValue_in: [Float!]
+
+  """All values that are not contained in given list."""
+  floatValue_not_in: [Float!]
+
+  """All values less than the given value."""
+  floatValue_lt: Float
+
+  """All values less than or equal the given value."""
+  floatValue_lte: Float
+
+  """All values greater than the given value."""
+  floatValue_gt: Float
+
+  """All values greater than or equal the given value."""
+  floatValue_gte: Float
+  stringValue: String
+
+  """All values that are not equal to given value."""
+  stringValue_not: String
+
+  """All values that are contained in given list."""
+  stringValue_in: [String!]
+
+  """All values that are not contained in given list."""
+  stringValue_not_in: [String!]
+
+  """All values less than the given value."""
+  stringValue_lt: String
+
+  """All values less than or equal the given value."""
+  stringValue_lte: String
+
+  """All values greater than the given value."""
+  stringValue_gt: String
+
+  """All values greater than or equal the given value."""
+  stringValue_gte: String
+
+  """All values containing the given string."""
+  stringValue_contains: String
+
+  """All values not containing the given string."""
+  stringValue_not_contains: String
+
+  """All values starting with the given string."""
+  stringValue_starts_with: String
+
+  """All values not starting with the given string."""
+  stringValue_not_starts_with: String
+
+  """All values ending with the given string."""
+  stringValue_ends_with: String
+
+  """All values not ending with the given string."""
+  stringValue_not_ends_with: String
+}
+
+input MeasurementWhereUniqueInput {
+  id: ID
+}
+
+type Meta implements Node {
+  id: ID!
+  key: String!
+  value: String!
+}
+
+"""A connection to a list of items."""
+type MetaConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [MetaEdge]!
+  aggregate: AggregateMeta!
+}
+
+input MetaCreateInput {
+  key: String!
+  value: String!
+}
+
+"""An edge in a connection."""
+type MetaEdge {
+  """The item at the end of the edge."""
+  node: Meta!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum MetaOrderByInput {
+  id_ASC
+  id_DESC
+  key_ASC
+  key_DESC
+  value_ASC
+  value_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type MetaPreviousValues {
+  id: ID!
+  key: String!
+  value: String!
+}
+
+type MetaSubscriptionPayload {
+  mutation: MutationType!
+  node: Meta
+  updatedFields: [String!]
+  previousValues: MetaPreviousValues
+}
+
+input MetaSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [MetaSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [MetaSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [MetaSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: MetaWhereInput
+}
+
+input MetaUpdateInput {
+  key: String
+  value: String
+}
+
+input MetaUpdateManyMutationInput {
+  key: String
+  value: String
+}
+
+input MetaWhereInput {
+  """Logical AND on all given filters."""
+  AND: [MetaWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [MetaWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [MetaWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  key: String
+
+  """All values that are not equal to given value."""
+  key_not: String
+
+  """All values that are contained in given list."""
+  key_in: [String!]
+
+  """All values that are not contained in given list."""
+  key_not_in: [String!]
+
+  """All values less than the given value."""
+  key_lt: String
+
+  """All values less than or equal the given value."""
+  key_lte: String
+
+  """All values greater than the given value."""
+  key_gt: String
+
+  """All values greater than or equal the given value."""
+  key_gte: String
+
+  """All values containing the given string."""
+  key_contains: String
+
+  """All values not containing the given string."""
+  key_not_contains: String
+
+  """All values starting with the given string."""
+  key_starts_with: String
+
+  """All values not starting with the given string."""
+  key_not_starts_with: String
+
+  """All values ending with the given string."""
+  key_ends_with: String
+
+  """All values not ending with the given string."""
+  key_not_ends_with: String
+  value: String
+
+  """All values that are not equal to given value."""
+  value_not: String
+
+  """All values that are contained in given list."""
+  value_in: [String!]
+
+  """All values that are not contained in given list."""
+  value_not_in: [String!]
+
+  """All values less than the given value."""
+  value_lt: String
+
+  """All values less than or equal the given value."""
+  value_lte: String
+
+  """All values greater than the given value."""
+  value_gt: String
+
+  """All values greater than or equal the given value."""
+  value_gte: String
+
+  """All values containing the given string."""
+  value_contains: String
+
+  """All values not containing the given string."""
+  value_not_contains: String
+
+  """All values starting with the given string."""
+  value_starts_with: String
+
+  """All values not starting with the given string."""
+  value_not_starts_with: String
+
+  """All values ending with the given string."""
+  value_ends_with: String
+
+  """All values not ending with the given string."""
+  value_not_ends_with: String
+}
+
+input MetaWhereUniqueInput {
+  id: ID
+}
+
+type Mutation {
+  createMeta(data: MetaCreateInput!): Meta!
+  createProject(data: ProjectCreateInput!): Project!
+  createDUT(data: DUTCreateInput!): DUT!
+  createCharacterization(data: CharacterizationCreateInput!): Characterization!
+  createProjectVersion(data: ProjectVersionCreateInput!): ProjectVersion!
+  createSetupHardware(data: SetupHardwareCreateInput!): SetupHardware!
+  createMeasurement(data: MeasurementCreateInput!): Measurement!
+  createSetupHardwareInstance(data: SetupHardwareInstanceCreateInput!): SetupHardwareInstance!
+  createMeasurementRun(data: MeasurementRunCreateInput!): MeasurementRun!
+  createSetup(data: SetupCreateInput!): Setup!
+  createInstrumentParameter(data: InstrumentParameterCreateInput!): InstrumentParameter!
+  createInstrumentSubsystem(data: InstrumentSubsystemCreateInput!): InstrumentSubsystem!
+  createInstrumentInstance(data: InstrumentInstanceCreateInput!): InstrumentInstance!
+  createInstrumentCommand(data: InstrumentCommandCreateInput!): InstrumentCommand!
+  createEvent(data: EventCreateInput!): Event!
+  createUser(data: UserCreateInput!): User!
+  createComment(data: CommentCreateInput!): Comment!
+  createInstrument(data: InstrumentCreateInput!): Instrument!
+  createFile(data: FileCreateInput!): File!
+  updateMeta(data: MetaUpdateInput!, where: MetaWhereUniqueInput!): Meta
+  updateProject(data: ProjectUpdateInput!, where: ProjectWhereUniqueInput!): Project
+  updateDUT(data: DUTUpdateInput!, where: DUTWhereUniqueInput!): DUT
+  updateCharacterization(data: CharacterizationUpdateInput!, where: CharacterizationWhereUniqueInput!): Characterization
+  updateProjectVersion(data: ProjectVersionUpdateInput!, where: ProjectVersionWhereUniqueInput!): ProjectVersion
+  updateSetupHardware(data: SetupHardwareUpdateInput!, where: SetupHardwareWhereUniqueInput!): SetupHardware
+  updateMeasurement(data: MeasurementUpdateInput!, where: MeasurementWhereUniqueInput!): Measurement
+  updateSetupHardwareInstance(data: SetupHardwareInstanceUpdateInput!, where: SetupHardwareInstanceWhereUniqueInput!): SetupHardwareInstance
+  updateMeasurementRun(data: MeasurementRunUpdateInput!, where: MeasurementRunWhereUniqueInput!): MeasurementRun
+  updateSetup(data: SetupUpdateInput!, where: SetupWhereUniqueInput!): Setup
+  updateInstrumentParameter(data: InstrumentParameterUpdateInput!, where: InstrumentParameterWhereUniqueInput!): InstrumentParameter
+  updateInstrumentSubsystem(data: InstrumentSubsystemUpdateInput!, where: InstrumentSubsystemWhereUniqueInput!): InstrumentSubsystem
+  updateInstrumentInstance(data: InstrumentInstanceUpdateInput!, where: InstrumentInstanceWhereUniqueInput!): InstrumentInstance
+  updateInstrumentCommand(data: InstrumentCommandUpdateInput!, where: InstrumentCommandWhereUniqueInput!): InstrumentCommand
+  updateEvent(data: EventUpdateInput!, where: EventWhereUniqueInput!): Event
+  updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput!): User
+  updateComment(data: CommentUpdateInput!, where: CommentWhereUniqueInput!): Comment
+  updateInstrument(data: InstrumentUpdateInput!, where: InstrumentWhereUniqueInput!): Instrument
+  updateFile(data: FileUpdateInput!, where: FileWhereUniqueInput!): File
+  deleteMeta(where: MetaWhereUniqueInput!): Meta
+  deleteProject(where: ProjectWhereUniqueInput!): Project
+  deleteDUT(where: DUTWhereUniqueInput!): DUT
+  deleteCharacterization(where: CharacterizationWhereUniqueInput!): Characterization
+  deleteProjectVersion(where: ProjectVersionWhereUniqueInput!): ProjectVersion
+  deleteSetupHardware(where: SetupHardwareWhereUniqueInput!): SetupHardware
+  deleteMeasurement(where: MeasurementWhereUniqueInput!): Measurement
+  deleteSetupHardwareInstance(where: SetupHardwareInstanceWhereUniqueInput!): SetupHardwareInstance
+  deleteMeasurementRun(where: MeasurementRunWhereUniqueInput!): MeasurementRun
+  deleteSetup(where: SetupWhereUniqueInput!): Setup
+  deleteInstrumentParameter(where: InstrumentParameterWhereUniqueInput!): InstrumentParameter
+  deleteInstrumentSubsystem(where: InstrumentSubsystemWhereUniqueInput!): InstrumentSubsystem
+  deleteInstrumentInstance(where: InstrumentInstanceWhereUniqueInput!): InstrumentInstance
+  deleteInstrumentCommand(where: InstrumentCommandWhereUniqueInput!): InstrumentCommand
+  deleteEvent(where: EventWhereUniqueInput!): Event
+  deleteUser(where: UserWhereUniqueInput!): User
+  deleteComment(where: CommentWhereUniqueInput!): Comment
+  deleteInstrument(where: InstrumentWhereUniqueInput!): Instrument
+  deleteFile(where: FileWhereUniqueInput!): File
+  upsertMeta(where: MetaWhereUniqueInput!, create: MetaCreateInput!, update: MetaUpdateInput!): Meta!
+  upsertProject(where: ProjectWhereUniqueInput!, create: ProjectCreateInput!, update: ProjectUpdateInput!): Project!
+  upsertDUT(where: DUTWhereUniqueInput!, create: DUTCreateInput!, update: DUTUpdateInput!): DUT!
+  upsertCharacterization(where: CharacterizationWhereUniqueInput!, create: CharacterizationCreateInput!, update: CharacterizationUpdateInput!): Characterization!
+  upsertProjectVersion(where: ProjectVersionWhereUniqueInput!, create: ProjectVersionCreateInput!, update: ProjectVersionUpdateInput!): ProjectVersion!
+  upsertSetupHardware(where: SetupHardwareWhereUniqueInput!, create: SetupHardwareCreateInput!, update: SetupHardwareUpdateInput!): SetupHardware!
+  upsertMeasurement(where: MeasurementWhereUniqueInput!, create: MeasurementCreateInput!, update: MeasurementUpdateInput!): Measurement!
+  upsertSetupHardwareInstance(where: SetupHardwareInstanceWhereUniqueInput!, create: SetupHardwareInstanceCreateInput!, update: SetupHardwareInstanceUpdateInput!): SetupHardwareInstance!
+  upsertMeasurementRun(where: MeasurementRunWhereUniqueInput!, create: MeasurementRunCreateInput!, update: MeasurementRunUpdateInput!): MeasurementRun!
+  upsertSetup(where: SetupWhereUniqueInput!, create: SetupCreateInput!, update: SetupUpdateInput!): Setup!
+  upsertInstrumentParameter(where: InstrumentParameterWhereUniqueInput!, create: InstrumentParameterCreateInput!, update: InstrumentParameterUpdateInput!): InstrumentParameter!
+  upsertInstrumentSubsystem(where: InstrumentSubsystemWhereUniqueInput!, create: InstrumentSubsystemCreateInput!, update: InstrumentSubsystemUpdateInput!): InstrumentSubsystem!
+  upsertInstrumentInstance(where: InstrumentInstanceWhereUniqueInput!, create: InstrumentInstanceCreateInput!, update: InstrumentInstanceUpdateInput!): InstrumentInstance!
+  upsertInstrumentCommand(where: InstrumentCommandWhereUniqueInput!, create: InstrumentCommandCreateInput!, update: InstrumentCommandUpdateInput!): InstrumentCommand!
+  upsertEvent(where: EventWhereUniqueInput!, create: EventCreateInput!, update: EventUpdateInput!): Event!
+  upsertUser(where: UserWhereUniqueInput!, create: UserCreateInput!, update: UserUpdateInput!): User!
+  upsertComment(where: CommentWhereUniqueInput!, create: CommentCreateInput!, update: CommentUpdateInput!): Comment!
+  upsertInstrument(where: InstrumentWhereUniqueInput!, create: InstrumentCreateInput!, update: InstrumentUpdateInput!): Instrument!
+  upsertFile(where: FileWhereUniqueInput!, create: FileCreateInput!, update: FileUpdateInput!): File!
+  updateManyMetas(data: MetaUpdateManyMutationInput!, where: MetaWhereInput): BatchPayload!
+  updateManyProjects(data: ProjectUpdateManyMutationInput!, where: ProjectWhereInput): BatchPayload!
+  updateManyDUTs(data: DUTUpdateManyMutationInput!, where: DUTWhereInput): BatchPayload!
+  updateManyCharacterizations(data: CharacterizationUpdateManyMutationInput!, where: CharacterizationWhereInput): BatchPayload!
+  updateManyProjectVersions(data: ProjectVersionUpdateManyMutationInput!, where: ProjectVersionWhereInput): BatchPayload!
+  updateManySetupHardwares(data: SetupHardwareUpdateManyMutationInput!, where: SetupHardwareWhereInput): BatchPayload!
+  updateManyMeasurements(data: MeasurementUpdateManyMutationInput!, where: MeasurementWhereInput): BatchPayload!
+  updateManySetupHardwareInstances(data: SetupHardwareInstanceUpdateManyMutationInput!, where: SetupHardwareInstanceWhereInput): BatchPayload!
+  updateManyMeasurementRuns(data: MeasurementRunUpdateManyMutationInput!, where: MeasurementRunWhereInput): BatchPayload!
+  updateManySetups(data: SetupUpdateManyMutationInput!, where: SetupWhereInput): BatchPayload!
+  updateManyInstrumentParameters(data: InstrumentParameterUpdateManyMutationInput!, where: InstrumentParameterWhereInput): BatchPayload!
+  updateManyInstrumentSubsystems(data: InstrumentSubsystemUpdateManyMutationInput!, where: InstrumentSubsystemWhereInput): BatchPayload!
+  updateManyInstrumentInstances(data: InstrumentInstanceUpdateManyMutationInput!, where: InstrumentInstanceWhereInput): BatchPayload!
+  updateManyInstrumentCommands(data: InstrumentCommandUpdateManyMutationInput!, where: InstrumentCommandWhereInput): BatchPayload!
+  updateManyEvents(data: EventUpdateManyMutationInput!, where: EventWhereInput): BatchPayload!
+  updateManyUsers(data: UserUpdateManyMutationInput!, where: UserWhereInput): BatchPayload!
+  updateManyComments(data: CommentUpdateManyMutationInput!, where: CommentWhereInput): BatchPayload!
+  updateManyInstruments(data: InstrumentUpdateManyMutationInput!, where: InstrumentWhereInput): BatchPayload!
+  updateManyFiles(data: FileUpdateManyMutationInput!, where: FileWhereInput): BatchPayload!
+  deleteManyMetas(where: MetaWhereInput): BatchPayload!
+  deleteManyProjects(where: ProjectWhereInput): BatchPayload!
+  deleteManyDUTs(where: DUTWhereInput): BatchPayload!
+  deleteManyCharacterizations(where: CharacterizationWhereInput): BatchPayload!
+  deleteManyProjectVersions(where: ProjectVersionWhereInput): BatchPayload!
+  deleteManySetupHardwares(where: SetupHardwareWhereInput): BatchPayload!
+  deleteManyMeasurements(where: MeasurementWhereInput): BatchPayload!
+  deleteManySetupHardwareInstances(where: SetupHardwareInstanceWhereInput): BatchPayload!
+  deleteManyMeasurementRuns(where: MeasurementRunWhereInput): BatchPayload!
+  deleteManySetups(where: SetupWhereInput): BatchPayload!
+  deleteManyInstrumentParameters(where: InstrumentParameterWhereInput): BatchPayload!
+  deleteManyInstrumentSubsystems(where: InstrumentSubsystemWhereInput): BatchPayload!
+  deleteManyInstrumentInstances(where: InstrumentInstanceWhereInput): BatchPayload!
+  deleteManyInstrumentCommands(where: InstrumentCommandWhereInput): BatchPayload!
+  deleteManyEvents(where: EventWhereInput): BatchPayload!
+  deleteManyUsers(where: UserWhereInput): BatchPayload!
+  deleteManyComments(where: CommentWhereInput): BatchPayload!
+  deleteManyInstruments(where: InstrumentWhereInput): BatchPayload!
+  deleteManyFiles(where: FileWhereInput): BatchPayload!
+}
+
+enum MutationType {
+  CREATED
+  UPDATED
+  DELETED
+}
+
+"""An object with an ID"""
+interface Node {
+  """The id of the object."""
+  id: ID!
+}
+
+"""Information about pagination in a connection."""
+type PageInfo {
+  """When paginating forwards, are there more items?"""
+  hasNextPage: Boolean!
+
+  """When paginating backwards, are there more items?"""
+  hasPreviousPage: Boolean!
+
+  """When paginating backwards, the cursor to continue."""
+  startCursor: String
+
+  """When paginating forwards, the cursor to continue."""
+  endCursor: String
+}
+
+type Project implements Node {
+  id: ID!
+  name: String!
+  abbreviation: String!
+  description: String
+  files(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File!]
+  versions(where: ProjectVersionWhereInput, orderBy: ProjectVersionOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [ProjectVersion!]
+}
+
+"""A connection to a list of items."""
+type ProjectConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [ProjectEdge]!
+  aggregate: AggregateProject!
+}
+
+input ProjectCreateInput {
+  name: String!
+  abbreviation: String!
+  description: String
+  files: FileCreateManyInput
+  versions: ProjectVersionCreateManyWithoutProjectInput
+}
+
+input ProjectCreateOneWithoutVersionsInput {
+  create: ProjectCreateWithoutVersionsInput
+  connect: ProjectWhereUniqueInput
+}
+
+input ProjectCreateWithoutVersionsInput {
+  name: String!
+  abbreviation: String!
+  description: String
+  files: FileCreateManyInput
+}
+
+"""An edge in a connection."""
+type ProjectEdge {
+  """The item at the end of the edge."""
+  node: Project!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum ProjectOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  abbreviation_ASC
+  abbreviation_DESC
+  description_ASC
+  description_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type ProjectPreviousValues {
+  id: ID!
+  name: String!
+  abbreviation: String!
+  description: String
+}
+
+type ProjectSubscriptionPayload {
+  mutation: MutationType!
+  node: Project
+  updatedFields: [String!]
+  previousValues: ProjectPreviousValues
+}
+
+input ProjectSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [ProjectSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [ProjectSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [ProjectSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: ProjectWhereInput
+}
+
+input ProjectUpdateInput {
+  name: String
+  abbreviation: String
+  description: String
+  files: FileUpdateManyInput
+  versions: ProjectVersionUpdateManyWithoutProjectInput
+}
+
+input ProjectUpdateManyMutationInput {
+  name: String
+  abbreviation: String
+  description: String
+}
+
+input ProjectUpdateOneRequiredWithoutVersionsInput {
+  create: ProjectCreateWithoutVersionsInput
+  connect: ProjectWhereUniqueInput
+  update: ProjectUpdateWithoutVersionsDataInput
+  upsert: ProjectUpsertWithoutVersionsInput
+}
+
+input ProjectUpdateWithoutVersionsDataInput {
+  name: String
+  abbreviation: String
+  description: String
+  files: FileUpdateManyInput
+}
+
+input ProjectUpsertWithoutVersionsInput {
+  update: ProjectUpdateWithoutVersionsDataInput!
+  create: ProjectCreateWithoutVersionsInput!
+}
+
+type ProjectVersion implements Node {
+  id: ID!
+  name: String!
+  changes: [String!]!
+  date: DateTime!
+  project: Project!
+}
+
+"""A connection to a list of items."""
+type ProjectVersionConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [ProjectVersionEdge]!
+  aggregate: AggregateProjectVersion!
+}
+
+input ProjectVersionCreatechangesInput {
+  set: [String!]
+}
+
+input ProjectVersionCreateInput {
+  name: String!
+  date: DateTime!
+  changes: ProjectVersionCreatechangesInput
+  project: ProjectCreateOneWithoutVersionsInput!
+}
+
+input ProjectVersionCreateManyWithoutProjectInput {
+  create: [ProjectVersionCreateWithoutProjectInput!]
+  connect: [ProjectVersionWhereUniqueInput!]
+}
+
+input ProjectVersionCreateOneInput {
+  create: ProjectVersionCreateInput
+  connect: ProjectVersionWhereUniqueInput
+}
+
+input ProjectVersionCreateWithoutProjectInput {
+  name: String!
+  date: DateTime!
+  changes: ProjectVersionCreatechangesInput
+}
+
+"""An edge in a connection."""
+type ProjectVersionEdge {
+  """The item at the end of the edge."""
+  node: ProjectVersion!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum ProjectVersionOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  date_ASC
+  date_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type ProjectVersionPreviousValues {
+  id: ID!
+  name: String!
+  changes: [String!]!
+  date: DateTime!
+}
+
+input ProjectVersionScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [ProjectVersionScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [ProjectVersionScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [ProjectVersionScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  date: DateTime
+
+  """All values that are not equal to given value."""
+  date_not: DateTime
+
+  """All values that are contained in given list."""
+  date_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  date_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  date_lt: DateTime
+
+  """All values less than or equal the given value."""
+  date_lte: DateTime
+
+  """All values greater than the given value."""
+  date_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  date_gte: DateTime
+}
+
+type ProjectVersionSubscriptionPayload {
+  mutation: MutationType!
+  node: ProjectVersion
+  updatedFields: [String!]
+  previousValues: ProjectVersionPreviousValues
+}
+
+input ProjectVersionSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [ProjectVersionSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [ProjectVersionSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [ProjectVersionSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: ProjectVersionWhereInput
+}
+
+input ProjectVersionUpdatechangesInput {
+  set: [String!]
+}
+
+input ProjectVersionUpdateDataInput {
+  name: String
+  date: DateTime
+  changes: ProjectVersionUpdatechangesInput
+  project: ProjectUpdateOneRequiredWithoutVersionsInput
+}
+
+input ProjectVersionUpdateInput {
+  name: String
+  date: DateTime
+  changes: ProjectVersionUpdatechangesInput
+  project: ProjectUpdateOneRequiredWithoutVersionsInput
+}
+
+input ProjectVersionUpdateManyDataInput {
+  name: String
+  date: DateTime
+  changes: ProjectVersionUpdatechangesInput
+}
+
+input ProjectVersionUpdateManyMutationInput {
+  name: String
+  date: DateTime
+  changes: ProjectVersionUpdatechangesInput
+}
+
+input ProjectVersionUpdateManyWithoutProjectInput {
+  create: [ProjectVersionCreateWithoutProjectInput!]
+  connect: [ProjectVersionWhereUniqueInput!]
+  set: [ProjectVersionWhereUniqueInput!]
+  disconnect: [ProjectVersionWhereUniqueInput!]
+  delete: [ProjectVersionWhereUniqueInput!]
+  update: [ProjectVersionUpdateWithWhereUniqueWithoutProjectInput!]
+  updateMany: [ProjectVersionUpdateManyWithWhereNestedInput!]
+  deleteMany: [ProjectVersionScalarWhereInput!]
+  upsert: [ProjectVersionUpsertWithWhereUniqueWithoutProjectInput!]
+}
+
+input ProjectVersionUpdateManyWithWhereNestedInput {
+  where: ProjectVersionScalarWhereInput!
+  data: ProjectVersionUpdateManyDataInput!
+}
+
+input ProjectVersionUpdateOneRequiredInput {
+  create: ProjectVersionCreateInput
+  connect: ProjectVersionWhereUniqueInput
+  update: ProjectVersionUpdateDataInput
+  upsert: ProjectVersionUpsertNestedInput
+}
+
+input ProjectVersionUpdateWithoutProjectDataInput {
+  name: String
+  date: DateTime
+  changes: ProjectVersionUpdatechangesInput
+}
+
+input ProjectVersionUpdateWithWhereUniqueWithoutProjectInput {
+  where: ProjectVersionWhereUniqueInput!
+  data: ProjectVersionUpdateWithoutProjectDataInput!
+}
+
+input ProjectVersionUpsertNestedInput {
+  update: ProjectVersionUpdateDataInput!
+  create: ProjectVersionCreateInput!
+}
+
+input ProjectVersionUpsertWithWhereUniqueWithoutProjectInput {
+  where: ProjectVersionWhereUniqueInput!
+  update: ProjectVersionUpdateWithoutProjectDataInput!
+  create: ProjectVersionCreateWithoutProjectInput!
+}
+
+input ProjectVersionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [ProjectVersionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [ProjectVersionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [ProjectVersionWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  date: DateTime
+
+  """All values that are not equal to given value."""
+  date_not: DateTime
+
+  """All values that are contained in given list."""
+  date_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  date_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  date_lt: DateTime
+
+  """All values less than or equal the given value."""
+  date_lte: DateTime
+
+  """All values greater than the given value."""
+  date_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  date_gte: DateTime
+  project: ProjectWhereInput
+}
+
+input ProjectVersionWhereUniqueInput {
+  id: ID
+  name: String
+}
+
+input ProjectWhereInput {
+  """Logical AND on all given filters."""
+  AND: [ProjectWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [ProjectWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [ProjectWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  abbreviation: String
+
+  """All values that are not equal to given value."""
+  abbreviation_not: String
+
+  """All values that are contained in given list."""
+  abbreviation_in: [String!]
+
+  """All values that are not contained in given list."""
+  abbreviation_not_in: [String!]
+
+  """All values less than the given value."""
+  abbreviation_lt: String
+
+  """All values less than or equal the given value."""
+  abbreviation_lte: String
+
+  """All values greater than the given value."""
+  abbreviation_gt: String
+
+  """All values greater than or equal the given value."""
+  abbreviation_gte: String
+
+  """All values containing the given string."""
+  abbreviation_contains: String
+
+  """All values not containing the given string."""
+  abbreviation_not_contains: String
+
+  """All values starting with the given string."""
+  abbreviation_starts_with: String
+
+  """All values not starting with the given string."""
+  abbreviation_not_starts_with: String
+
+  """All values ending with the given string."""
+  abbreviation_ends_with: String
+
+  """All values not ending with the given string."""
+  abbreviation_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  files_every: FileWhereInput
+  files_some: FileWhereInput
+  files_none: FileWhereInput
+  versions_every: ProjectVersionWhereInput
+  versions_some: ProjectVersionWhereInput
+  versions_none: ProjectVersionWhereInput
+}
+
+input ProjectWhereUniqueInput {
+  id: ID
+  name: String
+  abbreviation: String
+}
+
+type Query {
+  metas(where: MetaWhereInput, orderBy: MetaOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Meta]!
+  projects(where: ProjectWhereInput, orderBy: ProjectOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Project]!
+  dUTs(where: DUTWhereInput, orderBy: DUTOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [DUT]!
+  characterizations(where: CharacterizationWhereInput, orderBy: CharacterizationOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Characterization]!
+  projectVersions(where: ProjectVersionWhereInput, orderBy: ProjectVersionOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [ProjectVersion]!
+  setupHardwares(where: SetupHardwareWhereInput, orderBy: SetupHardwareOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [SetupHardware]!
+  measurements(where: MeasurementWhereInput, orderBy: MeasurementOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Measurement]!
+  setupHardwareInstances(where: SetupHardwareInstanceWhereInput, orderBy: SetupHardwareInstanceOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [SetupHardwareInstance]!
+  measurementRuns(where: MeasurementRunWhereInput, orderBy: MeasurementRunOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [MeasurementRun]!
+  setups(where: SetupWhereInput, orderBy: SetupOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Setup]!
+  instrumentParameters(where: InstrumentParameterWhereInput, orderBy: InstrumentParameterOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentParameter]!
+  instrumentSubsystems(where: InstrumentSubsystemWhereInput, orderBy: InstrumentSubsystemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentSubsystem]!
+  instrumentInstances(where: InstrumentInstanceWhereInput, orderBy: InstrumentInstanceOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentInstance]!
+  instrumentCommands(where: InstrumentCommandWhereInput, orderBy: InstrumentCommandOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentCommand]!
+  events(where: EventWhereInput, orderBy: EventOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Event]!
+  users(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User]!
+  comments(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Comment]!
+  instruments(where: InstrumentWhereInput, orderBy: InstrumentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Instrument]!
+  files(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File]!
+  meta(where: MetaWhereUniqueInput!): Meta
+  project(where: ProjectWhereUniqueInput!): Project
+  dUT(where: DUTWhereUniqueInput!): DUT
+  characterization(where: CharacterizationWhereUniqueInput!): Characterization
+  projectVersion(where: ProjectVersionWhereUniqueInput!): ProjectVersion
+  setupHardware(where: SetupHardwareWhereUniqueInput!): SetupHardware
+  measurement(where: MeasurementWhereUniqueInput!): Measurement
+  setupHardwareInstance(where: SetupHardwareInstanceWhereUniqueInput!): SetupHardwareInstance
+  measurementRun(where: MeasurementRunWhereUniqueInput!): MeasurementRun
+  setup(where: SetupWhereUniqueInput!): Setup
+  instrumentParameter(where: InstrumentParameterWhereUniqueInput!): InstrumentParameter
+  instrumentSubsystem(where: InstrumentSubsystemWhereUniqueInput!): InstrumentSubsystem
+  instrumentInstance(where: InstrumentInstanceWhereUniqueInput!): InstrumentInstance
+  instrumentCommand(where: InstrumentCommandWhereUniqueInput!): InstrumentCommand
+  event(where: EventWhereUniqueInput!): Event
+  user(where: UserWhereUniqueInput!): User
+  comment(where: CommentWhereUniqueInput!): Comment
+  instrument(where: InstrumentWhereUniqueInput!): Instrument
+  file(where: FileWhereUniqueInput!): File
+  metasConnection(where: MetaWhereInput, orderBy: MetaOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): MetaConnection!
+  projectsConnection(where: ProjectWhereInput, orderBy: ProjectOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): ProjectConnection!
+  dUTsConnection(where: DUTWhereInput, orderBy: DUTOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): DUTConnection!
+  characterizationsConnection(where: CharacterizationWhereInput, orderBy: CharacterizationOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): CharacterizationConnection!
+  projectVersionsConnection(where: ProjectVersionWhereInput, orderBy: ProjectVersionOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): ProjectVersionConnection!
+  setupHardwaresConnection(where: SetupHardwareWhereInput, orderBy: SetupHardwareOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): SetupHardwareConnection!
+  measurementsConnection(where: MeasurementWhereInput, orderBy: MeasurementOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): MeasurementConnection!
+  setupHardwareInstancesConnection(where: SetupHardwareInstanceWhereInput, orderBy: SetupHardwareInstanceOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): SetupHardwareInstanceConnection!
+  measurementRunsConnection(where: MeasurementRunWhereInput, orderBy: MeasurementRunOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): MeasurementRunConnection!
+  setupsConnection(where: SetupWhereInput, orderBy: SetupOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): SetupConnection!
+  instrumentParametersConnection(where: InstrumentParameterWhereInput, orderBy: InstrumentParameterOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): InstrumentParameterConnection!
+  instrumentSubsystemsConnection(where: InstrumentSubsystemWhereInput, orderBy: InstrumentSubsystemOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): InstrumentSubsystemConnection!
+  instrumentInstancesConnection(where: InstrumentInstanceWhereInput, orderBy: InstrumentInstanceOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): InstrumentInstanceConnection!
+  instrumentCommandsConnection(where: InstrumentCommandWhereInput, orderBy: InstrumentCommandOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): InstrumentCommandConnection!
+  eventsConnection(where: EventWhereInput, orderBy: EventOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): EventConnection!
+  usersConnection(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): UserConnection!
+  commentsConnection(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): CommentConnection!
+  instrumentsConnection(where: InstrumentWhereInput, orderBy: InstrumentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): InstrumentConnection!
+  filesConnection(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): FileConnection!
+
+  """Fetches an object given its ID"""
+  node(
+    """The ID of an object"""
+    id: ID!
+  ): Node
+}
+
+type Setup implements Node {
+  id: ID!
+  name: String!
+  description: String!
+  images(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File!]
+  comments(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Comment!]
+  setupHardware(where: SetupHardwareInstanceWhereInput, orderBy: SetupHardwareInstanceOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [SetupHardwareInstance!]
+  instruments(where: InstrumentInstanceWhereInput, orderBy: InstrumentInstanceOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [InstrumentInstance!]
+}
+
+"""A connection to a list of items."""
+type SetupConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [SetupEdge]!
+  aggregate: AggregateSetup!
+}
+
+input SetupCreateInput {
+  name: String!
+  description: String!
+  images: FileCreateManyInput
+  comments: CommentCreateManyInput
+  setupHardware: SetupHardwareInstanceCreateManyInput
+  instruments: InstrumentInstanceCreateManyInput
+}
+
+input SetupCreateOneInput {
+  create: SetupCreateInput
+  connect: SetupWhereUniqueInput
+}
+
+"""An edge in a connection."""
+type SetupEdge {
+  """The item at the end of the edge."""
+  node: Setup!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+type SetupHardware implements Node {
+  id: ID!
+  name: String!
+  description: String
+  images(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File!]
+}
+
+"""A connection to a list of items."""
+type SetupHardwareConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [SetupHardwareEdge]!
+  aggregate: AggregateSetupHardware!
+}
+
+input SetupHardwareCreateInput {
+  name: String!
+  description: String
+  images: FileCreateManyInput
+}
+
+input SetupHardwareCreateOneInput {
+  create: SetupHardwareCreateInput
+  connect: SetupHardwareWhereUniqueInput
+}
+
+"""An edge in a connection."""
+type SetupHardwareEdge {
+  """The item at the end of the edge."""
+  node: SetupHardware!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+type SetupHardwareInstance implements Node {
+  id: ID!
+  setupHardware: SetupHardware!
+  identifier: String!
+  images(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File!]
+}
+
+"""A connection to a list of items."""
+type SetupHardwareInstanceConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [SetupHardwareInstanceEdge]!
+  aggregate: AggregateSetupHardwareInstance!
+}
+
+input SetupHardwareInstanceCreateInput {
+  identifier: String!
+  setupHardware: SetupHardwareCreateOneInput!
+  images: FileCreateManyInput
+}
+
+input SetupHardwareInstanceCreateManyInput {
+  create: [SetupHardwareInstanceCreateInput!]
+  connect: [SetupHardwareInstanceWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type SetupHardwareInstanceEdge {
+  """The item at the end of the edge."""
+  node: SetupHardwareInstance!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum SetupHardwareInstanceOrderByInput {
+  id_ASC
+  id_DESC
+  identifier_ASC
+  identifier_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type SetupHardwareInstancePreviousValues {
+  id: ID!
+  identifier: String!
+}
+
+input SetupHardwareInstanceScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [SetupHardwareInstanceScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [SetupHardwareInstanceScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [SetupHardwareInstanceScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  identifier: String
+
+  """All values that are not equal to given value."""
+  identifier_not: String
+
+  """All values that are contained in given list."""
+  identifier_in: [String!]
+
+  """All values that are not contained in given list."""
+  identifier_not_in: [String!]
+
+  """All values less than the given value."""
+  identifier_lt: String
+
+  """All values less than or equal the given value."""
+  identifier_lte: String
+
+  """All values greater than the given value."""
+  identifier_gt: String
+
+  """All values greater than or equal the given value."""
+  identifier_gte: String
+
+  """All values containing the given string."""
+  identifier_contains: String
+
+  """All values not containing the given string."""
+  identifier_not_contains: String
+
+  """All values starting with the given string."""
+  identifier_starts_with: String
+
+  """All values not starting with the given string."""
+  identifier_not_starts_with: String
+
+  """All values ending with the given string."""
+  identifier_ends_with: String
+
+  """All values not ending with the given string."""
+  identifier_not_ends_with: String
+}
+
+type SetupHardwareInstanceSubscriptionPayload {
+  mutation: MutationType!
+  node: SetupHardwareInstance
+  updatedFields: [String!]
+  previousValues: SetupHardwareInstancePreviousValues
+}
+
+input SetupHardwareInstanceSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [SetupHardwareInstanceSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [SetupHardwareInstanceSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [SetupHardwareInstanceSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: SetupHardwareInstanceWhereInput
+}
+
+input SetupHardwareInstanceUpdateDataInput {
+  identifier: String
+  setupHardware: SetupHardwareUpdateOneRequiredInput
+  images: FileUpdateManyInput
+}
+
+input SetupHardwareInstanceUpdateInput {
+  identifier: String
+  setupHardware: SetupHardwareUpdateOneRequiredInput
+  images: FileUpdateManyInput
+}
+
+input SetupHardwareInstanceUpdateManyDataInput {
+  identifier: String
+}
+
+input SetupHardwareInstanceUpdateManyInput {
+  create: [SetupHardwareInstanceCreateInput!]
+  connect: [SetupHardwareInstanceWhereUniqueInput!]
+  set: [SetupHardwareInstanceWhereUniqueInput!]
+  disconnect: [SetupHardwareInstanceWhereUniqueInput!]
+  delete: [SetupHardwareInstanceWhereUniqueInput!]
+  update: [SetupHardwareInstanceUpdateWithWhereUniqueNestedInput!]
+  updateMany: [SetupHardwareInstanceUpdateManyWithWhereNestedInput!]
+  deleteMany: [SetupHardwareInstanceScalarWhereInput!]
+  upsert: [SetupHardwareInstanceUpsertWithWhereUniqueNestedInput!]
+}
+
+input SetupHardwareInstanceUpdateManyMutationInput {
+  identifier: String
+}
+
+input SetupHardwareInstanceUpdateManyWithWhereNestedInput {
+  where: SetupHardwareInstanceScalarWhereInput!
+  data: SetupHardwareInstanceUpdateManyDataInput!
+}
+
+input SetupHardwareInstanceUpdateWithWhereUniqueNestedInput {
+  where: SetupHardwareInstanceWhereUniqueInput!
+  data: SetupHardwareInstanceUpdateDataInput!
+}
+
+input SetupHardwareInstanceUpsertWithWhereUniqueNestedInput {
+  where: SetupHardwareInstanceWhereUniqueInput!
+  update: SetupHardwareInstanceUpdateDataInput!
+  create: SetupHardwareInstanceCreateInput!
+}
+
+input SetupHardwareInstanceWhereInput {
+  """Logical AND on all given filters."""
+  AND: [SetupHardwareInstanceWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [SetupHardwareInstanceWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [SetupHardwareInstanceWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  identifier: String
+
+  """All values that are not equal to given value."""
+  identifier_not: String
+
+  """All values that are contained in given list."""
+  identifier_in: [String!]
+
+  """All values that are not contained in given list."""
+  identifier_not_in: [String!]
+
+  """All values less than the given value."""
+  identifier_lt: String
+
+  """All values less than or equal the given value."""
+  identifier_lte: String
+
+  """All values greater than the given value."""
+  identifier_gt: String
+
+  """All values greater than or equal the given value."""
+  identifier_gte: String
+
+  """All values containing the given string."""
+  identifier_contains: String
+
+  """All values not containing the given string."""
+  identifier_not_contains: String
+
+  """All values starting with the given string."""
+  identifier_starts_with: String
+
+  """All values not starting with the given string."""
+  identifier_not_starts_with: String
+
+  """All values ending with the given string."""
+  identifier_ends_with: String
+
+  """All values not ending with the given string."""
+  identifier_not_ends_with: String
+  setupHardware: SetupHardwareWhereInput
+  images_every: FileWhereInput
+  images_some: FileWhereInput
+  images_none: FileWhereInput
+}
+
+input SetupHardwareInstanceWhereUniqueInput {
+  id: ID
+}
+
+enum SetupHardwareOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type SetupHardwarePreviousValues {
+  id: ID!
+  name: String!
+  description: String
+}
+
+type SetupHardwareSubscriptionPayload {
+  mutation: MutationType!
+  node: SetupHardware
+  updatedFields: [String!]
+  previousValues: SetupHardwarePreviousValues
+}
+
+input SetupHardwareSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [SetupHardwareSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [SetupHardwareSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [SetupHardwareSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: SetupHardwareWhereInput
+}
+
+input SetupHardwareUpdateDataInput {
+  name: String
+  description: String
+  images: FileUpdateManyInput
+}
+
+input SetupHardwareUpdateInput {
+  name: String
+  description: String
+  images: FileUpdateManyInput
+}
+
+input SetupHardwareUpdateManyMutationInput {
+  name: String
+  description: String
+}
+
+input SetupHardwareUpdateOneRequiredInput {
+  create: SetupHardwareCreateInput
+  connect: SetupHardwareWhereUniqueInput
+  update: SetupHardwareUpdateDataInput
+  upsert: SetupHardwareUpsertNestedInput
+}
+
+input SetupHardwareUpsertNestedInput {
+  update: SetupHardwareUpdateDataInput!
+  create: SetupHardwareCreateInput!
+}
+
+input SetupHardwareWhereInput {
+  """Logical AND on all given filters."""
+  AND: [SetupHardwareWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [SetupHardwareWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [SetupHardwareWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  images_every: FileWhereInput
+  images_some: FileWhereInput
+  images_none: FileWhereInput
+}
+
+input SetupHardwareWhereUniqueInput {
+  id: ID
+}
+
+enum SetupOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type SetupPreviousValues {
+  id: ID!
+  name: String!
+  description: String!
+}
+
+type SetupSubscriptionPayload {
+  mutation: MutationType!
+  node: Setup
+  updatedFields: [String!]
+  previousValues: SetupPreviousValues
+}
+
+input SetupSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [SetupSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [SetupSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [SetupSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: SetupWhereInput
+}
+
+input SetupUpdateDataInput {
+  name: String
+  description: String
+  images: FileUpdateManyInput
+  comments: CommentUpdateManyInput
+  setupHardware: SetupHardwareInstanceUpdateManyInput
+  instruments: InstrumentInstanceUpdateManyInput
+}
+
+input SetupUpdateInput {
+  name: String
+  description: String
+  images: FileUpdateManyInput
+  comments: CommentUpdateManyInput
+  setupHardware: SetupHardwareInstanceUpdateManyInput
+  instruments: InstrumentInstanceUpdateManyInput
+}
+
+input SetupUpdateManyMutationInput {
+  name: String
+  description: String
+}
+
+input SetupUpdateOneRequiredInput {
+  create: SetupCreateInput
+  connect: SetupWhereUniqueInput
+  update: SetupUpdateDataInput
+  upsert: SetupUpsertNestedInput
+}
+
+input SetupUpsertNestedInput {
+  update: SetupUpdateDataInput!
+  create: SetupCreateInput!
+}
+
+input SetupWhereInput {
+  """Logical AND on all given filters."""
+  AND: [SetupWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [SetupWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [SetupWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  description: String
+
+  """All values that are not equal to given value."""
+  description_not: String
+
+  """All values that are contained in given list."""
+  description_in: [String!]
+
+  """All values that are not contained in given list."""
+  description_not_in: [String!]
+
+  """All values less than the given value."""
+  description_lt: String
+
+  """All values less than or equal the given value."""
+  description_lte: String
+
+  """All values greater than the given value."""
+  description_gt: String
+
+  """All values greater than or equal the given value."""
+  description_gte: String
+
+  """All values containing the given string."""
+  description_contains: String
+
+  """All values not containing the given string."""
+  description_not_contains: String
+
+  """All values starting with the given string."""
+  description_starts_with: String
+
+  """All values not starting with the given string."""
+  description_not_starts_with: String
+
+  """All values ending with the given string."""
+  description_ends_with: String
+
+  """All values not ending with the given string."""
+  description_not_ends_with: String
+  images_every: FileWhereInput
+  images_some: FileWhereInput
+  images_none: FileWhereInput
+  comments_every: CommentWhereInput
+  comments_some: CommentWhereInput
+  comments_none: CommentWhereInput
+  setupHardware_every: SetupHardwareInstanceWhereInput
+  setupHardware_some: SetupHardwareInstanceWhereInput
+  setupHardware_none: SetupHardwareInstanceWhereInput
+  instruments_every: InstrumentInstanceWhereInput
+  instruments_some: InstrumentInstanceWhereInput
+  instruments_none: InstrumentInstanceWhereInput
+}
+
+input SetupWhereUniqueInput {
+  id: ID
+}
+
+type Subscription {
+  meta(where: MetaSubscriptionWhereInput): MetaSubscriptionPayload
+  project(where: ProjectSubscriptionWhereInput): ProjectSubscriptionPayload
+  dUT(where: DUTSubscriptionWhereInput): DUTSubscriptionPayload
+  characterization(where: CharacterizationSubscriptionWhereInput): CharacterizationSubscriptionPayload
+  projectVersion(where: ProjectVersionSubscriptionWhereInput): ProjectVersionSubscriptionPayload
+  setupHardware(where: SetupHardwareSubscriptionWhereInput): SetupHardwareSubscriptionPayload
+  measurement(where: MeasurementSubscriptionWhereInput): MeasurementSubscriptionPayload
+  setupHardwareInstance(where: SetupHardwareInstanceSubscriptionWhereInput): SetupHardwareInstanceSubscriptionPayload
+  measurementRun(where: MeasurementRunSubscriptionWhereInput): MeasurementRunSubscriptionPayload
+  setup(where: SetupSubscriptionWhereInput): SetupSubscriptionPayload
+  instrumentParameter(where: InstrumentParameterSubscriptionWhereInput): InstrumentParameterSubscriptionPayload
+  instrumentSubsystem(where: InstrumentSubsystemSubscriptionWhereInput): InstrumentSubsystemSubscriptionPayload
+  instrumentInstance(where: InstrumentInstanceSubscriptionWhereInput): InstrumentInstanceSubscriptionPayload
+  instrumentCommand(where: InstrumentCommandSubscriptionWhereInput): InstrumentCommandSubscriptionPayload
+  event(where: EventSubscriptionWhereInput): EventSubscriptionPayload
+  user(where: UserSubscriptionWhereInput): UserSubscriptionPayload
+  comment(where: CommentSubscriptionWhereInput): CommentSubscriptionPayload
+  instrument(where: InstrumentSubscriptionWhereInput): InstrumentSubscriptionPayload
+  file(where: FileSubscriptionWhereInput): FileSubscriptionPayload
+}
+
+type User implements Node {
+  id: ID!
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  images(where: FileWhereInput, orderBy: FileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [File!]
+}
+
+"""A connection to a list of items."""
+type UserConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [UserEdge]!
+  aggregate: AggregateUser!
+}
+
+input UserCreateInput {
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  images: FileCreateManyInput
+}
+
+input UserCreateManyInput {
+  create: [UserCreateInput!]
+  connect: [UserWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type UserEdge {
+  """The item at the end of the edge."""
+  node: User!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum UserOrderByInput {
+  id_ASC
+  id_DESC
+  email_ASC
+  email_DESC
+  name_ASC
+  name_DESC
+  abbreviation_ASC
+  abbreviation_DESC
+  password_ASC
+  password_DESC
+  updatedAt_ASC
+  updatedAt_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type UserPreviousValues {
+  id: ID!
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+}
+
+input UserScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [UserScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [UserScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [UserScalarWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  email: String
+
+  """All values that are not equal to given value."""
+  email_not: String
+
+  """All values that are contained in given list."""
+  email_in: [String!]
+
+  """All values that are not contained in given list."""
+  email_not_in: [String!]
+
+  """All values less than the given value."""
+  email_lt: String
+
+  """All values less than or equal the given value."""
+  email_lte: String
+
+  """All values greater than the given value."""
+  email_gt: String
+
+  """All values greater than or equal the given value."""
+  email_gte: String
+
+  """All values containing the given string."""
+  email_contains: String
+
+  """All values not containing the given string."""
+  email_not_contains: String
+
+  """All values starting with the given string."""
+  email_starts_with: String
+
+  """All values not starting with the given string."""
+  email_not_starts_with: String
+
+  """All values ending with the given string."""
+  email_ends_with: String
+
+  """All values not ending with the given string."""
+  email_not_ends_with: String
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  abbreviation: String
+
+  """All values that are not equal to given value."""
+  abbreviation_not: String
+
+  """All values that are contained in given list."""
+  abbreviation_in: [String!]
+
+  """All values that are not contained in given list."""
+  abbreviation_not_in: [String!]
+
+  """All values less than the given value."""
+  abbreviation_lt: String
+
+  """All values less than or equal the given value."""
+  abbreviation_lte: String
+
+  """All values greater than the given value."""
+  abbreviation_gt: String
+
+  """All values greater than or equal the given value."""
+  abbreviation_gte: String
+
+  """All values containing the given string."""
+  abbreviation_contains: String
+
+  """All values not containing the given string."""
+  abbreviation_not_contains: String
+
+  """All values starting with the given string."""
+  abbreviation_starts_with: String
+
+  """All values not starting with the given string."""
+  abbreviation_not_starts_with: String
+
+  """All values ending with the given string."""
+  abbreviation_ends_with: String
+
+  """All values not ending with the given string."""
+  abbreviation_not_ends_with: String
+  password: String
+
+  """All values that are not equal to given value."""
+  password_not: String
+
+  """All values that are contained in given list."""
+  password_in: [String!]
+
+  """All values that are not contained in given list."""
+  password_not_in: [String!]
+
+  """All values less than the given value."""
+  password_lt: String
+
+  """All values less than or equal the given value."""
+  password_lte: String
+
+  """All values greater than the given value."""
+  password_gt: String
+
+  """All values greater than or equal the given value."""
+  password_gte: String
+
+  """All values containing the given string."""
+  password_contains: String
+
+  """All values not containing the given string."""
+  password_not_contains: String
+
+  """All values starting with the given string."""
+  password_starts_with: String
+
+  """All values not starting with the given string."""
+  password_not_starts_with: String
+
+  """All values ending with the given string."""
+  password_ends_with: String
+
+  """All values not ending with the given string."""
+  password_not_ends_with: String
+}
+
+type UserSubscriptionPayload {
+  mutation: MutationType!
+  node: User
+  updatedFields: [String!]
+  previousValues: UserPreviousValues
+}
+
+input UserSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [UserSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [UserSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [UserSubscriptionWhereInput!]
+
+  """The subscription event gets dispatched when it's listed in mutation_in"""
+  mutation_in: [MutationType!]
+
+  """
+  The subscription event gets only dispatched when one of the updated fields names is included in this list
+  """
+  updatedFields_contains: String
+
+  """
+  The subscription event gets only dispatched when all of the field names included in this list have been updated
+  """
+  updatedFields_contains_every: [String!]
+
+  """
+  The subscription event gets only dispatched when some of the field names included in this list have been updated
+  """
+  updatedFields_contains_some: [String!]
+  node: UserWhereInput
+}
+
+input UserUpdateDataInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  images: FileUpdateManyInput
+}
+
+input UserUpdateInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  images: FileUpdateManyInput
+}
+
+input UserUpdateManyDataInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+}
+
+input UserUpdateManyInput {
+  create: [UserCreateInput!]
+  connect: [UserWhereUniqueInput!]
+  set: [UserWhereUniqueInput!]
+  disconnect: [UserWhereUniqueInput!]
+  delete: [UserWhereUniqueInput!]
+  update: [UserUpdateWithWhereUniqueNestedInput!]
+  updateMany: [UserUpdateManyWithWhereNestedInput!]
+  deleteMany: [UserScalarWhereInput!]
+  upsert: [UserUpsertWithWhereUniqueNestedInput!]
+}
+
+input UserUpdateManyMutationInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+}
+
+input UserUpdateManyWithWhereNestedInput {
+  where: UserScalarWhereInput!
+  data: UserUpdateManyDataInput!
+}
+
+input UserUpdateWithWhereUniqueNestedInput {
+  where: UserWhereUniqueInput!
+  data: UserUpdateDataInput!
+}
+
+input UserUpsertWithWhereUniqueNestedInput {
+  where: UserWhereUniqueInput!
+  update: UserUpdateDataInput!
+  create: UserCreateInput!
+}
+
+input UserWhereInput {
+  """Logical AND on all given filters."""
+  AND: [UserWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [UserWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [UserWhereInput!]
+  id: ID
+
+  """All values that are not equal to given value."""
+  id_not: ID
+
+  """All values that are contained in given list."""
+  id_in: [ID!]
+
+  """All values that are not contained in given list."""
+  id_not_in: [ID!]
+
+  """All values less than the given value."""
+  id_lt: ID
+
+  """All values less than or equal the given value."""
+  id_lte: ID
+
+  """All values greater than the given value."""
+  id_gt: ID
+
+  """All values greater than or equal the given value."""
+  id_gte: ID
+
+  """All values containing the given string."""
+  id_contains: ID
+
+  """All values not containing the given string."""
+  id_not_contains: ID
+
+  """All values starting with the given string."""
+  id_starts_with: ID
+
+  """All values not starting with the given string."""
+  id_not_starts_with: ID
+
+  """All values ending with the given string."""
+  id_ends_with: ID
+
+  """All values not ending with the given string."""
+  id_not_ends_with: ID
+  email: String
+
+  """All values that are not equal to given value."""
+  email_not: String
+
+  """All values that are contained in given list."""
+  email_in: [String!]
+
+  """All values that are not contained in given list."""
+  email_not_in: [String!]
+
+  """All values less than the given value."""
+  email_lt: String
+
+  """All values less than or equal the given value."""
+  email_lte: String
+
+  """All values greater than the given value."""
+  email_gt: String
+
+  """All values greater than or equal the given value."""
+  email_gte: String
+
+  """All values containing the given string."""
+  email_contains: String
+
+  """All values not containing the given string."""
+  email_not_contains: String
+
+  """All values starting with the given string."""
+  email_starts_with: String
+
+  """All values not starting with the given string."""
+  email_not_starts_with: String
+
+  """All values ending with the given string."""
+  email_ends_with: String
+
+  """All values not ending with the given string."""
+  email_not_ends_with: String
+  name: String
+
+  """All values that are not equal to given value."""
+  name_not: String
+
+  """All values that are contained in given list."""
+  name_in: [String!]
+
+  """All values that are not contained in given list."""
+  name_not_in: [String!]
+
+  """All values less than the given value."""
+  name_lt: String
+
+  """All values less than or equal the given value."""
+  name_lte: String
+
+  """All values greater than the given value."""
+  name_gt: String
+
+  """All values greater than or equal the given value."""
+  name_gte: String
+
+  """All values containing the given string."""
+  name_contains: String
+
+  """All values not containing the given string."""
+  name_not_contains: String
+
+  """All values starting with the given string."""
+  name_starts_with: String
+
+  """All values not starting with the given string."""
+  name_not_starts_with: String
+
+  """All values ending with the given string."""
+  name_ends_with: String
+
+  """All values not ending with the given string."""
+  name_not_ends_with: String
+  abbreviation: String
+
+  """All values that are not equal to given value."""
+  abbreviation_not: String
+
+  """All values that are contained in given list."""
+  abbreviation_in: [String!]
+
+  """All values that are not contained in given list."""
+  abbreviation_not_in: [String!]
+
+  """All values less than the given value."""
+  abbreviation_lt: String
+
+  """All values less than or equal the given value."""
+  abbreviation_lte: String
+
+  """All values greater than the given value."""
+  abbreviation_gt: String
+
+  """All values greater than or equal the given value."""
+  abbreviation_gte: String
+
+  """All values containing the given string."""
+  abbreviation_contains: String
+
+  """All values not containing the given string."""
+  abbreviation_not_contains: String
+
+  """All values starting with the given string."""
+  abbreviation_starts_with: String
+
+  """All values not starting with the given string."""
+  abbreviation_not_starts_with: String
+
+  """All values ending with the given string."""
+  abbreviation_ends_with: String
+
+  """All values not ending with the given string."""
+  abbreviation_not_ends_with: String
+  password: String
+
+  """All values that are not equal to given value."""
+  password_not: String
+
+  """All values that are contained in given list."""
+  password_in: [String!]
+
+  """All values that are not contained in given list."""
+  password_not_in: [String!]
+
+  """All values less than the given value."""
+  password_lt: String
+
+  """All values less than or equal the given value."""
+  password_lte: String
+
+  """All values greater than the given value."""
+  password_gt: String
+
+  """All values greater than or equal the given value."""
+  password_gte: String
+
+  """All values containing the given string."""
+  password_contains: String
+
+  """All values not containing the given string."""
+  password_not_contains: String
+
+  """All values starting with the given string."""
+  password_starts_with: String
+
+  """All values not starting with the given string."""
+  password_not_starts_with: String
+
+  """All values ending with the given string."""
+  password_ends_with: String
+
+  """All values not ending with the given string."""
+  password_not_ends_with: String
+  images_every: FileWhereInput
+  images_some: FileWhereInput
+  images_none: FileWhereInput
+}
+
+input UserWhereUniqueInput {
+  id: ID
+  email: String
+}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1007 - 0
backend/package-lock.json


+ 1 - 0
backend/package.json

@@ -24,6 +24,7 @@
     "standard": "^12.0.1"
   },
   "devDependencies": {
+    "graphql-cli": "^3.0.11",
     "nodemon": "^1.18.11"
   },
   "scripts": {

+ 1 - 0
backend/prisma.yml

@@ -4,6 +4,7 @@ datamodel: datamodel.prisma
 hooks:
   post-deploy:
     - prisma generate
+    - graphql get-schema -p prisma
 generate:
   - generator: javascript-client
     output: ./database/generated/prisma-client

+ 4 - 28
backend/schema.graphql

@@ -1,39 +1,15 @@
-scalar Upload
+# import * from './database/generated/prisma.graphql'
 
 type Query {
-  projects: [Project]!
+  projects(where: ProjectWhereInput, orderBy: ProjectOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Project]!
+  projectVersions(where: ProjectVersionWhereInput, orderBy: ProjectVersionOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [ProjectVersion]!
   uploads: [File]
   me: User!
 }
 
 type Mutation {
-  uploadFile(file: Upload!): File!
+  createCharacterization(data: CharacterizationCreateInput!): Characterization!
   createUser(name: String!, email: String!, abbreviation: String!, password: String!): User!
   userLogin(email: String!, password: String!): User!
   userLogout: String!
 }
-
-type User {
-  id: ID! 
-  email: String!
-  name: String!
-  abbreviation: String!
-  password: String!
-  images: [File]!
-}
-
-type File {
-  id: ID! 
-  path: String!
-  filename: String!
-  mimetype: String!
-  size: Int!
-}
-
-type Project {
-  id: ID!
-  name: String!
-  abbreviation: String!
-  description: String
-  images: [File]!
-}

+ 4 - 2
backend/src/resolvers.js

@@ -4,6 +4,7 @@ const jwt = require('jsonwebtoken')
 
 const Query = {
   projects: forwardTo('db'),
+  projectVersions: forwardTo('db'),
   me: (parent, args, context, info) => {
     if (!context.request.userId) throw new Error('Not logged in.')
     return context.db.query.user({ where: { id: context.request.userId } }, info)
@@ -22,7 +23,7 @@ const Mutation = {
         password
       }
     },
-    info
+      info
     )
     console.log(user)
     const token = jwt.sign({ userId: user.id }, process.env.APP_SECRET)
@@ -49,7 +50,8 @@ const Mutation = {
   userLogout: async (parent, args, context, info) => {
     context.response.clearCookie('token')
     return 'Logged out.'
-  }
+  },
+  createCharacterization: forwardTo('db')
 }
 
 const resolvers = {

+ 106 - 0
frontend/components/CharacterizationForm.js

@@ -0,0 +1,106 @@
+import { Query, Mutation } from 'react-apollo';
+import gql from 'graphql-tag'
+import { QUERY_PROJECTS } from './ProjectList'
+
+const ADD_CHARACTERIZATION = gql`
+  mutation ADD_CHARACTERIZATION($name: String!, $projectVersion: ID!, $measurementRuns: [MeasurementRun!]) {
+    createCharacterization(data: {name: $name, projectVersion: $projectVersion, measurementRuns: $measurementRuns}) {
+      id
+      name
+      projectVersion {
+        id
+        name
+      }
+      measurementRuns {
+        id
+        name
+      }
+    }
+  }
+`
+
+const QUERY_PROJECT_VERSIONS = gql`
+  query QUERY_PROJECT_VERSIONS($projectId: ID!) {
+    projectVersions(where: {project: {id: $projectId}}) {
+      id
+      name
+    }
+  }
+`
+
+class CharacterziationForm extends React.Component {
+  state = {
+    name: '',
+    project: null,
+    projectVersion: null,
+    measurementRuns: null
+  }
+
+  toState = event => {
+    this.setState({ [event.target.name]: event.target.value })
+  }
+
+  render() {
+    return (
+      <Mutation mutation={ADD_CHARACTERIZATION} variables={this.state}>
+        {(addCharacterization, { data, error, loading }) => (
+          <form onSubmit={event => {
+            event.preventDefault()
+            console.log(this.state)
+            addCharacterization()
+          }}>
+            <fieldset>
+              <label htmlFor="name">Characterization name</label>
+              <input type="text" name="name" id="name"
+                placeholder="Characterization name"
+                value={this.state.name}
+                onChange={this.toState}
+              />
+              <Query query={QUERY_PROJECTS}>
+                {({ data, error, loading }) => {
+                  if (error) return (<p>Error loading project: ${error.message}</p>)
+                  if (loading) return (<p>Loading data...</p>)
+                  if (!data) return (<p>No project found.</p>)
+
+                  const { projects } = data
+                  return (
+                    <>
+                      <label htmlFor="project">Project</label>
+                      <select name="project" id="project" onChange={this.toState}>
+                        <option value={null}>---</option>
+                        {data.projects.map(project => <option key={project.id} value={project.id}>{project.name}</option>)}
+                      </select>
+                      <Query query={QUERY_PROJECT_VERSIONS} variables={{ projectId: this.state.project }}>
+                        {({ data, error, loading }) => {
+                          if (error) return (<p>Error loading project version: ${error.message}</p>)
+                          if (loading) return (<p>Loading data...</p>)
+                          if (!data) return (<p>No project version found.</p>)
+
+                          const { projectVersions } = data
+                          return (
+                            <>
+                              <label htmlFor="projectVersion"></label>
+                              <select name="projectVersion" id="projectVersion" onChange={this.toState}>
+                                <option value={null}>---</option>
+                                {data.projectVersions.map(projectVersion =>
+                                  <option key={projectVersion.id} value={projectVersion.id}>{projectVersion.name}</option>
+                                )}
+                              </select>
+                            </>
+                          )
+                        }}
+                      </Query>
+                    </>
+                  )
+                }}
+              </Query>
+              <button type="submit">{data ? "Save" : "Add"}</button>
+            </fieldset>
+          </form>
+        )}
+      </Mutation>
+    )
+  }
+}
+
+export default CharacterziationForm

+ 2 - 1
frontend/components/Gallery.js

@@ -4,6 +4,7 @@ const GalleryStyle = styled.div`
   border: 1px solid grey;
 
   #header {
+    padding: 0 0.3em;
     background: lightgray;
     cursor: pointer
   }
@@ -23,7 +24,7 @@ class Gallery extends React.Component {
     return (
       <GalleryStyle>
         <div onClick={this.openGallery} id="header">
-          {items.length} {title} available (click to {this.state.galleryOpen ? 'hide' : 'see'})
+          &#8227; {items.length} {title} available (click to {this.state.galleryOpen ? 'hide' : 'see'})
         </div>
         <div style={{ display: this.state.galleryOpen ? 'block' : 'none' }} id="gallery">
           {items}

+ 62 - 16
frontend/components/Header.js

@@ -13,29 +13,75 @@ Router.onRouteChangeError = () => {
   NProgress.done()
 }
 
-const StyledNav = styled.div`
+const StyledHeader = styled.header`
 display: grid;
+grid-template-columns: 250px 1fr;
 grid-auto-flow: column;
-align-content: end;
+border-bottom: 1px solid ${props => props.theme.darkerblue};
+box-shadow: 0 10px 5px -5px rgba(0,0,0,0.09);
+
+#logo {
+  font-family: 'roboto_black';
+  margin: 0;
+  padding: 0.4em 0;
+  font-size: 180%;
+  line-height: 1;
+  text-align: center;
+}
+
+#logo img {
+  vertical-align: middle;
+  max-width: 50px;
+  max-height: 50px;
+}
+
+#Auto {
+  color: #4482c3;
+}
+
+#Mate {
+  color: #285680;
+}
+
+nav {
+  box-align: end;
+  height: 100%;
+}
+
+nav a {
+  display: flex;
+  justify-self: end;
+  padding: 0 1em;
+}
 `
 
 const Header = props => {
   const { user } = props
   return (
-    <StyledNav>
-      <Link href='/'>
-        <a>Home</a>
-      </Link>
-      <Link href='/interfaces'>
-        <a>Interfaces</a>
-      </Link>
-      <Link href='/characterization'>
-        <a>Characterization</a>
-      </Link>
-      <Link href='/user'>
-        <a>{user ? user.name : 'User'}</a>
-      </Link>
-    </StyledNav>
+    <StyledHeader>
+      <div id="logo">
+        <h1>
+          <a href="/">
+            <img src="/static/configuration.svg" alt="AutoMate" />
+            <span id="Auto">&nbsp;Auto</span><span id="Mate">Mate</span>
+          </a>
+        </h1>
+      </div>
+      <nav>
+        <Link href='/'>
+          <a>Home</a>
+        </Link>
+        <Link href='/interfaces'>
+          <a>Interfaces</a>
+        </Link>
+        <Link href='/characterization'>
+          <a>Characterization</a>
+        </Link>
+        <Link href='/user'>
+          <a>{user ? user.name : 'User'}</a>
+        </Link>
+      </nav>
+    </StyledHeader>
   )
 }
 

+ 2 - 1
frontend/components/Meta.js

@@ -4,8 +4,9 @@ const Meta = () => (
   <Head>
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta charSet="utf-8" />
-    <link rel="shortcut icon" href="/static/favicon.png" />
+    <link rel="shortcut icon" href="/static/favicon.svg" />
     <link rel="stylesheet" type="text/css" href="/static/nprogress.css" />
+    <link rel="stylesheet" type="text/css" href="/static/reset.css" />
     <title>AutoMate</title>
   </Head>
 )

+ 25 - 10
frontend/components/Page.js

@@ -3,13 +3,20 @@ import Header from './Header'
 import Meta from './Meta'
 
 const theme = {
-  red: '#FF0000',
+  lightred: '#f0b0b0',
+  red: '#f03535',
   black: '#393939',
-  grey: '#545454',
-  lightgrey: '#E1E1E1',
+  grey: '#7f8c8d',
+  lightgrey: '#95a5a5',
+  lighterblue: '#d6e4f0',
+  lightblue: '#b0d3f0',
+  blue: '#4482c3',
+  darkblue: '#285680',
+  darkerblue: '#204567',
   offWhite: '#EDEDED',
   maxWidth: '1000px',
-  bs: '0 12px 24px 0 rgba(0,0,0,0.09)'
+  bs: '0 12px 24px 0 rgba(0,0,0,0.09)',
+  bsSmall: '0 5px 10px 0 rgba(0,0,0,0.19)'
 }
 
 const StyledPage = styled.div`
@@ -37,9 +44,9 @@ const GlobalStyle = createGlobalStyle`
     src: url('/static/Roboto-Black.woff2');
   }
   
-  html {l
+  html {
     box-sizing: border-box;
-    font-size: 10px;
+    font-size: 12px;
   }
 
   *, *:before, *:after {
@@ -54,13 +61,21 @@ const GlobalStyle = createGlobalStyle`
     font-family: 'roboto', sans-serif;
   }
 
-  a {
-    text-decoration: none;
-    color: ${theme.black};
+  h1 {
+    font-family: 'roboto_black';
+  }
+
+  h2, h3, h4, h5, h6 {
   }
 
   button {
     font-family: 'roboto_black';
+    background: ${props => props.theme.darkblue};
+    color: ${props => props.theme.lighterblue};
+    border: 1px solid ${props => props.theme.darkerblue};
+    padding: 0.3em 1.8em;
+    cursor: pointer;
+    box-shadow: ${props => props.theme.bsSmall};
   }
 
   input,
@@ -73,7 +88,7 @@ const GlobalStyle = createGlobalStyle`
 `
 
 class Page extends React.Component {
-  render () {
+  render() {
     return (
       <ThemeProvider theme={theme}>
         <StyledPage>

+ 9 - 26
frontend/components/ProjectForm.js

@@ -2,37 +2,20 @@ import styled from 'styled-components'
 import gql from 'graphql-tag'
 import { Query } from 'react-apollo'
 
-const StyledProjectForm = styled.form`
-  display: grid;
-  font-family: "Arial";
-
-  label {
-    display: block;
-    color: ${props => props.theme.grey};
-    font-weight: bold;
-    font-size: 80%;
-  }
-
-  input, textarea {
-    border: none;
-    border-bottom: 2px solid red;
-  }
-
-  #project-name {
-    font-size: 115%;
-    font-weight: bold;
+class ProjectForm extends React.Component {
+  state = {
+    name: '',
+    abbreviation: '',
+    description: '',
   }
-`
 
-class ProjectForm extends React.Component {
-  saveForm = event => {
-    event.preventDefault()
-    console.log(event.target)
+  toState = event => {
+    this.setState({ [event.target.name]: event.target.value })
   }
 
   render() {
     return (
-      <StyledProjectForm>
+      <form>
         <h1>Project Setup</h1>
         <p>Please fill in the form.</p>
         <fieldset id='project-generic'>
@@ -44,7 +27,7 @@ class ProjectForm extends React.Component {
           <textarea id='project-description' placeholder='Project description' />
         </fieldset>
         <button type='submit' onClick={this.saveForm}>Save</button>
-      </StyledProjectForm>
+      </form>
     )
   }
 }

+ 20 - 10
frontend/components/ProjectList.js

@@ -8,19 +8,28 @@ const StyledProjectList = styled.div`
 
 const QUERY_PROJECTS = gql`
   query QUERY_PROJECTS {
-  projects {
-    id
-    name
-    abbreviation
-    description
-    images {
+    projects {
       id
-      filename
-      mimetype
-      size
+      name
+      abbreviation
+      description
+      files {
+        id
+        path
+        name
+        description
+        filename
+        mimetype
+        size
+      }
+      versions {
+        id
+        name
+        changes
+        date
+      }
     }
   }
-}
 `
 
 class ProjectList extends React.Component {
@@ -55,3 +64,4 @@ class ProjectList extends React.Component {
 }
 
 export default ProjectList
+export { QUERY_PROJECTS }

+ 5 - 1
frontend/pages/characterization.js

@@ -1,4 +1,5 @@
 import Characterization from '../components/Characterization'
+import CharacterizationForm from '../components/CharacterizationForm'
 
 const MOCK_DATA = {
   name: 'DCDC Efficiency',
@@ -77,7 +78,10 @@ const MOCK_DATA = {
 }
 
 const CharacterizationPage = props => (
-  <Characterization data={MOCK_DATA} />
+  <>
+    <CharacterizationForm />
+    <Characterization data={MOCK_DATA} />
+  </>
 )
 
 export default CharacterizationPage

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
frontend/static/configuration.svg


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
frontend/static/favicon.svg


+ 85 - 0
frontend/static/reset.css

@@ -0,0 +1,85 @@
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+main, menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, main, menu, nav, section {
+  display: block;
+}
+/* HTML5 hidden-attribute fix for newer browsers */
+*[hidden] {
+  display: none;
+}
+body {
+  line-height: 1;
+}
+ol, ul {
+  list-style: none;
+}
+blockquote, q {
+  quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+  content: '';
+  content: none;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+/* http://www.paulirish.com/2012/box-sizing-border-box-ftw/ (2015/04/28)*/
+html {
+  box-sizing: border-box;
+}
+*, *:before, *:after {
+  box-sizing: inherit;
+}
+/* Additional resets */
+a {
+  text-decoration: none;
+  color: inherit;
+}
+button {
+  border: none;
+  margin: 0;
+  padding: 0;
+  width: auto;
+  overflow: visible;
+  background: transparent;
+  color: inherit;
+  font: inherit;
+  text-align: inherit;
+  outline: none;
+  line-height: inherit;
+  -webkit-appearance: none;
+}
+/* Fix antialiasing */
+*, *:before, *:after {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+/* Disable user select on everything but texts */
+*, *:before, *:after {
+  user-select: none;
+}
+p, h1, h2, h3, h4, h5, h6, blockquote, pre, ul, ol, li, table, tr, th, td {
+  user-select: all;
+}

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels