Преглед на файлове

got prisma working properly in the backend.

Tomi Cvetic преди 5 години
родител
ревизия
e8965bccc9

+ 1 - 1
backend/.graphqlconfig.yml

@@ -5,6 +5,6 @@ projects:
       endpoints:
         default: "http://localhost:4477"
   prisma:
-    schemaPath: "database/generated/prisma.graphql"
+    schemaPath: "../database/generated/prisma.graphql"
     extensions:
       prisma: prisma.yml

+ 49 - 13
backend/datamodel.prisma

@@ -1,32 +1,68 @@
 type User {
-    id: ID! @unique
+    id: ID! @id
     email: String! @unique
     name: String!
     abbreviation: String!
     password: String!
-    comments: [Comment]! @relation(name: "CommentAuthor", onDelete: CASCADE)
-}
-
-type Comment {
-    id: ID! @unique
-    text: String!
-    createdAt: DateTime!
-    author: User! @relation(name: "CommentAuthor", onDelete: SET_NULL)
+    createdAt: DateTime! @createdAt
+    comments: [Comment]!
+    ratings: [Rating]!
 }
 
 type Training {
-    id: ID! @unique
+    id: ID! @id
     title: String!
-    content: String!
-    createdAt: DateTime!
+    content: [Block]!
+    createdAt: DateTime! @createdAt
     trainingDate: DateTime!
     participants: [User]!
     ratings: [Rating]!
 }
 
+type Block {
+    id: ID! @id
+    sequence: Int!
+    title: String!
+    duration: Int!
+    variation: String
+    format: Format
+    tracks: [Track]!
+    excersises: [Excersise]!
+}
+
+type Format {
+    id: ID! @id
+    name: String!
+    description: String!
+}
+
+type Track {
+    id: ID! @id
+    title: String!
+    artist: String!
+    duration: Int!
+    link: String!
+}
+
+type Excersise {
+    id: ID! @id
+    name: String!
+    description: String!
+    video: String!
+    targets: [String]! @scalarList(strategy: RELATION) 
+}
+
 type Rating {
-    id: ID! @unique
+    id: ID! @id
     user: User!
     value: Int!
     comment: String!
+    createdAt: DateTime! @createdAt
+}
+
+type Comment {
+    id: ID! @id
+    text: String!
+    author: User!
+    createdAt: DateTime! @createdAt
 }

Файловите разлики са ограничени, защото са твърде много
+ 439 - 398
backend/package-lock.json


+ 4 - 5
backend/package.json

@@ -16,17 +16,16 @@
     "body-parser": "1.19.0",
     "cookie-parser": "1.4.4",
     "cors": "2.8.5",
-    "crypto": "1.0.1",
     "dotenv": "8.2.0",
-    "graphql-cli": "4.0.0-alpha.23",
+    "graphql": "14.5.8",
     "graphql-yoga": "1.18.3",
     "jsonwebtoken": "8.5.1",
-    "nodemon": "1.19.4",
     "prisma": "1.34.10",
+    "prisma-binding": "2.3.16",
     "standard": "14.3.1"
   },
   "devDependencies": {
-    "graphql-cli": "4.0.0-alpha.23",
-    "nodemon": "1.19.4"
+    "nodemon": "1.19.4",
+    "graphql-cli": "3.0.14"
   }
 }

+ 2 - 2
backend/prisma.yml

@@ -1,4 +1,4 @@
-endpoint: http://localhost:4455
+endpoint: http://localhost:8846
 datamodel: datamodel.prisma
 hooks:
   post-deploy:
@@ -6,4 +6,4 @@ hooks:
     - graphql get-schema -p prisma
 generate:
   - generator: javascript-client
-    output: ./database/generated/prisma-client
+    output: ../database/generated/prisma-client

+ 3545 - 0
database/generated/prisma-client/index.d.ts

@@ -0,0 +1,3545 @@
+// Code generated by Prisma (prisma@1.34.10). DO NOT EDIT.
+// Please don't change this file manually but run `prisma generate` to update it.
+// For more information, please read the docs: https://www.prisma.io/docs/prisma-client/
+
+import { DocumentNode } from "graphql";
+import {
+  makePrismaClientClass,
+  BaseClientOptions,
+  Model
+} from "prisma-client-lib";
+import { typeDefs } from "./prisma-schema";
+
+export type AtLeastOne<T, U = { [K in keyof T]: Pick<T, K> }> = Partial<T> &
+  U[keyof U];
+
+export type Maybe<T> = T | undefined | null;
+
+export interface Exists {
+  block: (where?: BlockWhereInput) => Promise<boolean>;
+  comment: (where?: CommentWhereInput) => Promise<boolean>;
+  excersise: (where?: ExcersiseWhereInput) => Promise<boolean>;
+  format: (where?: FormatWhereInput) => Promise<boolean>;
+  rating: (where?: RatingWhereInput) => Promise<boolean>;
+  track: (where?: TrackWhereInput) => Promise<boolean>;
+  training: (where?: TrainingWhereInput) => Promise<boolean>;
+  user: (where?: UserWhereInput) => Promise<boolean>;
+}
+
+export interface Node {}
+
+export type FragmentableArray<T> = Promise<Array<T>> & Fragmentable;
+
+export interface Fragmentable {
+  $fragment<T>(fragment: string | DocumentNode): Promise<T>;
+}
+
+export interface Prisma {
+  $exists: Exists;
+  $graphql: <T = any>(
+    query: string,
+    variables?: { [key: string]: any }
+  ) => Promise<T>;
+
+  /**
+   * Queries
+   */
+
+  block: (where: BlockWhereUniqueInput) => BlockNullablePromise;
+  blocks: (args?: {
+    where?: BlockWhereInput;
+    orderBy?: BlockOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FragmentableArray<Block>;
+  blocksConnection: (args?: {
+    where?: BlockWhereInput;
+    orderBy?: BlockOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => BlockConnectionPromise;
+  comment: (where: CommentWhereUniqueInput) => CommentNullablePromise;
+  comments: (args?: {
+    where?: CommentWhereInput;
+    orderBy?: CommentOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FragmentableArray<Comment>;
+  commentsConnection: (args?: {
+    where?: CommentWhereInput;
+    orderBy?: CommentOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => CommentConnectionPromise;
+  excersise: (where: ExcersiseWhereUniqueInput) => ExcersiseNullablePromise;
+  excersises: (args?: {
+    where?: ExcersiseWhereInput;
+    orderBy?: ExcersiseOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FragmentableArray<Excersise>;
+  excersisesConnection: (args?: {
+    where?: ExcersiseWhereInput;
+    orderBy?: ExcersiseOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => ExcersiseConnectionPromise;
+  format: (where: FormatWhereUniqueInput) => FormatNullablePromise;
+  formats: (args?: {
+    where?: FormatWhereInput;
+    orderBy?: FormatOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FragmentableArray<Format>;
+  formatsConnection: (args?: {
+    where?: FormatWhereInput;
+    orderBy?: FormatOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FormatConnectionPromise;
+  rating: (where: RatingWhereUniqueInput) => RatingNullablePromise;
+  ratings: (args?: {
+    where?: RatingWhereInput;
+    orderBy?: RatingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FragmentableArray<Rating>;
+  ratingsConnection: (args?: {
+    where?: RatingWhereInput;
+    orderBy?: RatingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => RatingConnectionPromise;
+  track: (where: TrackWhereUniqueInput) => TrackNullablePromise;
+  tracks: (args?: {
+    where?: TrackWhereInput;
+    orderBy?: TrackOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FragmentableArray<Track>;
+  tracksConnection: (args?: {
+    where?: TrackWhereInput;
+    orderBy?: TrackOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => TrackConnectionPromise;
+  training: (where: TrainingWhereUniqueInput) => TrainingNullablePromise;
+  trainings: (args?: {
+    where?: TrainingWhereInput;
+    orderBy?: TrainingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FragmentableArray<Training>;
+  trainingsConnection: (args?: {
+    where?: TrainingWhereInput;
+    orderBy?: TrainingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => TrainingConnectionPromise;
+  user: (where: UserWhereUniqueInput) => UserNullablePromise;
+  users: (args?: {
+    where?: UserWhereInput;
+    orderBy?: UserOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => FragmentableArray<User>;
+  usersConnection: (args?: {
+    where?: UserWhereInput;
+    orderBy?: UserOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => UserConnectionPromise;
+  node: (args: { id: ID_Output }) => Node;
+
+  /**
+   * Mutations
+   */
+
+  createBlock: (data: BlockCreateInput) => BlockPromise;
+  updateBlock: (args: {
+    data: BlockUpdateInput;
+    where: BlockWhereUniqueInput;
+  }) => BlockPromise;
+  updateManyBlocks: (args: {
+    data: BlockUpdateManyMutationInput;
+    where?: BlockWhereInput;
+  }) => BatchPayloadPromise;
+  upsertBlock: (args: {
+    where: BlockWhereUniqueInput;
+    create: BlockCreateInput;
+    update: BlockUpdateInput;
+  }) => BlockPromise;
+  deleteBlock: (where: BlockWhereUniqueInput) => BlockPromise;
+  deleteManyBlocks: (where?: BlockWhereInput) => BatchPayloadPromise;
+  createComment: (data: CommentCreateInput) => CommentPromise;
+  updateComment: (args: {
+    data: CommentUpdateInput;
+    where: CommentWhereUniqueInput;
+  }) => CommentPromise;
+  updateManyComments: (args: {
+    data: CommentUpdateManyMutationInput;
+    where?: CommentWhereInput;
+  }) => BatchPayloadPromise;
+  upsertComment: (args: {
+    where: CommentWhereUniqueInput;
+    create: CommentCreateInput;
+    update: CommentUpdateInput;
+  }) => CommentPromise;
+  deleteComment: (where: CommentWhereUniqueInput) => CommentPromise;
+  deleteManyComments: (where?: CommentWhereInput) => BatchPayloadPromise;
+  createExcersise: (data: ExcersiseCreateInput) => ExcersisePromise;
+  updateExcersise: (args: {
+    data: ExcersiseUpdateInput;
+    where: ExcersiseWhereUniqueInput;
+  }) => ExcersisePromise;
+  updateManyExcersises: (args: {
+    data: ExcersiseUpdateManyMutationInput;
+    where?: ExcersiseWhereInput;
+  }) => BatchPayloadPromise;
+  upsertExcersise: (args: {
+    where: ExcersiseWhereUniqueInput;
+    create: ExcersiseCreateInput;
+    update: ExcersiseUpdateInput;
+  }) => ExcersisePromise;
+  deleteExcersise: (where: ExcersiseWhereUniqueInput) => ExcersisePromise;
+  deleteManyExcersises: (where?: ExcersiseWhereInput) => BatchPayloadPromise;
+  createFormat: (data: FormatCreateInput) => FormatPromise;
+  updateFormat: (args: {
+    data: FormatUpdateInput;
+    where: FormatWhereUniqueInput;
+  }) => FormatPromise;
+  updateManyFormats: (args: {
+    data: FormatUpdateManyMutationInput;
+    where?: FormatWhereInput;
+  }) => BatchPayloadPromise;
+  upsertFormat: (args: {
+    where: FormatWhereUniqueInput;
+    create: FormatCreateInput;
+    update: FormatUpdateInput;
+  }) => FormatPromise;
+  deleteFormat: (where: FormatWhereUniqueInput) => FormatPromise;
+  deleteManyFormats: (where?: FormatWhereInput) => BatchPayloadPromise;
+  createRating: (data: RatingCreateInput) => RatingPromise;
+  updateRating: (args: {
+    data: RatingUpdateInput;
+    where: RatingWhereUniqueInput;
+  }) => RatingPromise;
+  updateManyRatings: (args: {
+    data: RatingUpdateManyMutationInput;
+    where?: RatingWhereInput;
+  }) => BatchPayloadPromise;
+  upsertRating: (args: {
+    where: RatingWhereUniqueInput;
+    create: RatingCreateInput;
+    update: RatingUpdateInput;
+  }) => RatingPromise;
+  deleteRating: (where: RatingWhereUniqueInput) => RatingPromise;
+  deleteManyRatings: (where?: RatingWhereInput) => BatchPayloadPromise;
+  createTrack: (data: TrackCreateInput) => TrackPromise;
+  updateTrack: (args: {
+    data: TrackUpdateInput;
+    where: TrackWhereUniqueInput;
+  }) => TrackPromise;
+  updateManyTracks: (args: {
+    data: TrackUpdateManyMutationInput;
+    where?: TrackWhereInput;
+  }) => BatchPayloadPromise;
+  upsertTrack: (args: {
+    where: TrackWhereUniqueInput;
+    create: TrackCreateInput;
+    update: TrackUpdateInput;
+  }) => TrackPromise;
+  deleteTrack: (where: TrackWhereUniqueInput) => TrackPromise;
+  deleteManyTracks: (where?: TrackWhereInput) => BatchPayloadPromise;
+  createTraining: (data: TrainingCreateInput) => TrainingPromise;
+  updateTraining: (args: {
+    data: TrainingUpdateInput;
+    where: TrainingWhereUniqueInput;
+  }) => TrainingPromise;
+  updateManyTrainings: (args: {
+    data: TrainingUpdateManyMutationInput;
+    where?: TrainingWhereInput;
+  }) => BatchPayloadPromise;
+  upsertTraining: (args: {
+    where: TrainingWhereUniqueInput;
+    create: TrainingCreateInput;
+    update: TrainingUpdateInput;
+  }) => TrainingPromise;
+  deleteTraining: (where: TrainingWhereUniqueInput) => TrainingPromise;
+  deleteManyTrainings: (where?: TrainingWhereInput) => BatchPayloadPromise;
+  createUser: (data: UserCreateInput) => UserPromise;
+  updateUser: (args: {
+    data: UserUpdateInput;
+    where: UserWhereUniqueInput;
+  }) => UserPromise;
+  updateManyUsers: (args: {
+    data: UserUpdateManyMutationInput;
+    where?: UserWhereInput;
+  }) => BatchPayloadPromise;
+  upsertUser: (args: {
+    where: UserWhereUniqueInput;
+    create: UserCreateInput;
+    update: UserUpdateInput;
+  }) => UserPromise;
+  deleteUser: (where: UserWhereUniqueInput) => UserPromise;
+  deleteManyUsers: (where?: UserWhereInput) => BatchPayloadPromise;
+
+  /**
+   * Subscriptions
+   */
+
+  $subscribe: Subscription;
+}
+
+export interface Subscription {
+  block: (
+    where?: BlockSubscriptionWhereInput
+  ) => BlockSubscriptionPayloadSubscription;
+  comment: (
+    where?: CommentSubscriptionWhereInput
+  ) => CommentSubscriptionPayloadSubscription;
+  excersise: (
+    where?: ExcersiseSubscriptionWhereInput
+  ) => ExcersiseSubscriptionPayloadSubscription;
+  format: (
+    where?: FormatSubscriptionWhereInput
+  ) => FormatSubscriptionPayloadSubscription;
+  rating: (
+    where?: RatingSubscriptionWhereInput
+  ) => RatingSubscriptionPayloadSubscription;
+  track: (
+    where?: TrackSubscriptionWhereInput
+  ) => TrackSubscriptionPayloadSubscription;
+  training: (
+    where?: TrainingSubscriptionWhereInput
+  ) => TrainingSubscriptionPayloadSubscription;
+  user: (
+    where?: UserSubscriptionWhereInput
+  ) => UserSubscriptionPayloadSubscription;
+}
+
+export interface ClientConstructor<T> {
+  new (options?: BaseClientOptions): T;
+}
+
+/**
+ * Types
+ */
+
+export type TrackOrderByInput =
+  | "id_ASC"
+  | "id_DESC"
+  | "title_ASC"
+  | "title_DESC"
+  | "artist_ASC"
+  | "artist_DESC"
+  | "duration_ASC"
+  | "duration_DESC"
+  | "link_ASC"
+  | "link_DESC";
+
+export type ExcersiseOrderByInput =
+  | "id_ASC"
+  | "id_DESC"
+  | "name_ASC"
+  | "name_DESC"
+  | "description_ASC"
+  | "description_DESC"
+  | "video_ASC"
+  | "video_DESC";
+
+export type BlockOrderByInput =
+  | "id_ASC"
+  | "id_DESC"
+  | "sequence_ASC"
+  | "sequence_DESC"
+  | "title_ASC"
+  | "title_DESC"
+  | "duration_ASC"
+  | "duration_DESC"
+  | "variation_ASC"
+  | "variation_DESC";
+
+export type CommentOrderByInput =
+  | "id_ASC"
+  | "id_DESC"
+  | "text_ASC"
+  | "text_DESC"
+  | "createdAt_ASC"
+  | "createdAt_DESC";
+
+export type RatingOrderByInput =
+  | "id_ASC"
+  | "id_DESC"
+  | "value_ASC"
+  | "value_DESC"
+  | "comment_ASC"
+  | "comment_DESC"
+  | "createdAt_ASC"
+  | "createdAt_DESC";
+
+export type FormatOrderByInput =
+  | "id_ASC"
+  | "id_DESC"
+  | "name_ASC"
+  | "name_DESC"
+  | "description_ASC"
+  | "description_DESC";
+
+export type UserOrderByInput =
+  | "id_ASC"
+  | "id_DESC"
+  | "email_ASC"
+  | "email_DESC"
+  | "name_ASC"
+  | "name_DESC"
+  | "abbreviation_ASC"
+  | "abbreviation_DESC"
+  | "password_ASC"
+  | "password_DESC"
+  | "createdAt_ASC"
+  | "createdAt_DESC";
+
+export type TrainingOrderByInput =
+  | "id_ASC"
+  | "id_DESC"
+  | "title_ASC"
+  | "title_DESC"
+  | "createdAt_ASC"
+  | "createdAt_DESC"
+  | "trainingDate_ASC"
+  | "trainingDate_DESC";
+
+export type MutationType = "CREATED" | "UPDATED" | "DELETED";
+
+export type BlockWhereUniqueInput = AtLeastOne<{
+  id: Maybe<ID_Input>;
+}>;
+
+export interface TrackWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  title?: Maybe<String>;
+  title_not?: Maybe<String>;
+  title_in?: Maybe<String[] | String>;
+  title_not_in?: Maybe<String[] | String>;
+  title_lt?: Maybe<String>;
+  title_lte?: Maybe<String>;
+  title_gt?: Maybe<String>;
+  title_gte?: Maybe<String>;
+  title_contains?: Maybe<String>;
+  title_not_contains?: Maybe<String>;
+  title_starts_with?: Maybe<String>;
+  title_not_starts_with?: Maybe<String>;
+  title_ends_with?: Maybe<String>;
+  title_not_ends_with?: Maybe<String>;
+  artist?: Maybe<String>;
+  artist_not?: Maybe<String>;
+  artist_in?: Maybe<String[] | String>;
+  artist_not_in?: Maybe<String[] | String>;
+  artist_lt?: Maybe<String>;
+  artist_lte?: Maybe<String>;
+  artist_gt?: Maybe<String>;
+  artist_gte?: Maybe<String>;
+  artist_contains?: Maybe<String>;
+  artist_not_contains?: Maybe<String>;
+  artist_starts_with?: Maybe<String>;
+  artist_not_starts_with?: Maybe<String>;
+  artist_ends_with?: Maybe<String>;
+  artist_not_ends_with?: Maybe<String>;
+  duration?: Maybe<Int>;
+  duration_not?: Maybe<Int>;
+  duration_in?: Maybe<Int[] | Int>;
+  duration_not_in?: Maybe<Int[] | Int>;
+  duration_lt?: Maybe<Int>;
+  duration_lte?: Maybe<Int>;
+  duration_gt?: Maybe<Int>;
+  duration_gte?: Maybe<Int>;
+  link?: Maybe<String>;
+  link_not?: Maybe<String>;
+  link_in?: Maybe<String[] | String>;
+  link_not_in?: Maybe<String[] | String>;
+  link_lt?: Maybe<String>;
+  link_lte?: Maybe<String>;
+  link_gt?: Maybe<String>;
+  link_gte?: Maybe<String>;
+  link_contains?: Maybe<String>;
+  link_not_contains?: Maybe<String>;
+  link_starts_with?: Maybe<String>;
+  link_not_starts_with?: Maybe<String>;
+  link_ends_with?: Maybe<String>;
+  link_not_ends_with?: Maybe<String>;
+  AND?: Maybe<TrackWhereInput[] | TrackWhereInput>;
+  OR?: Maybe<TrackWhereInput[] | TrackWhereInput>;
+  NOT?: Maybe<TrackWhereInput[] | TrackWhereInput>;
+}
+
+export interface ExcersiseWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  name?: Maybe<String>;
+  name_not?: Maybe<String>;
+  name_in?: Maybe<String[] | String>;
+  name_not_in?: Maybe<String[] | String>;
+  name_lt?: Maybe<String>;
+  name_lte?: Maybe<String>;
+  name_gt?: Maybe<String>;
+  name_gte?: Maybe<String>;
+  name_contains?: Maybe<String>;
+  name_not_contains?: Maybe<String>;
+  name_starts_with?: Maybe<String>;
+  name_not_starts_with?: Maybe<String>;
+  name_ends_with?: Maybe<String>;
+  name_not_ends_with?: Maybe<String>;
+  description?: Maybe<String>;
+  description_not?: Maybe<String>;
+  description_in?: Maybe<String[] | String>;
+  description_not_in?: Maybe<String[] | String>;
+  description_lt?: Maybe<String>;
+  description_lte?: Maybe<String>;
+  description_gt?: Maybe<String>;
+  description_gte?: Maybe<String>;
+  description_contains?: Maybe<String>;
+  description_not_contains?: Maybe<String>;
+  description_starts_with?: Maybe<String>;
+  description_not_starts_with?: Maybe<String>;
+  description_ends_with?: Maybe<String>;
+  description_not_ends_with?: Maybe<String>;
+  video?: Maybe<String>;
+  video_not?: Maybe<String>;
+  video_in?: Maybe<String[] | String>;
+  video_not_in?: Maybe<String[] | String>;
+  video_lt?: Maybe<String>;
+  video_lte?: Maybe<String>;
+  video_gt?: Maybe<String>;
+  video_gte?: Maybe<String>;
+  video_contains?: Maybe<String>;
+  video_not_contains?: Maybe<String>;
+  video_starts_with?: Maybe<String>;
+  video_not_starts_with?: Maybe<String>;
+  video_ends_with?: Maybe<String>;
+  video_not_ends_with?: Maybe<String>;
+  AND?: Maybe<ExcersiseWhereInput[] | ExcersiseWhereInput>;
+  OR?: Maybe<ExcersiseWhereInput[] | ExcersiseWhereInput>;
+  NOT?: Maybe<ExcersiseWhereInput[] | ExcersiseWhereInput>;
+}
+
+export interface BlockWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  sequence?: Maybe<Int>;
+  sequence_not?: Maybe<Int>;
+  sequence_in?: Maybe<Int[] | Int>;
+  sequence_not_in?: Maybe<Int[] | Int>;
+  sequence_lt?: Maybe<Int>;
+  sequence_lte?: Maybe<Int>;
+  sequence_gt?: Maybe<Int>;
+  sequence_gte?: Maybe<Int>;
+  title?: Maybe<String>;
+  title_not?: Maybe<String>;
+  title_in?: Maybe<String[] | String>;
+  title_not_in?: Maybe<String[] | String>;
+  title_lt?: Maybe<String>;
+  title_lte?: Maybe<String>;
+  title_gt?: Maybe<String>;
+  title_gte?: Maybe<String>;
+  title_contains?: Maybe<String>;
+  title_not_contains?: Maybe<String>;
+  title_starts_with?: Maybe<String>;
+  title_not_starts_with?: Maybe<String>;
+  title_ends_with?: Maybe<String>;
+  title_not_ends_with?: Maybe<String>;
+  duration?: Maybe<Int>;
+  duration_not?: Maybe<Int>;
+  duration_in?: Maybe<Int[] | Int>;
+  duration_not_in?: Maybe<Int[] | Int>;
+  duration_lt?: Maybe<Int>;
+  duration_lte?: Maybe<Int>;
+  duration_gt?: Maybe<Int>;
+  duration_gte?: Maybe<Int>;
+  variation?: Maybe<String>;
+  variation_not?: Maybe<String>;
+  variation_in?: Maybe<String[] | String>;
+  variation_not_in?: Maybe<String[] | String>;
+  variation_lt?: Maybe<String>;
+  variation_lte?: Maybe<String>;
+  variation_gt?: Maybe<String>;
+  variation_gte?: Maybe<String>;
+  variation_contains?: Maybe<String>;
+  variation_not_contains?: Maybe<String>;
+  variation_starts_with?: Maybe<String>;
+  variation_not_starts_with?: Maybe<String>;
+  variation_ends_with?: Maybe<String>;
+  variation_not_ends_with?: Maybe<String>;
+  format?: Maybe<FormatWhereInput>;
+  tracks_every?: Maybe<TrackWhereInput>;
+  tracks_some?: Maybe<TrackWhereInput>;
+  tracks_none?: Maybe<TrackWhereInput>;
+  excersises_every?: Maybe<ExcersiseWhereInput>;
+  excersises_some?: Maybe<ExcersiseWhereInput>;
+  excersises_none?: Maybe<ExcersiseWhereInput>;
+  AND?: Maybe<BlockWhereInput[] | BlockWhereInput>;
+  OR?: Maybe<BlockWhereInput[] | BlockWhereInput>;
+  NOT?: Maybe<BlockWhereInput[] | BlockWhereInput>;
+}
+
+export interface FormatWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  name?: Maybe<String>;
+  name_not?: Maybe<String>;
+  name_in?: Maybe<String[] | String>;
+  name_not_in?: Maybe<String[] | String>;
+  name_lt?: Maybe<String>;
+  name_lte?: Maybe<String>;
+  name_gt?: Maybe<String>;
+  name_gte?: Maybe<String>;
+  name_contains?: Maybe<String>;
+  name_not_contains?: Maybe<String>;
+  name_starts_with?: Maybe<String>;
+  name_not_starts_with?: Maybe<String>;
+  name_ends_with?: Maybe<String>;
+  name_not_ends_with?: Maybe<String>;
+  description?: Maybe<String>;
+  description_not?: Maybe<String>;
+  description_in?: Maybe<String[] | String>;
+  description_not_in?: Maybe<String[] | String>;
+  description_lt?: Maybe<String>;
+  description_lte?: Maybe<String>;
+  description_gt?: Maybe<String>;
+  description_gte?: Maybe<String>;
+  description_contains?: Maybe<String>;
+  description_not_contains?: Maybe<String>;
+  description_starts_with?: Maybe<String>;
+  description_not_starts_with?: Maybe<String>;
+  description_ends_with?: Maybe<String>;
+  description_not_ends_with?: Maybe<String>;
+  AND?: Maybe<FormatWhereInput[] | FormatWhereInput>;
+  OR?: Maybe<FormatWhereInput[] | FormatWhereInput>;
+  NOT?: Maybe<FormatWhereInput[] | FormatWhereInput>;
+}
+
+export type CommentWhereUniqueInput = AtLeastOne<{
+  id: Maybe<ID_Input>;
+}>;
+
+export interface CommentWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  text?: Maybe<String>;
+  text_not?: Maybe<String>;
+  text_in?: Maybe<String[] | String>;
+  text_not_in?: Maybe<String[] | String>;
+  text_lt?: Maybe<String>;
+  text_lte?: Maybe<String>;
+  text_gt?: Maybe<String>;
+  text_gte?: Maybe<String>;
+  text_contains?: Maybe<String>;
+  text_not_contains?: Maybe<String>;
+  text_starts_with?: Maybe<String>;
+  text_not_starts_with?: Maybe<String>;
+  text_ends_with?: Maybe<String>;
+  text_not_ends_with?: Maybe<String>;
+  author?: Maybe<UserWhereInput>;
+  createdAt?: Maybe<DateTimeInput>;
+  createdAt_not?: Maybe<DateTimeInput>;
+  createdAt_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_not_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_lt?: Maybe<DateTimeInput>;
+  createdAt_lte?: Maybe<DateTimeInput>;
+  createdAt_gt?: Maybe<DateTimeInput>;
+  createdAt_gte?: Maybe<DateTimeInput>;
+  AND?: Maybe<CommentWhereInput[] | CommentWhereInput>;
+  OR?: Maybe<CommentWhereInput[] | CommentWhereInput>;
+  NOT?: Maybe<CommentWhereInput[] | CommentWhereInput>;
+}
+
+export interface UserWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  email?: Maybe<String>;
+  email_not?: Maybe<String>;
+  email_in?: Maybe<String[] | String>;
+  email_not_in?: Maybe<String[] | String>;
+  email_lt?: Maybe<String>;
+  email_lte?: Maybe<String>;
+  email_gt?: Maybe<String>;
+  email_gte?: Maybe<String>;
+  email_contains?: Maybe<String>;
+  email_not_contains?: Maybe<String>;
+  email_starts_with?: Maybe<String>;
+  email_not_starts_with?: Maybe<String>;
+  email_ends_with?: Maybe<String>;
+  email_not_ends_with?: Maybe<String>;
+  name?: Maybe<String>;
+  name_not?: Maybe<String>;
+  name_in?: Maybe<String[] | String>;
+  name_not_in?: Maybe<String[] | String>;
+  name_lt?: Maybe<String>;
+  name_lte?: Maybe<String>;
+  name_gt?: Maybe<String>;
+  name_gte?: Maybe<String>;
+  name_contains?: Maybe<String>;
+  name_not_contains?: Maybe<String>;
+  name_starts_with?: Maybe<String>;
+  name_not_starts_with?: Maybe<String>;
+  name_ends_with?: Maybe<String>;
+  name_not_ends_with?: Maybe<String>;
+  abbreviation?: Maybe<String>;
+  abbreviation_not?: Maybe<String>;
+  abbreviation_in?: Maybe<String[] | String>;
+  abbreviation_not_in?: Maybe<String[] | String>;
+  abbreviation_lt?: Maybe<String>;
+  abbreviation_lte?: Maybe<String>;
+  abbreviation_gt?: Maybe<String>;
+  abbreviation_gte?: Maybe<String>;
+  abbreviation_contains?: Maybe<String>;
+  abbreviation_not_contains?: Maybe<String>;
+  abbreviation_starts_with?: Maybe<String>;
+  abbreviation_not_starts_with?: Maybe<String>;
+  abbreviation_ends_with?: Maybe<String>;
+  abbreviation_not_ends_with?: Maybe<String>;
+  password?: Maybe<String>;
+  password_not?: Maybe<String>;
+  password_in?: Maybe<String[] | String>;
+  password_not_in?: Maybe<String[] | String>;
+  password_lt?: Maybe<String>;
+  password_lte?: Maybe<String>;
+  password_gt?: Maybe<String>;
+  password_gte?: Maybe<String>;
+  password_contains?: Maybe<String>;
+  password_not_contains?: Maybe<String>;
+  password_starts_with?: Maybe<String>;
+  password_not_starts_with?: Maybe<String>;
+  password_ends_with?: Maybe<String>;
+  password_not_ends_with?: Maybe<String>;
+  createdAt?: Maybe<DateTimeInput>;
+  createdAt_not?: Maybe<DateTimeInput>;
+  createdAt_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_not_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_lt?: Maybe<DateTimeInput>;
+  createdAt_lte?: Maybe<DateTimeInput>;
+  createdAt_gt?: Maybe<DateTimeInput>;
+  createdAt_gte?: Maybe<DateTimeInput>;
+  comments_every?: Maybe<CommentWhereInput>;
+  comments_some?: Maybe<CommentWhereInput>;
+  comments_none?: Maybe<CommentWhereInput>;
+  ratings_every?: Maybe<RatingWhereInput>;
+  ratings_some?: Maybe<RatingWhereInput>;
+  ratings_none?: Maybe<RatingWhereInput>;
+  AND?: Maybe<UserWhereInput[] | UserWhereInput>;
+  OR?: Maybe<UserWhereInput[] | UserWhereInput>;
+  NOT?: Maybe<UserWhereInput[] | UserWhereInput>;
+}
+
+export interface RatingWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  user?: Maybe<UserWhereInput>;
+  value?: Maybe<Int>;
+  value_not?: Maybe<Int>;
+  value_in?: Maybe<Int[] | Int>;
+  value_not_in?: Maybe<Int[] | Int>;
+  value_lt?: Maybe<Int>;
+  value_lte?: Maybe<Int>;
+  value_gt?: Maybe<Int>;
+  value_gte?: Maybe<Int>;
+  comment?: Maybe<String>;
+  comment_not?: Maybe<String>;
+  comment_in?: Maybe<String[] | String>;
+  comment_not_in?: Maybe<String[] | String>;
+  comment_lt?: Maybe<String>;
+  comment_lte?: Maybe<String>;
+  comment_gt?: Maybe<String>;
+  comment_gte?: Maybe<String>;
+  comment_contains?: Maybe<String>;
+  comment_not_contains?: Maybe<String>;
+  comment_starts_with?: Maybe<String>;
+  comment_not_starts_with?: Maybe<String>;
+  comment_ends_with?: Maybe<String>;
+  comment_not_ends_with?: Maybe<String>;
+  createdAt?: Maybe<DateTimeInput>;
+  createdAt_not?: Maybe<DateTimeInput>;
+  createdAt_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_not_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_lt?: Maybe<DateTimeInput>;
+  createdAt_lte?: Maybe<DateTimeInput>;
+  createdAt_gt?: Maybe<DateTimeInput>;
+  createdAt_gte?: Maybe<DateTimeInput>;
+  AND?: Maybe<RatingWhereInput[] | RatingWhereInput>;
+  OR?: Maybe<RatingWhereInput[] | RatingWhereInput>;
+  NOT?: Maybe<RatingWhereInput[] | RatingWhereInput>;
+}
+
+export type ExcersiseWhereUniqueInput = AtLeastOne<{
+  id: Maybe<ID_Input>;
+}>;
+
+export type FormatWhereUniqueInput = AtLeastOne<{
+  id: Maybe<ID_Input>;
+}>;
+
+export type RatingWhereUniqueInput = AtLeastOne<{
+  id: Maybe<ID_Input>;
+}>;
+
+export type TrackWhereUniqueInput = AtLeastOne<{
+  id: Maybe<ID_Input>;
+}>;
+
+export type TrainingWhereUniqueInput = AtLeastOne<{
+  id: Maybe<ID_Input>;
+}>;
+
+export interface TrainingWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  title?: Maybe<String>;
+  title_not?: Maybe<String>;
+  title_in?: Maybe<String[] | String>;
+  title_not_in?: Maybe<String[] | String>;
+  title_lt?: Maybe<String>;
+  title_lte?: Maybe<String>;
+  title_gt?: Maybe<String>;
+  title_gte?: Maybe<String>;
+  title_contains?: Maybe<String>;
+  title_not_contains?: Maybe<String>;
+  title_starts_with?: Maybe<String>;
+  title_not_starts_with?: Maybe<String>;
+  title_ends_with?: Maybe<String>;
+  title_not_ends_with?: Maybe<String>;
+  content_every?: Maybe<BlockWhereInput>;
+  content_some?: Maybe<BlockWhereInput>;
+  content_none?: Maybe<BlockWhereInput>;
+  createdAt?: Maybe<DateTimeInput>;
+  createdAt_not?: Maybe<DateTimeInput>;
+  createdAt_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_not_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_lt?: Maybe<DateTimeInput>;
+  createdAt_lte?: Maybe<DateTimeInput>;
+  createdAt_gt?: Maybe<DateTimeInput>;
+  createdAt_gte?: Maybe<DateTimeInput>;
+  trainingDate?: Maybe<DateTimeInput>;
+  trainingDate_not?: Maybe<DateTimeInput>;
+  trainingDate_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  trainingDate_not_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  trainingDate_lt?: Maybe<DateTimeInput>;
+  trainingDate_lte?: Maybe<DateTimeInput>;
+  trainingDate_gt?: Maybe<DateTimeInput>;
+  trainingDate_gte?: Maybe<DateTimeInput>;
+  participants_every?: Maybe<UserWhereInput>;
+  participants_some?: Maybe<UserWhereInput>;
+  participants_none?: Maybe<UserWhereInput>;
+  ratings_every?: Maybe<RatingWhereInput>;
+  ratings_some?: Maybe<RatingWhereInput>;
+  ratings_none?: Maybe<RatingWhereInput>;
+  AND?: Maybe<TrainingWhereInput[] | TrainingWhereInput>;
+  OR?: Maybe<TrainingWhereInput[] | TrainingWhereInput>;
+  NOT?: Maybe<TrainingWhereInput[] | TrainingWhereInput>;
+}
+
+export type UserWhereUniqueInput = AtLeastOne<{
+  id: Maybe<ID_Input>;
+  email?: Maybe<String>;
+}>;
+
+export interface BlockCreateInput {
+  id?: Maybe<ID_Input>;
+  sequence: Int;
+  title: String;
+  duration: Int;
+  variation?: Maybe<String>;
+  format?: Maybe<FormatCreateOneInput>;
+  tracks?: Maybe<TrackCreateManyInput>;
+  excersises?: Maybe<ExcersiseCreateManyInput>;
+}
+
+export interface FormatCreateOneInput {
+  create?: Maybe<FormatCreateInput>;
+  connect?: Maybe<FormatWhereUniqueInput>;
+}
+
+export interface FormatCreateInput {
+  id?: Maybe<ID_Input>;
+  name: String;
+  description: String;
+}
+
+export interface TrackCreateManyInput {
+  create?: Maybe<TrackCreateInput[] | TrackCreateInput>;
+  connect?: Maybe<TrackWhereUniqueInput[] | TrackWhereUniqueInput>;
+}
+
+export interface TrackCreateInput {
+  id?: Maybe<ID_Input>;
+  title: String;
+  artist: String;
+  duration: Int;
+  link: String;
+}
+
+export interface ExcersiseCreateManyInput {
+  create?: Maybe<ExcersiseCreateInput[] | ExcersiseCreateInput>;
+  connect?: Maybe<ExcersiseWhereUniqueInput[] | ExcersiseWhereUniqueInput>;
+}
+
+export interface ExcersiseCreateInput {
+  id?: Maybe<ID_Input>;
+  name: String;
+  description: String;
+  video: String;
+  targets?: Maybe<ExcersiseCreatetargetsInput>;
+}
+
+export interface ExcersiseCreatetargetsInput {
+  set?: Maybe<String[] | String>;
+}
+
+export interface BlockUpdateInput {
+  sequence?: Maybe<Int>;
+  title?: Maybe<String>;
+  duration?: Maybe<Int>;
+  variation?: Maybe<String>;
+  format?: Maybe<FormatUpdateOneInput>;
+  tracks?: Maybe<TrackUpdateManyInput>;
+  excersises?: Maybe<ExcersiseUpdateManyInput>;
+}
+
+export interface FormatUpdateOneInput {
+  create?: Maybe<FormatCreateInput>;
+  update?: Maybe<FormatUpdateDataInput>;
+  upsert?: Maybe<FormatUpsertNestedInput>;
+  delete?: Maybe<Boolean>;
+  disconnect?: Maybe<Boolean>;
+  connect?: Maybe<FormatWhereUniqueInput>;
+}
+
+export interface FormatUpdateDataInput {
+  name?: Maybe<String>;
+  description?: Maybe<String>;
+}
+
+export interface FormatUpsertNestedInput {
+  update: FormatUpdateDataInput;
+  create: FormatCreateInput;
+}
+
+export interface TrackUpdateManyInput {
+  create?: Maybe<TrackCreateInput[] | TrackCreateInput>;
+  update?: Maybe<
+    | TrackUpdateWithWhereUniqueNestedInput[]
+    | TrackUpdateWithWhereUniqueNestedInput
+  >;
+  upsert?: Maybe<
+    | TrackUpsertWithWhereUniqueNestedInput[]
+    | TrackUpsertWithWhereUniqueNestedInput
+  >;
+  delete?: Maybe<TrackWhereUniqueInput[] | TrackWhereUniqueInput>;
+  connect?: Maybe<TrackWhereUniqueInput[] | TrackWhereUniqueInput>;
+  set?: Maybe<TrackWhereUniqueInput[] | TrackWhereUniqueInput>;
+  disconnect?: Maybe<TrackWhereUniqueInput[] | TrackWhereUniqueInput>;
+  deleteMany?: Maybe<TrackScalarWhereInput[] | TrackScalarWhereInput>;
+  updateMany?: Maybe<
+    TrackUpdateManyWithWhereNestedInput[] | TrackUpdateManyWithWhereNestedInput
+  >;
+}
+
+export interface TrackUpdateWithWhereUniqueNestedInput {
+  where: TrackWhereUniqueInput;
+  data: TrackUpdateDataInput;
+}
+
+export interface TrackUpdateDataInput {
+  title?: Maybe<String>;
+  artist?: Maybe<String>;
+  duration?: Maybe<Int>;
+  link?: Maybe<String>;
+}
+
+export interface TrackUpsertWithWhereUniqueNestedInput {
+  where: TrackWhereUniqueInput;
+  update: TrackUpdateDataInput;
+  create: TrackCreateInput;
+}
+
+export interface TrackScalarWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  title?: Maybe<String>;
+  title_not?: Maybe<String>;
+  title_in?: Maybe<String[] | String>;
+  title_not_in?: Maybe<String[] | String>;
+  title_lt?: Maybe<String>;
+  title_lte?: Maybe<String>;
+  title_gt?: Maybe<String>;
+  title_gte?: Maybe<String>;
+  title_contains?: Maybe<String>;
+  title_not_contains?: Maybe<String>;
+  title_starts_with?: Maybe<String>;
+  title_not_starts_with?: Maybe<String>;
+  title_ends_with?: Maybe<String>;
+  title_not_ends_with?: Maybe<String>;
+  artist?: Maybe<String>;
+  artist_not?: Maybe<String>;
+  artist_in?: Maybe<String[] | String>;
+  artist_not_in?: Maybe<String[] | String>;
+  artist_lt?: Maybe<String>;
+  artist_lte?: Maybe<String>;
+  artist_gt?: Maybe<String>;
+  artist_gte?: Maybe<String>;
+  artist_contains?: Maybe<String>;
+  artist_not_contains?: Maybe<String>;
+  artist_starts_with?: Maybe<String>;
+  artist_not_starts_with?: Maybe<String>;
+  artist_ends_with?: Maybe<String>;
+  artist_not_ends_with?: Maybe<String>;
+  duration?: Maybe<Int>;
+  duration_not?: Maybe<Int>;
+  duration_in?: Maybe<Int[] | Int>;
+  duration_not_in?: Maybe<Int[] | Int>;
+  duration_lt?: Maybe<Int>;
+  duration_lte?: Maybe<Int>;
+  duration_gt?: Maybe<Int>;
+  duration_gte?: Maybe<Int>;
+  link?: Maybe<String>;
+  link_not?: Maybe<String>;
+  link_in?: Maybe<String[] | String>;
+  link_not_in?: Maybe<String[] | String>;
+  link_lt?: Maybe<String>;
+  link_lte?: Maybe<String>;
+  link_gt?: Maybe<String>;
+  link_gte?: Maybe<String>;
+  link_contains?: Maybe<String>;
+  link_not_contains?: Maybe<String>;
+  link_starts_with?: Maybe<String>;
+  link_not_starts_with?: Maybe<String>;
+  link_ends_with?: Maybe<String>;
+  link_not_ends_with?: Maybe<String>;
+  AND?: Maybe<TrackScalarWhereInput[] | TrackScalarWhereInput>;
+  OR?: Maybe<TrackScalarWhereInput[] | TrackScalarWhereInput>;
+  NOT?: Maybe<TrackScalarWhereInput[] | TrackScalarWhereInput>;
+}
+
+export interface TrackUpdateManyWithWhereNestedInput {
+  where: TrackScalarWhereInput;
+  data: TrackUpdateManyDataInput;
+}
+
+export interface TrackUpdateManyDataInput {
+  title?: Maybe<String>;
+  artist?: Maybe<String>;
+  duration?: Maybe<Int>;
+  link?: Maybe<String>;
+}
+
+export interface ExcersiseUpdateManyInput {
+  create?: Maybe<ExcersiseCreateInput[] | ExcersiseCreateInput>;
+  update?: Maybe<
+    | ExcersiseUpdateWithWhereUniqueNestedInput[]
+    | ExcersiseUpdateWithWhereUniqueNestedInput
+  >;
+  upsert?: Maybe<
+    | ExcersiseUpsertWithWhereUniqueNestedInput[]
+    | ExcersiseUpsertWithWhereUniqueNestedInput
+  >;
+  delete?: Maybe<ExcersiseWhereUniqueInput[] | ExcersiseWhereUniqueInput>;
+  connect?: Maybe<ExcersiseWhereUniqueInput[] | ExcersiseWhereUniqueInput>;
+  set?: Maybe<ExcersiseWhereUniqueInput[] | ExcersiseWhereUniqueInput>;
+  disconnect?: Maybe<ExcersiseWhereUniqueInput[] | ExcersiseWhereUniqueInput>;
+  deleteMany?: Maybe<ExcersiseScalarWhereInput[] | ExcersiseScalarWhereInput>;
+  updateMany?: Maybe<
+    | ExcersiseUpdateManyWithWhereNestedInput[]
+    | ExcersiseUpdateManyWithWhereNestedInput
+  >;
+}
+
+export interface ExcersiseUpdateWithWhereUniqueNestedInput {
+  where: ExcersiseWhereUniqueInput;
+  data: ExcersiseUpdateDataInput;
+}
+
+export interface ExcersiseUpdateDataInput {
+  name?: Maybe<String>;
+  description?: Maybe<String>;
+  video?: Maybe<String>;
+  targets?: Maybe<ExcersiseUpdatetargetsInput>;
+}
+
+export interface ExcersiseUpdatetargetsInput {
+  set?: Maybe<String[] | String>;
+}
+
+export interface ExcersiseUpsertWithWhereUniqueNestedInput {
+  where: ExcersiseWhereUniqueInput;
+  update: ExcersiseUpdateDataInput;
+  create: ExcersiseCreateInput;
+}
+
+export interface ExcersiseScalarWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  name?: Maybe<String>;
+  name_not?: Maybe<String>;
+  name_in?: Maybe<String[] | String>;
+  name_not_in?: Maybe<String[] | String>;
+  name_lt?: Maybe<String>;
+  name_lte?: Maybe<String>;
+  name_gt?: Maybe<String>;
+  name_gte?: Maybe<String>;
+  name_contains?: Maybe<String>;
+  name_not_contains?: Maybe<String>;
+  name_starts_with?: Maybe<String>;
+  name_not_starts_with?: Maybe<String>;
+  name_ends_with?: Maybe<String>;
+  name_not_ends_with?: Maybe<String>;
+  description?: Maybe<String>;
+  description_not?: Maybe<String>;
+  description_in?: Maybe<String[] | String>;
+  description_not_in?: Maybe<String[] | String>;
+  description_lt?: Maybe<String>;
+  description_lte?: Maybe<String>;
+  description_gt?: Maybe<String>;
+  description_gte?: Maybe<String>;
+  description_contains?: Maybe<String>;
+  description_not_contains?: Maybe<String>;
+  description_starts_with?: Maybe<String>;
+  description_not_starts_with?: Maybe<String>;
+  description_ends_with?: Maybe<String>;
+  description_not_ends_with?: Maybe<String>;
+  video?: Maybe<String>;
+  video_not?: Maybe<String>;
+  video_in?: Maybe<String[] | String>;
+  video_not_in?: Maybe<String[] | String>;
+  video_lt?: Maybe<String>;
+  video_lte?: Maybe<String>;
+  video_gt?: Maybe<String>;
+  video_gte?: Maybe<String>;
+  video_contains?: Maybe<String>;
+  video_not_contains?: Maybe<String>;
+  video_starts_with?: Maybe<String>;
+  video_not_starts_with?: Maybe<String>;
+  video_ends_with?: Maybe<String>;
+  video_not_ends_with?: Maybe<String>;
+  AND?: Maybe<ExcersiseScalarWhereInput[] | ExcersiseScalarWhereInput>;
+  OR?: Maybe<ExcersiseScalarWhereInput[] | ExcersiseScalarWhereInput>;
+  NOT?: Maybe<ExcersiseScalarWhereInput[] | ExcersiseScalarWhereInput>;
+}
+
+export interface ExcersiseUpdateManyWithWhereNestedInput {
+  where: ExcersiseScalarWhereInput;
+  data: ExcersiseUpdateManyDataInput;
+}
+
+export interface ExcersiseUpdateManyDataInput {
+  name?: Maybe<String>;
+  description?: Maybe<String>;
+  video?: Maybe<String>;
+  targets?: Maybe<ExcersiseUpdatetargetsInput>;
+}
+
+export interface BlockUpdateManyMutationInput {
+  sequence?: Maybe<Int>;
+  title?: Maybe<String>;
+  duration?: Maybe<Int>;
+  variation?: Maybe<String>;
+}
+
+export interface CommentCreateInput {
+  id?: Maybe<ID_Input>;
+  text: String;
+  author: UserCreateOneWithoutCommentsInput;
+}
+
+export interface UserCreateOneWithoutCommentsInput {
+  create?: Maybe<UserCreateWithoutCommentsInput>;
+  connect?: Maybe<UserWhereUniqueInput>;
+}
+
+export interface UserCreateWithoutCommentsInput {
+  id?: Maybe<ID_Input>;
+  email: String;
+  name: String;
+  abbreviation: String;
+  password: String;
+  ratings?: Maybe<RatingCreateManyWithoutUserInput>;
+}
+
+export interface RatingCreateManyWithoutUserInput {
+  create?: Maybe<RatingCreateWithoutUserInput[] | RatingCreateWithoutUserInput>;
+  connect?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+}
+
+export interface RatingCreateWithoutUserInput {
+  id?: Maybe<ID_Input>;
+  value: Int;
+  comment: String;
+}
+
+export interface CommentUpdateInput {
+  text?: Maybe<String>;
+  author?: Maybe<UserUpdateOneRequiredWithoutCommentsInput>;
+}
+
+export interface UserUpdateOneRequiredWithoutCommentsInput {
+  create?: Maybe<UserCreateWithoutCommentsInput>;
+  update?: Maybe<UserUpdateWithoutCommentsDataInput>;
+  upsert?: Maybe<UserUpsertWithoutCommentsInput>;
+  connect?: Maybe<UserWhereUniqueInput>;
+}
+
+export interface UserUpdateWithoutCommentsDataInput {
+  email?: Maybe<String>;
+  name?: Maybe<String>;
+  abbreviation?: Maybe<String>;
+  password?: Maybe<String>;
+  ratings?: Maybe<RatingUpdateManyWithoutUserInput>;
+}
+
+export interface RatingUpdateManyWithoutUserInput {
+  create?: Maybe<RatingCreateWithoutUserInput[] | RatingCreateWithoutUserInput>;
+  delete?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+  connect?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+  set?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+  disconnect?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+  update?: Maybe<
+    | RatingUpdateWithWhereUniqueWithoutUserInput[]
+    | RatingUpdateWithWhereUniqueWithoutUserInput
+  >;
+  upsert?: Maybe<
+    | RatingUpsertWithWhereUniqueWithoutUserInput[]
+    | RatingUpsertWithWhereUniqueWithoutUserInput
+  >;
+  deleteMany?: Maybe<RatingScalarWhereInput[] | RatingScalarWhereInput>;
+  updateMany?: Maybe<
+    | RatingUpdateManyWithWhereNestedInput[]
+    | RatingUpdateManyWithWhereNestedInput
+  >;
+}
+
+export interface RatingUpdateWithWhereUniqueWithoutUserInput {
+  where: RatingWhereUniqueInput;
+  data: RatingUpdateWithoutUserDataInput;
+}
+
+export interface RatingUpdateWithoutUserDataInput {
+  value?: Maybe<Int>;
+  comment?: Maybe<String>;
+}
+
+export interface RatingUpsertWithWhereUniqueWithoutUserInput {
+  where: RatingWhereUniqueInput;
+  update: RatingUpdateWithoutUserDataInput;
+  create: RatingCreateWithoutUserInput;
+}
+
+export interface RatingScalarWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  value?: Maybe<Int>;
+  value_not?: Maybe<Int>;
+  value_in?: Maybe<Int[] | Int>;
+  value_not_in?: Maybe<Int[] | Int>;
+  value_lt?: Maybe<Int>;
+  value_lte?: Maybe<Int>;
+  value_gt?: Maybe<Int>;
+  value_gte?: Maybe<Int>;
+  comment?: Maybe<String>;
+  comment_not?: Maybe<String>;
+  comment_in?: Maybe<String[] | String>;
+  comment_not_in?: Maybe<String[] | String>;
+  comment_lt?: Maybe<String>;
+  comment_lte?: Maybe<String>;
+  comment_gt?: Maybe<String>;
+  comment_gte?: Maybe<String>;
+  comment_contains?: Maybe<String>;
+  comment_not_contains?: Maybe<String>;
+  comment_starts_with?: Maybe<String>;
+  comment_not_starts_with?: Maybe<String>;
+  comment_ends_with?: Maybe<String>;
+  comment_not_ends_with?: Maybe<String>;
+  createdAt?: Maybe<DateTimeInput>;
+  createdAt_not?: Maybe<DateTimeInput>;
+  createdAt_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_not_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_lt?: Maybe<DateTimeInput>;
+  createdAt_lte?: Maybe<DateTimeInput>;
+  createdAt_gt?: Maybe<DateTimeInput>;
+  createdAt_gte?: Maybe<DateTimeInput>;
+  AND?: Maybe<RatingScalarWhereInput[] | RatingScalarWhereInput>;
+  OR?: Maybe<RatingScalarWhereInput[] | RatingScalarWhereInput>;
+  NOT?: Maybe<RatingScalarWhereInput[] | RatingScalarWhereInput>;
+}
+
+export interface RatingUpdateManyWithWhereNestedInput {
+  where: RatingScalarWhereInput;
+  data: RatingUpdateManyDataInput;
+}
+
+export interface RatingUpdateManyDataInput {
+  value?: Maybe<Int>;
+  comment?: Maybe<String>;
+}
+
+export interface UserUpsertWithoutCommentsInput {
+  update: UserUpdateWithoutCommentsDataInput;
+  create: UserCreateWithoutCommentsInput;
+}
+
+export interface CommentUpdateManyMutationInput {
+  text?: Maybe<String>;
+}
+
+export interface ExcersiseUpdateInput {
+  name?: Maybe<String>;
+  description?: Maybe<String>;
+  video?: Maybe<String>;
+  targets?: Maybe<ExcersiseUpdatetargetsInput>;
+}
+
+export interface ExcersiseUpdateManyMutationInput {
+  name?: Maybe<String>;
+  description?: Maybe<String>;
+  video?: Maybe<String>;
+  targets?: Maybe<ExcersiseUpdatetargetsInput>;
+}
+
+export interface FormatUpdateInput {
+  name?: Maybe<String>;
+  description?: Maybe<String>;
+}
+
+export interface FormatUpdateManyMutationInput {
+  name?: Maybe<String>;
+  description?: Maybe<String>;
+}
+
+export interface RatingCreateInput {
+  id?: Maybe<ID_Input>;
+  user: UserCreateOneWithoutRatingsInput;
+  value: Int;
+  comment: String;
+}
+
+export interface UserCreateOneWithoutRatingsInput {
+  create?: Maybe<UserCreateWithoutRatingsInput>;
+  connect?: Maybe<UserWhereUniqueInput>;
+}
+
+export interface UserCreateWithoutRatingsInput {
+  id?: Maybe<ID_Input>;
+  email: String;
+  name: String;
+  abbreviation: String;
+  password: String;
+  comments?: Maybe<CommentCreateManyWithoutAuthorInput>;
+}
+
+export interface CommentCreateManyWithoutAuthorInput {
+  create?: Maybe<
+    CommentCreateWithoutAuthorInput[] | CommentCreateWithoutAuthorInput
+  >;
+  connect?: Maybe<CommentWhereUniqueInput[] | CommentWhereUniqueInput>;
+}
+
+export interface CommentCreateWithoutAuthorInput {
+  id?: Maybe<ID_Input>;
+  text: String;
+}
+
+export interface RatingUpdateInput {
+  user?: Maybe<UserUpdateOneRequiredWithoutRatingsInput>;
+  value?: Maybe<Int>;
+  comment?: Maybe<String>;
+}
+
+export interface UserUpdateOneRequiredWithoutRatingsInput {
+  create?: Maybe<UserCreateWithoutRatingsInput>;
+  update?: Maybe<UserUpdateWithoutRatingsDataInput>;
+  upsert?: Maybe<UserUpsertWithoutRatingsInput>;
+  connect?: Maybe<UserWhereUniqueInput>;
+}
+
+export interface UserUpdateWithoutRatingsDataInput {
+  email?: Maybe<String>;
+  name?: Maybe<String>;
+  abbreviation?: Maybe<String>;
+  password?: Maybe<String>;
+  comments?: Maybe<CommentUpdateManyWithoutAuthorInput>;
+}
+
+export interface CommentUpdateManyWithoutAuthorInput {
+  create?: Maybe<
+    CommentCreateWithoutAuthorInput[] | CommentCreateWithoutAuthorInput
+  >;
+  delete?: Maybe<CommentWhereUniqueInput[] | CommentWhereUniqueInput>;
+  connect?: Maybe<CommentWhereUniqueInput[] | CommentWhereUniqueInput>;
+  set?: Maybe<CommentWhereUniqueInput[] | CommentWhereUniqueInput>;
+  disconnect?: Maybe<CommentWhereUniqueInput[] | CommentWhereUniqueInput>;
+  update?: Maybe<
+    | CommentUpdateWithWhereUniqueWithoutAuthorInput[]
+    | CommentUpdateWithWhereUniqueWithoutAuthorInput
+  >;
+  upsert?: Maybe<
+    | CommentUpsertWithWhereUniqueWithoutAuthorInput[]
+    | CommentUpsertWithWhereUniqueWithoutAuthorInput
+  >;
+  deleteMany?: Maybe<CommentScalarWhereInput[] | CommentScalarWhereInput>;
+  updateMany?: Maybe<
+    | CommentUpdateManyWithWhereNestedInput[]
+    | CommentUpdateManyWithWhereNestedInput
+  >;
+}
+
+export interface CommentUpdateWithWhereUniqueWithoutAuthorInput {
+  where: CommentWhereUniqueInput;
+  data: CommentUpdateWithoutAuthorDataInput;
+}
+
+export interface CommentUpdateWithoutAuthorDataInput {
+  text?: Maybe<String>;
+}
+
+export interface CommentUpsertWithWhereUniqueWithoutAuthorInput {
+  where: CommentWhereUniqueInput;
+  update: CommentUpdateWithoutAuthorDataInput;
+  create: CommentCreateWithoutAuthorInput;
+}
+
+export interface CommentScalarWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  text?: Maybe<String>;
+  text_not?: Maybe<String>;
+  text_in?: Maybe<String[] | String>;
+  text_not_in?: Maybe<String[] | String>;
+  text_lt?: Maybe<String>;
+  text_lte?: Maybe<String>;
+  text_gt?: Maybe<String>;
+  text_gte?: Maybe<String>;
+  text_contains?: Maybe<String>;
+  text_not_contains?: Maybe<String>;
+  text_starts_with?: Maybe<String>;
+  text_not_starts_with?: Maybe<String>;
+  text_ends_with?: Maybe<String>;
+  text_not_ends_with?: Maybe<String>;
+  createdAt?: Maybe<DateTimeInput>;
+  createdAt_not?: Maybe<DateTimeInput>;
+  createdAt_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_not_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_lt?: Maybe<DateTimeInput>;
+  createdAt_lte?: Maybe<DateTimeInput>;
+  createdAt_gt?: Maybe<DateTimeInput>;
+  createdAt_gte?: Maybe<DateTimeInput>;
+  AND?: Maybe<CommentScalarWhereInput[] | CommentScalarWhereInput>;
+  OR?: Maybe<CommentScalarWhereInput[] | CommentScalarWhereInput>;
+  NOT?: Maybe<CommentScalarWhereInput[] | CommentScalarWhereInput>;
+}
+
+export interface CommentUpdateManyWithWhereNestedInput {
+  where: CommentScalarWhereInput;
+  data: CommentUpdateManyDataInput;
+}
+
+export interface CommentUpdateManyDataInput {
+  text?: Maybe<String>;
+}
+
+export interface UserUpsertWithoutRatingsInput {
+  update: UserUpdateWithoutRatingsDataInput;
+  create: UserCreateWithoutRatingsInput;
+}
+
+export interface RatingUpdateManyMutationInput {
+  value?: Maybe<Int>;
+  comment?: Maybe<String>;
+}
+
+export interface TrackUpdateInput {
+  title?: Maybe<String>;
+  artist?: Maybe<String>;
+  duration?: Maybe<Int>;
+  link?: Maybe<String>;
+}
+
+export interface TrackUpdateManyMutationInput {
+  title?: Maybe<String>;
+  artist?: Maybe<String>;
+  duration?: Maybe<Int>;
+  link?: Maybe<String>;
+}
+
+export interface TrainingCreateInput {
+  id?: Maybe<ID_Input>;
+  title: String;
+  content?: Maybe<BlockCreateManyInput>;
+  trainingDate: DateTimeInput;
+  participants?: Maybe<UserCreateManyInput>;
+  ratings?: Maybe<RatingCreateManyInput>;
+}
+
+export interface BlockCreateManyInput {
+  create?: Maybe<BlockCreateInput[] | BlockCreateInput>;
+  connect?: Maybe<BlockWhereUniqueInput[] | BlockWhereUniqueInput>;
+}
+
+export interface UserCreateManyInput {
+  create?: Maybe<UserCreateInput[] | UserCreateInput>;
+  connect?: Maybe<UserWhereUniqueInput[] | UserWhereUniqueInput>;
+}
+
+export interface UserCreateInput {
+  id?: Maybe<ID_Input>;
+  email: String;
+  name: String;
+  abbreviation: String;
+  password: String;
+  comments?: Maybe<CommentCreateManyWithoutAuthorInput>;
+  ratings?: Maybe<RatingCreateManyWithoutUserInput>;
+}
+
+export interface RatingCreateManyInput {
+  create?: Maybe<RatingCreateInput[] | RatingCreateInput>;
+  connect?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+}
+
+export interface TrainingUpdateInput {
+  title?: Maybe<String>;
+  content?: Maybe<BlockUpdateManyInput>;
+  trainingDate?: Maybe<DateTimeInput>;
+  participants?: Maybe<UserUpdateManyInput>;
+  ratings?: Maybe<RatingUpdateManyInput>;
+}
+
+export interface BlockUpdateManyInput {
+  create?: Maybe<BlockCreateInput[] | BlockCreateInput>;
+  update?: Maybe<
+    | BlockUpdateWithWhereUniqueNestedInput[]
+    | BlockUpdateWithWhereUniqueNestedInput
+  >;
+  upsert?: Maybe<
+    | BlockUpsertWithWhereUniqueNestedInput[]
+    | BlockUpsertWithWhereUniqueNestedInput
+  >;
+  delete?: Maybe<BlockWhereUniqueInput[] | BlockWhereUniqueInput>;
+  connect?: Maybe<BlockWhereUniqueInput[] | BlockWhereUniqueInput>;
+  set?: Maybe<BlockWhereUniqueInput[] | BlockWhereUniqueInput>;
+  disconnect?: Maybe<BlockWhereUniqueInput[] | BlockWhereUniqueInput>;
+  deleteMany?: Maybe<BlockScalarWhereInput[] | BlockScalarWhereInput>;
+  updateMany?: Maybe<
+    BlockUpdateManyWithWhereNestedInput[] | BlockUpdateManyWithWhereNestedInput
+  >;
+}
+
+export interface BlockUpdateWithWhereUniqueNestedInput {
+  where: BlockWhereUniqueInput;
+  data: BlockUpdateDataInput;
+}
+
+export interface BlockUpdateDataInput {
+  sequence?: Maybe<Int>;
+  title?: Maybe<String>;
+  duration?: Maybe<Int>;
+  variation?: Maybe<String>;
+  format?: Maybe<FormatUpdateOneInput>;
+  tracks?: Maybe<TrackUpdateManyInput>;
+  excersises?: Maybe<ExcersiseUpdateManyInput>;
+}
+
+export interface BlockUpsertWithWhereUniqueNestedInput {
+  where: BlockWhereUniqueInput;
+  update: BlockUpdateDataInput;
+  create: BlockCreateInput;
+}
+
+export interface BlockScalarWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  sequence?: Maybe<Int>;
+  sequence_not?: Maybe<Int>;
+  sequence_in?: Maybe<Int[] | Int>;
+  sequence_not_in?: Maybe<Int[] | Int>;
+  sequence_lt?: Maybe<Int>;
+  sequence_lte?: Maybe<Int>;
+  sequence_gt?: Maybe<Int>;
+  sequence_gte?: Maybe<Int>;
+  title?: Maybe<String>;
+  title_not?: Maybe<String>;
+  title_in?: Maybe<String[] | String>;
+  title_not_in?: Maybe<String[] | String>;
+  title_lt?: Maybe<String>;
+  title_lte?: Maybe<String>;
+  title_gt?: Maybe<String>;
+  title_gte?: Maybe<String>;
+  title_contains?: Maybe<String>;
+  title_not_contains?: Maybe<String>;
+  title_starts_with?: Maybe<String>;
+  title_not_starts_with?: Maybe<String>;
+  title_ends_with?: Maybe<String>;
+  title_not_ends_with?: Maybe<String>;
+  duration?: Maybe<Int>;
+  duration_not?: Maybe<Int>;
+  duration_in?: Maybe<Int[] | Int>;
+  duration_not_in?: Maybe<Int[] | Int>;
+  duration_lt?: Maybe<Int>;
+  duration_lte?: Maybe<Int>;
+  duration_gt?: Maybe<Int>;
+  duration_gte?: Maybe<Int>;
+  variation?: Maybe<String>;
+  variation_not?: Maybe<String>;
+  variation_in?: Maybe<String[] | String>;
+  variation_not_in?: Maybe<String[] | String>;
+  variation_lt?: Maybe<String>;
+  variation_lte?: Maybe<String>;
+  variation_gt?: Maybe<String>;
+  variation_gte?: Maybe<String>;
+  variation_contains?: Maybe<String>;
+  variation_not_contains?: Maybe<String>;
+  variation_starts_with?: Maybe<String>;
+  variation_not_starts_with?: Maybe<String>;
+  variation_ends_with?: Maybe<String>;
+  variation_not_ends_with?: Maybe<String>;
+  AND?: Maybe<BlockScalarWhereInput[] | BlockScalarWhereInput>;
+  OR?: Maybe<BlockScalarWhereInput[] | BlockScalarWhereInput>;
+  NOT?: Maybe<BlockScalarWhereInput[] | BlockScalarWhereInput>;
+}
+
+export interface BlockUpdateManyWithWhereNestedInput {
+  where: BlockScalarWhereInput;
+  data: BlockUpdateManyDataInput;
+}
+
+export interface BlockUpdateManyDataInput {
+  sequence?: Maybe<Int>;
+  title?: Maybe<String>;
+  duration?: Maybe<Int>;
+  variation?: Maybe<String>;
+}
+
+export interface UserUpdateManyInput {
+  create?: Maybe<UserCreateInput[] | UserCreateInput>;
+  update?: Maybe<
+    | UserUpdateWithWhereUniqueNestedInput[]
+    | UserUpdateWithWhereUniqueNestedInput
+  >;
+  upsert?: Maybe<
+    | UserUpsertWithWhereUniqueNestedInput[]
+    | UserUpsertWithWhereUniqueNestedInput
+  >;
+  delete?: Maybe<UserWhereUniqueInput[] | UserWhereUniqueInput>;
+  connect?: Maybe<UserWhereUniqueInput[] | UserWhereUniqueInput>;
+  set?: Maybe<UserWhereUniqueInput[] | UserWhereUniqueInput>;
+  disconnect?: Maybe<UserWhereUniqueInput[] | UserWhereUniqueInput>;
+  deleteMany?: Maybe<UserScalarWhereInput[] | UserScalarWhereInput>;
+  updateMany?: Maybe<
+    UserUpdateManyWithWhereNestedInput[] | UserUpdateManyWithWhereNestedInput
+  >;
+}
+
+export interface UserUpdateWithWhereUniqueNestedInput {
+  where: UserWhereUniqueInput;
+  data: UserUpdateDataInput;
+}
+
+export interface UserUpdateDataInput {
+  email?: Maybe<String>;
+  name?: Maybe<String>;
+  abbreviation?: Maybe<String>;
+  password?: Maybe<String>;
+  comments?: Maybe<CommentUpdateManyWithoutAuthorInput>;
+  ratings?: Maybe<RatingUpdateManyWithoutUserInput>;
+}
+
+export interface UserUpsertWithWhereUniqueNestedInput {
+  where: UserWhereUniqueInput;
+  update: UserUpdateDataInput;
+  create: UserCreateInput;
+}
+
+export interface UserScalarWhereInput {
+  id?: Maybe<ID_Input>;
+  id_not?: Maybe<ID_Input>;
+  id_in?: Maybe<ID_Input[] | ID_Input>;
+  id_not_in?: Maybe<ID_Input[] | ID_Input>;
+  id_lt?: Maybe<ID_Input>;
+  id_lte?: Maybe<ID_Input>;
+  id_gt?: Maybe<ID_Input>;
+  id_gte?: Maybe<ID_Input>;
+  id_contains?: Maybe<ID_Input>;
+  id_not_contains?: Maybe<ID_Input>;
+  id_starts_with?: Maybe<ID_Input>;
+  id_not_starts_with?: Maybe<ID_Input>;
+  id_ends_with?: Maybe<ID_Input>;
+  id_not_ends_with?: Maybe<ID_Input>;
+  email?: Maybe<String>;
+  email_not?: Maybe<String>;
+  email_in?: Maybe<String[] | String>;
+  email_not_in?: Maybe<String[] | String>;
+  email_lt?: Maybe<String>;
+  email_lte?: Maybe<String>;
+  email_gt?: Maybe<String>;
+  email_gte?: Maybe<String>;
+  email_contains?: Maybe<String>;
+  email_not_contains?: Maybe<String>;
+  email_starts_with?: Maybe<String>;
+  email_not_starts_with?: Maybe<String>;
+  email_ends_with?: Maybe<String>;
+  email_not_ends_with?: Maybe<String>;
+  name?: Maybe<String>;
+  name_not?: Maybe<String>;
+  name_in?: Maybe<String[] | String>;
+  name_not_in?: Maybe<String[] | String>;
+  name_lt?: Maybe<String>;
+  name_lte?: Maybe<String>;
+  name_gt?: Maybe<String>;
+  name_gte?: Maybe<String>;
+  name_contains?: Maybe<String>;
+  name_not_contains?: Maybe<String>;
+  name_starts_with?: Maybe<String>;
+  name_not_starts_with?: Maybe<String>;
+  name_ends_with?: Maybe<String>;
+  name_not_ends_with?: Maybe<String>;
+  abbreviation?: Maybe<String>;
+  abbreviation_not?: Maybe<String>;
+  abbreviation_in?: Maybe<String[] | String>;
+  abbreviation_not_in?: Maybe<String[] | String>;
+  abbreviation_lt?: Maybe<String>;
+  abbreviation_lte?: Maybe<String>;
+  abbreviation_gt?: Maybe<String>;
+  abbreviation_gte?: Maybe<String>;
+  abbreviation_contains?: Maybe<String>;
+  abbreviation_not_contains?: Maybe<String>;
+  abbreviation_starts_with?: Maybe<String>;
+  abbreviation_not_starts_with?: Maybe<String>;
+  abbreviation_ends_with?: Maybe<String>;
+  abbreviation_not_ends_with?: Maybe<String>;
+  password?: Maybe<String>;
+  password_not?: Maybe<String>;
+  password_in?: Maybe<String[] | String>;
+  password_not_in?: Maybe<String[] | String>;
+  password_lt?: Maybe<String>;
+  password_lte?: Maybe<String>;
+  password_gt?: Maybe<String>;
+  password_gte?: Maybe<String>;
+  password_contains?: Maybe<String>;
+  password_not_contains?: Maybe<String>;
+  password_starts_with?: Maybe<String>;
+  password_not_starts_with?: Maybe<String>;
+  password_ends_with?: Maybe<String>;
+  password_not_ends_with?: Maybe<String>;
+  createdAt?: Maybe<DateTimeInput>;
+  createdAt_not?: Maybe<DateTimeInput>;
+  createdAt_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_not_in?: Maybe<DateTimeInput[] | DateTimeInput>;
+  createdAt_lt?: Maybe<DateTimeInput>;
+  createdAt_lte?: Maybe<DateTimeInput>;
+  createdAt_gt?: Maybe<DateTimeInput>;
+  createdAt_gte?: Maybe<DateTimeInput>;
+  AND?: Maybe<UserScalarWhereInput[] | UserScalarWhereInput>;
+  OR?: Maybe<UserScalarWhereInput[] | UserScalarWhereInput>;
+  NOT?: Maybe<UserScalarWhereInput[] | UserScalarWhereInput>;
+}
+
+export interface UserUpdateManyWithWhereNestedInput {
+  where: UserScalarWhereInput;
+  data: UserUpdateManyDataInput;
+}
+
+export interface UserUpdateManyDataInput {
+  email?: Maybe<String>;
+  name?: Maybe<String>;
+  abbreviation?: Maybe<String>;
+  password?: Maybe<String>;
+}
+
+export interface RatingUpdateManyInput {
+  create?: Maybe<RatingCreateInput[] | RatingCreateInput>;
+  update?: Maybe<
+    | RatingUpdateWithWhereUniqueNestedInput[]
+    | RatingUpdateWithWhereUniqueNestedInput
+  >;
+  upsert?: Maybe<
+    | RatingUpsertWithWhereUniqueNestedInput[]
+    | RatingUpsertWithWhereUniqueNestedInput
+  >;
+  delete?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+  connect?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+  set?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+  disconnect?: Maybe<RatingWhereUniqueInput[] | RatingWhereUniqueInput>;
+  deleteMany?: Maybe<RatingScalarWhereInput[] | RatingScalarWhereInput>;
+  updateMany?: Maybe<
+    | RatingUpdateManyWithWhereNestedInput[]
+    | RatingUpdateManyWithWhereNestedInput
+  >;
+}
+
+export interface RatingUpdateWithWhereUniqueNestedInput {
+  where: RatingWhereUniqueInput;
+  data: RatingUpdateDataInput;
+}
+
+export interface RatingUpdateDataInput {
+  user?: Maybe<UserUpdateOneRequiredWithoutRatingsInput>;
+  value?: Maybe<Int>;
+  comment?: Maybe<String>;
+}
+
+export interface RatingUpsertWithWhereUniqueNestedInput {
+  where: RatingWhereUniqueInput;
+  update: RatingUpdateDataInput;
+  create: RatingCreateInput;
+}
+
+export interface TrainingUpdateManyMutationInput {
+  title?: Maybe<String>;
+  trainingDate?: Maybe<DateTimeInput>;
+}
+
+export interface UserUpdateInput {
+  email?: Maybe<String>;
+  name?: Maybe<String>;
+  abbreviation?: Maybe<String>;
+  password?: Maybe<String>;
+  comments?: Maybe<CommentUpdateManyWithoutAuthorInput>;
+  ratings?: Maybe<RatingUpdateManyWithoutUserInput>;
+}
+
+export interface UserUpdateManyMutationInput {
+  email?: Maybe<String>;
+  name?: Maybe<String>;
+  abbreviation?: Maybe<String>;
+  password?: Maybe<String>;
+}
+
+export interface BlockSubscriptionWhereInput {
+  mutation_in?: Maybe<MutationType[] | MutationType>;
+  updatedFields_contains?: Maybe<String>;
+  updatedFields_contains_every?: Maybe<String[] | String>;
+  updatedFields_contains_some?: Maybe<String[] | String>;
+  node?: Maybe<BlockWhereInput>;
+  AND?: Maybe<BlockSubscriptionWhereInput[] | BlockSubscriptionWhereInput>;
+  OR?: Maybe<BlockSubscriptionWhereInput[] | BlockSubscriptionWhereInput>;
+  NOT?: Maybe<BlockSubscriptionWhereInput[] | BlockSubscriptionWhereInput>;
+}
+
+export interface CommentSubscriptionWhereInput {
+  mutation_in?: Maybe<MutationType[] | MutationType>;
+  updatedFields_contains?: Maybe<String>;
+  updatedFields_contains_every?: Maybe<String[] | String>;
+  updatedFields_contains_some?: Maybe<String[] | String>;
+  node?: Maybe<CommentWhereInput>;
+  AND?: Maybe<CommentSubscriptionWhereInput[] | CommentSubscriptionWhereInput>;
+  OR?: Maybe<CommentSubscriptionWhereInput[] | CommentSubscriptionWhereInput>;
+  NOT?: Maybe<CommentSubscriptionWhereInput[] | CommentSubscriptionWhereInput>;
+}
+
+export interface ExcersiseSubscriptionWhereInput {
+  mutation_in?: Maybe<MutationType[] | MutationType>;
+  updatedFields_contains?: Maybe<String>;
+  updatedFields_contains_every?: Maybe<String[] | String>;
+  updatedFields_contains_some?: Maybe<String[] | String>;
+  node?: Maybe<ExcersiseWhereInput>;
+  AND?: Maybe<
+    ExcersiseSubscriptionWhereInput[] | ExcersiseSubscriptionWhereInput
+  >;
+  OR?: Maybe<
+    ExcersiseSubscriptionWhereInput[] | ExcersiseSubscriptionWhereInput
+  >;
+  NOT?: Maybe<
+    ExcersiseSubscriptionWhereInput[] | ExcersiseSubscriptionWhereInput
+  >;
+}
+
+export interface FormatSubscriptionWhereInput {
+  mutation_in?: Maybe<MutationType[] | MutationType>;
+  updatedFields_contains?: Maybe<String>;
+  updatedFields_contains_every?: Maybe<String[] | String>;
+  updatedFields_contains_some?: Maybe<String[] | String>;
+  node?: Maybe<FormatWhereInput>;
+  AND?: Maybe<FormatSubscriptionWhereInput[] | FormatSubscriptionWhereInput>;
+  OR?: Maybe<FormatSubscriptionWhereInput[] | FormatSubscriptionWhereInput>;
+  NOT?: Maybe<FormatSubscriptionWhereInput[] | FormatSubscriptionWhereInput>;
+}
+
+export interface RatingSubscriptionWhereInput {
+  mutation_in?: Maybe<MutationType[] | MutationType>;
+  updatedFields_contains?: Maybe<String>;
+  updatedFields_contains_every?: Maybe<String[] | String>;
+  updatedFields_contains_some?: Maybe<String[] | String>;
+  node?: Maybe<RatingWhereInput>;
+  AND?: Maybe<RatingSubscriptionWhereInput[] | RatingSubscriptionWhereInput>;
+  OR?: Maybe<RatingSubscriptionWhereInput[] | RatingSubscriptionWhereInput>;
+  NOT?: Maybe<RatingSubscriptionWhereInput[] | RatingSubscriptionWhereInput>;
+}
+
+export interface TrackSubscriptionWhereInput {
+  mutation_in?: Maybe<MutationType[] | MutationType>;
+  updatedFields_contains?: Maybe<String>;
+  updatedFields_contains_every?: Maybe<String[] | String>;
+  updatedFields_contains_some?: Maybe<String[] | String>;
+  node?: Maybe<TrackWhereInput>;
+  AND?: Maybe<TrackSubscriptionWhereInput[] | TrackSubscriptionWhereInput>;
+  OR?: Maybe<TrackSubscriptionWhereInput[] | TrackSubscriptionWhereInput>;
+  NOT?: Maybe<TrackSubscriptionWhereInput[] | TrackSubscriptionWhereInput>;
+}
+
+export interface TrainingSubscriptionWhereInput {
+  mutation_in?: Maybe<MutationType[] | MutationType>;
+  updatedFields_contains?: Maybe<String>;
+  updatedFields_contains_every?: Maybe<String[] | String>;
+  updatedFields_contains_some?: Maybe<String[] | String>;
+  node?: Maybe<TrainingWhereInput>;
+  AND?: Maybe<
+    TrainingSubscriptionWhereInput[] | TrainingSubscriptionWhereInput
+  >;
+  OR?: Maybe<TrainingSubscriptionWhereInput[] | TrainingSubscriptionWhereInput>;
+  NOT?: Maybe<
+    TrainingSubscriptionWhereInput[] | TrainingSubscriptionWhereInput
+  >;
+}
+
+export interface UserSubscriptionWhereInput {
+  mutation_in?: Maybe<MutationType[] | MutationType>;
+  updatedFields_contains?: Maybe<String>;
+  updatedFields_contains_every?: Maybe<String[] | String>;
+  updatedFields_contains_some?: Maybe<String[] | String>;
+  node?: Maybe<UserWhereInput>;
+  AND?: Maybe<UserSubscriptionWhereInput[] | UserSubscriptionWhereInput>;
+  OR?: Maybe<UserSubscriptionWhereInput[] | UserSubscriptionWhereInput>;
+  NOT?: Maybe<UserSubscriptionWhereInput[] | UserSubscriptionWhereInput>;
+}
+
+export interface NodeNode {
+  id: ID_Output;
+}
+
+export interface Block {
+  id: ID_Output;
+  sequence: Int;
+  title: String;
+  duration: Int;
+  variation?: String;
+}
+
+export interface BlockPromise extends Promise<Block>, Fragmentable {
+  id: () => Promise<ID_Output>;
+  sequence: () => Promise<Int>;
+  title: () => Promise<String>;
+  duration: () => Promise<Int>;
+  variation: () => Promise<String>;
+  format: <T = FormatPromise>() => T;
+  tracks: <T = FragmentableArray<Track>>(args?: {
+    where?: TrackWhereInput;
+    orderBy?: TrackOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  excersises: <T = FragmentableArray<Excersise>>(args?: {
+    where?: ExcersiseWhereInput;
+    orderBy?: ExcersiseOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface BlockSubscription
+  extends Promise<AsyncIterator<Block>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  sequence: () => Promise<AsyncIterator<Int>>;
+  title: () => Promise<AsyncIterator<String>>;
+  duration: () => Promise<AsyncIterator<Int>>;
+  variation: () => Promise<AsyncIterator<String>>;
+  format: <T = FormatSubscription>() => T;
+  tracks: <T = Promise<AsyncIterator<TrackSubscription>>>(args?: {
+    where?: TrackWhereInput;
+    orderBy?: TrackOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  excersises: <T = Promise<AsyncIterator<ExcersiseSubscription>>>(args?: {
+    where?: ExcersiseWhereInput;
+    orderBy?: ExcersiseOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface BlockNullablePromise
+  extends Promise<Block | null>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  sequence: () => Promise<Int>;
+  title: () => Promise<String>;
+  duration: () => Promise<Int>;
+  variation: () => Promise<String>;
+  format: <T = FormatPromise>() => T;
+  tracks: <T = FragmentableArray<Track>>(args?: {
+    where?: TrackWhereInput;
+    orderBy?: TrackOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  excersises: <T = FragmentableArray<Excersise>>(args?: {
+    where?: ExcersiseWhereInput;
+    orderBy?: ExcersiseOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface Format {
+  id: ID_Output;
+  name: String;
+  description: String;
+}
+
+export interface FormatPromise extends Promise<Format>, Fragmentable {
+  id: () => Promise<ID_Output>;
+  name: () => Promise<String>;
+  description: () => Promise<String>;
+}
+
+export interface FormatSubscription
+  extends Promise<AsyncIterator<Format>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  name: () => Promise<AsyncIterator<String>>;
+  description: () => Promise<AsyncIterator<String>>;
+}
+
+export interface FormatNullablePromise
+  extends Promise<Format | null>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  name: () => Promise<String>;
+  description: () => Promise<String>;
+}
+
+export interface Track {
+  id: ID_Output;
+  title: String;
+  artist: String;
+  duration: Int;
+  link: String;
+}
+
+export interface TrackPromise extends Promise<Track>, Fragmentable {
+  id: () => Promise<ID_Output>;
+  title: () => Promise<String>;
+  artist: () => Promise<String>;
+  duration: () => Promise<Int>;
+  link: () => Promise<String>;
+}
+
+export interface TrackSubscription
+  extends Promise<AsyncIterator<Track>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  title: () => Promise<AsyncIterator<String>>;
+  artist: () => Promise<AsyncIterator<String>>;
+  duration: () => Promise<AsyncIterator<Int>>;
+  link: () => Promise<AsyncIterator<String>>;
+}
+
+export interface TrackNullablePromise
+  extends Promise<Track | null>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  title: () => Promise<String>;
+  artist: () => Promise<String>;
+  duration: () => Promise<Int>;
+  link: () => Promise<String>;
+}
+
+export interface Excersise {
+  id: ID_Output;
+  name: String;
+  description: String;
+  video: String;
+  targets: String[];
+}
+
+export interface ExcersisePromise extends Promise<Excersise>, Fragmentable {
+  id: () => Promise<ID_Output>;
+  name: () => Promise<String>;
+  description: () => Promise<String>;
+  video: () => Promise<String>;
+  targets: () => Promise<String[]>;
+}
+
+export interface ExcersiseSubscription
+  extends Promise<AsyncIterator<Excersise>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  name: () => Promise<AsyncIterator<String>>;
+  description: () => Promise<AsyncIterator<String>>;
+  video: () => Promise<AsyncIterator<String>>;
+  targets: () => Promise<AsyncIterator<String[]>>;
+}
+
+export interface ExcersiseNullablePromise
+  extends Promise<Excersise | null>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  name: () => Promise<String>;
+  description: () => Promise<String>;
+  video: () => Promise<String>;
+  targets: () => Promise<String[]>;
+}
+
+export interface BlockConnection {
+  pageInfo: PageInfo;
+  edges: BlockEdge[];
+}
+
+export interface BlockConnectionPromise
+  extends Promise<BlockConnection>,
+    Fragmentable {
+  pageInfo: <T = PageInfoPromise>() => T;
+  edges: <T = FragmentableArray<BlockEdge>>() => T;
+  aggregate: <T = AggregateBlockPromise>() => T;
+}
+
+export interface BlockConnectionSubscription
+  extends Promise<AsyncIterator<BlockConnection>>,
+    Fragmentable {
+  pageInfo: <T = PageInfoSubscription>() => T;
+  edges: <T = Promise<AsyncIterator<BlockEdgeSubscription>>>() => T;
+  aggregate: <T = AggregateBlockSubscription>() => T;
+}
+
+export interface PageInfo {
+  hasNextPage: Boolean;
+  hasPreviousPage: Boolean;
+  startCursor?: String;
+  endCursor?: String;
+}
+
+export interface PageInfoPromise extends Promise<PageInfo>, Fragmentable {
+  hasNextPage: () => Promise<Boolean>;
+  hasPreviousPage: () => Promise<Boolean>;
+  startCursor: () => Promise<String>;
+  endCursor: () => Promise<String>;
+}
+
+export interface PageInfoSubscription
+  extends Promise<AsyncIterator<PageInfo>>,
+    Fragmentable {
+  hasNextPage: () => Promise<AsyncIterator<Boolean>>;
+  hasPreviousPage: () => Promise<AsyncIterator<Boolean>>;
+  startCursor: () => Promise<AsyncIterator<String>>;
+  endCursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface BlockEdge {
+  node: Block;
+  cursor: String;
+}
+
+export interface BlockEdgePromise extends Promise<BlockEdge>, Fragmentable {
+  node: <T = BlockPromise>() => T;
+  cursor: () => Promise<String>;
+}
+
+export interface BlockEdgeSubscription
+  extends Promise<AsyncIterator<BlockEdge>>,
+    Fragmentable {
+  node: <T = BlockSubscription>() => T;
+  cursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface AggregateBlock {
+  count: Int;
+}
+
+export interface AggregateBlockPromise
+  extends Promise<AggregateBlock>,
+    Fragmentable {
+  count: () => Promise<Int>;
+}
+
+export interface AggregateBlockSubscription
+  extends Promise<AsyncIterator<AggregateBlock>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Int>>;
+}
+
+export interface Comment {
+  id: ID_Output;
+  text: String;
+  createdAt: DateTimeOutput;
+}
+
+export interface CommentPromise extends Promise<Comment>, Fragmentable {
+  id: () => Promise<ID_Output>;
+  text: () => Promise<String>;
+  author: <T = UserPromise>() => T;
+  createdAt: () => Promise<DateTimeOutput>;
+}
+
+export interface CommentSubscription
+  extends Promise<AsyncIterator<Comment>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  text: () => Promise<AsyncIterator<String>>;
+  author: <T = UserSubscription>() => T;
+  createdAt: () => Promise<AsyncIterator<DateTimeOutput>>;
+}
+
+export interface CommentNullablePromise
+  extends Promise<Comment | null>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  text: () => Promise<String>;
+  author: <T = UserPromise>() => T;
+  createdAt: () => Promise<DateTimeOutput>;
+}
+
+export interface User {
+  id: ID_Output;
+  email: String;
+  name: String;
+  abbreviation: String;
+  password: String;
+  createdAt: DateTimeOutput;
+}
+
+export interface UserPromise extends Promise<User>, Fragmentable {
+  id: () => Promise<ID_Output>;
+  email: () => Promise<String>;
+  name: () => Promise<String>;
+  abbreviation: () => Promise<String>;
+  password: () => Promise<String>;
+  createdAt: () => Promise<DateTimeOutput>;
+  comments: <T = FragmentableArray<Comment>>(args?: {
+    where?: CommentWhereInput;
+    orderBy?: CommentOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  ratings: <T = FragmentableArray<Rating>>(args?: {
+    where?: RatingWhereInput;
+    orderBy?: RatingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface UserSubscription
+  extends Promise<AsyncIterator<User>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  email: () => Promise<AsyncIterator<String>>;
+  name: () => Promise<AsyncIterator<String>>;
+  abbreviation: () => Promise<AsyncIterator<String>>;
+  password: () => Promise<AsyncIterator<String>>;
+  createdAt: () => Promise<AsyncIterator<DateTimeOutput>>;
+  comments: <T = Promise<AsyncIterator<CommentSubscription>>>(args?: {
+    where?: CommentWhereInput;
+    orderBy?: CommentOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  ratings: <T = Promise<AsyncIterator<RatingSubscription>>>(args?: {
+    where?: RatingWhereInput;
+    orderBy?: RatingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface UserNullablePromise
+  extends Promise<User | null>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  email: () => Promise<String>;
+  name: () => Promise<String>;
+  abbreviation: () => Promise<String>;
+  password: () => Promise<String>;
+  createdAt: () => Promise<DateTimeOutput>;
+  comments: <T = FragmentableArray<Comment>>(args?: {
+    where?: CommentWhereInput;
+    orderBy?: CommentOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  ratings: <T = FragmentableArray<Rating>>(args?: {
+    where?: RatingWhereInput;
+    orderBy?: RatingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface Rating {
+  id: ID_Output;
+  value: Int;
+  comment: String;
+  createdAt: DateTimeOutput;
+}
+
+export interface RatingPromise extends Promise<Rating>, Fragmentable {
+  id: () => Promise<ID_Output>;
+  user: <T = UserPromise>() => T;
+  value: () => Promise<Int>;
+  comment: () => Promise<String>;
+  createdAt: () => Promise<DateTimeOutput>;
+}
+
+export interface RatingSubscription
+  extends Promise<AsyncIterator<Rating>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  user: <T = UserSubscription>() => T;
+  value: () => Promise<AsyncIterator<Int>>;
+  comment: () => Promise<AsyncIterator<String>>;
+  createdAt: () => Promise<AsyncIterator<DateTimeOutput>>;
+}
+
+export interface RatingNullablePromise
+  extends Promise<Rating | null>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  user: <T = UserPromise>() => T;
+  value: () => Promise<Int>;
+  comment: () => Promise<String>;
+  createdAt: () => Promise<DateTimeOutput>;
+}
+
+export interface CommentConnection {
+  pageInfo: PageInfo;
+  edges: CommentEdge[];
+}
+
+export interface CommentConnectionPromise
+  extends Promise<CommentConnection>,
+    Fragmentable {
+  pageInfo: <T = PageInfoPromise>() => T;
+  edges: <T = FragmentableArray<CommentEdge>>() => T;
+  aggregate: <T = AggregateCommentPromise>() => T;
+}
+
+export interface CommentConnectionSubscription
+  extends Promise<AsyncIterator<CommentConnection>>,
+    Fragmentable {
+  pageInfo: <T = PageInfoSubscription>() => T;
+  edges: <T = Promise<AsyncIterator<CommentEdgeSubscription>>>() => T;
+  aggregate: <T = AggregateCommentSubscription>() => T;
+}
+
+export interface CommentEdge {
+  node: Comment;
+  cursor: String;
+}
+
+export interface CommentEdgePromise extends Promise<CommentEdge>, Fragmentable {
+  node: <T = CommentPromise>() => T;
+  cursor: () => Promise<String>;
+}
+
+export interface CommentEdgeSubscription
+  extends Promise<AsyncIterator<CommentEdge>>,
+    Fragmentable {
+  node: <T = CommentSubscription>() => T;
+  cursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface AggregateComment {
+  count: Int;
+}
+
+export interface AggregateCommentPromise
+  extends Promise<AggregateComment>,
+    Fragmentable {
+  count: () => Promise<Int>;
+}
+
+export interface AggregateCommentSubscription
+  extends Promise<AsyncIterator<AggregateComment>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Int>>;
+}
+
+export interface ExcersiseConnection {
+  pageInfo: PageInfo;
+  edges: ExcersiseEdge[];
+}
+
+export interface ExcersiseConnectionPromise
+  extends Promise<ExcersiseConnection>,
+    Fragmentable {
+  pageInfo: <T = PageInfoPromise>() => T;
+  edges: <T = FragmentableArray<ExcersiseEdge>>() => T;
+  aggregate: <T = AggregateExcersisePromise>() => T;
+}
+
+export interface ExcersiseConnectionSubscription
+  extends Promise<AsyncIterator<ExcersiseConnection>>,
+    Fragmentable {
+  pageInfo: <T = PageInfoSubscription>() => T;
+  edges: <T = Promise<AsyncIterator<ExcersiseEdgeSubscription>>>() => T;
+  aggregate: <T = AggregateExcersiseSubscription>() => T;
+}
+
+export interface ExcersiseEdge {
+  node: Excersise;
+  cursor: String;
+}
+
+export interface ExcersiseEdgePromise
+  extends Promise<ExcersiseEdge>,
+    Fragmentable {
+  node: <T = ExcersisePromise>() => T;
+  cursor: () => Promise<String>;
+}
+
+export interface ExcersiseEdgeSubscription
+  extends Promise<AsyncIterator<ExcersiseEdge>>,
+    Fragmentable {
+  node: <T = ExcersiseSubscription>() => T;
+  cursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface AggregateExcersise {
+  count: Int;
+}
+
+export interface AggregateExcersisePromise
+  extends Promise<AggregateExcersise>,
+    Fragmentable {
+  count: () => Promise<Int>;
+}
+
+export interface AggregateExcersiseSubscription
+  extends Promise<AsyncIterator<AggregateExcersise>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Int>>;
+}
+
+export interface FormatConnection {
+  pageInfo: PageInfo;
+  edges: FormatEdge[];
+}
+
+export interface FormatConnectionPromise
+  extends Promise<FormatConnection>,
+    Fragmentable {
+  pageInfo: <T = PageInfoPromise>() => T;
+  edges: <T = FragmentableArray<FormatEdge>>() => T;
+  aggregate: <T = AggregateFormatPromise>() => T;
+}
+
+export interface FormatConnectionSubscription
+  extends Promise<AsyncIterator<FormatConnection>>,
+    Fragmentable {
+  pageInfo: <T = PageInfoSubscription>() => T;
+  edges: <T = Promise<AsyncIterator<FormatEdgeSubscription>>>() => T;
+  aggregate: <T = AggregateFormatSubscription>() => T;
+}
+
+export interface FormatEdge {
+  node: Format;
+  cursor: String;
+}
+
+export interface FormatEdgePromise extends Promise<FormatEdge>, Fragmentable {
+  node: <T = FormatPromise>() => T;
+  cursor: () => Promise<String>;
+}
+
+export interface FormatEdgeSubscription
+  extends Promise<AsyncIterator<FormatEdge>>,
+    Fragmentable {
+  node: <T = FormatSubscription>() => T;
+  cursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface AggregateFormat {
+  count: Int;
+}
+
+export interface AggregateFormatPromise
+  extends Promise<AggregateFormat>,
+    Fragmentable {
+  count: () => Promise<Int>;
+}
+
+export interface AggregateFormatSubscription
+  extends Promise<AsyncIterator<AggregateFormat>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Int>>;
+}
+
+export interface RatingConnection {
+  pageInfo: PageInfo;
+  edges: RatingEdge[];
+}
+
+export interface RatingConnectionPromise
+  extends Promise<RatingConnection>,
+    Fragmentable {
+  pageInfo: <T = PageInfoPromise>() => T;
+  edges: <T = FragmentableArray<RatingEdge>>() => T;
+  aggregate: <T = AggregateRatingPromise>() => T;
+}
+
+export interface RatingConnectionSubscription
+  extends Promise<AsyncIterator<RatingConnection>>,
+    Fragmentable {
+  pageInfo: <T = PageInfoSubscription>() => T;
+  edges: <T = Promise<AsyncIterator<RatingEdgeSubscription>>>() => T;
+  aggregate: <T = AggregateRatingSubscription>() => T;
+}
+
+export interface RatingEdge {
+  node: Rating;
+  cursor: String;
+}
+
+export interface RatingEdgePromise extends Promise<RatingEdge>, Fragmentable {
+  node: <T = RatingPromise>() => T;
+  cursor: () => Promise<String>;
+}
+
+export interface RatingEdgeSubscription
+  extends Promise<AsyncIterator<RatingEdge>>,
+    Fragmentable {
+  node: <T = RatingSubscription>() => T;
+  cursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface AggregateRating {
+  count: Int;
+}
+
+export interface AggregateRatingPromise
+  extends Promise<AggregateRating>,
+    Fragmentable {
+  count: () => Promise<Int>;
+}
+
+export interface AggregateRatingSubscription
+  extends Promise<AsyncIterator<AggregateRating>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Int>>;
+}
+
+export interface TrackConnection {
+  pageInfo: PageInfo;
+  edges: TrackEdge[];
+}
+
+export interface TrackConnectionPromise
+  extends Promise<TrackConnection>,
+    Fragmentable {
+  pageInfo: <T = PageInfoPromise>() => T;
+  edges: <T = FragmentableArray<TrackEdge>>() => T;
+  aggregate: <T = AggregateTrackPromise>() => T;
+}
+
+export interface TrackConnectionSubscription
+  extends Promise<AsyncIterator<TrackConnection>>,
+    Fragmentable {
+  pageInfo: <T = PageInfoSubscription>() => T;
+  edges: <T = Promise<AsyncIterator<TrackEdgeSubscription>>>() => T;
+  aggregate: <T = AggregateTrackSubscription>() => T;
+}
+
+export interface TrackEdge {
+  node: Track;
+  cursor: String;
+}
+
+export interface TrackEdgePromise extends Promise<TrackEdge>, Fragmentable {
+  node: <T = TrackPromise>() => T;
+  cursor: () => Promise<String>;
+}
+
+export interface TrackEdgeSubscription
+  extends Promise<AsyncIterator<TrackEdge>>,
+    Fragmentable {
+  node: <T = TrackSubscription>() => T;
+  cursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface AggregateTrack {
+  count: Int;
+}
+
+export interface AggregateTrackPromise
+  extends Promise<AggregateTrack>,
+    Fragmentable {
+  count: () => Promise<Int>;
+}
+
+export interface AggregateTrackSubscription
+  extends Promise<AsyncIterator<AggregateTrack>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Int>>;
+}
+
+export interface Training {
+  id: ID_Output;
+  title: String;
+  createdAt: DateTimeOutput;
+  trainingDate: DateTimeOutput;
+}
+
+export interface TrainingPromise extends Promise<Training>, Fragmentable {
+  id: () => Promise<ID_Output>;
+  title: () => Promise<String>;
+  content: <T = FragmentableArray<Block>>(args?: {
+    where?: BlockWhereInput;
+    orderBy?: BlockOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  createdAt: () => Promise<DateTimeOutput>;
+  trainingDate: () => Promise<DateTimeOutput>;
+  participants: <T = FragmentableArray<User>>(args?: {
+    where?: UserWhereInput;
+    orderBy?: UserOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  ratings: <T = FragmentableArray<Rating>>(args?: {
+    where?: RatingWhereInput;
+    orderBy?: RatingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface TrainingSubscription
+  extends Promise<AsyncIterator<Training>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  title: () => Promise<AsyncIterator<String>>;
+  content: <T = Promise<AsyncIterator<BlockSubscription>>>(args?: {
+    where?: BlockWhereInput;
+    orderBy?: BlockOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  createdAt: () => Promise<AsyncIterator<DateTimeOutput>>;
+  trainingDate: () => Promise<AsyncIterator<DateTimeOutput>>;
+  participants: <T = Promise<AsyncIterator<UserSubscription>>>(args?: {
+    where?: UserWhereInput;
+    orderBy?: UserOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  ratings: <T = Promise<AsyncIterator<RatingSubscription>>>(args?: {
+    where?: RatingWhereInput;
+    orderBy?: RatingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface TrainingNullablePromise
+  extends Promise<Training | null>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  title: () => Promise<String>;
+  content: <T = FragmentableArray<Block>>(args?: {
+    where?: BlockWhereInput;
+    orderBy?: BlockOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  createdAt: () => Promise<DateTimeOutput>;
+  trainingDate: () => Promise<DateTimeOutput>;
+  participants: <T = FragmentableArray<User>>(args?: {
+    where?: UserWhereInput;
+    orderBy?: UserOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+  ratings: <T = FragmentableArray<Rating>>(args?: {
+    where?: RatingWhereInput;
+    orderBy?: RatingOrderByInput;
+    skip?: Int;
+    after?: String;
+    before?: String;
+    first?: Int;
+    last?: Int;
+  }) => T;
+}
+
+export interface TrainingConnection {
+  pageInfo: PageInfo;
+  edges: TrainingEdge[];
+}
+
+export interface TrainingConnectionPromise
+  extends Promise<TrainingConnection>,
+    Fragmentable {
+  pageInfo: <T = PageInfoPromise>() => T;
+  edges: <T = FragmentableArray<TrainingEdge>>() => T;
+  aggregate: <T = AggregateTrainingPromise>() => T;
+}
+
+export interface TrainingConnectionSubscription
+  extends Promise<AsyncIterator<TrainingConnection>>,
+    Fragmentable {
+  pageInfo: <T = PageInfoSubscription>() => T;
+  edges: <T = Promise<AsyncIterator<TrainingEdgeSubscription>>>() => T;
+  aggregate: <T = AggregateTrainingSubscription>() => T;
+}
+
+export interface TrainingEdge {
+  node: Training;
+  cursor: String;
+}
+
+export interface TrainingEdgePromise
+  extends Promise<TrainingEdge>,
+    Fragmentable {
+  node: <T = TrainingPromise>() => T;
+  cursor: () => Promise<String>;
+}
+
+export interface TrainingEdgeSubscription
+  extends Promise<AsyncIterator<TrainingEdge>>,
+    Fragmentable {
+  node: <T = TrainingSubscription>() => T;
+  cursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface AggregateTraining {
+  count: Int;
+}
+
+export interface AggregateTrainingPromise
+  extends Promise<AggregateTraining>,
+    Fragmentable {
+  count: () => Promise<Int>;
+}
+
+export interface AggregateTrainingSubscription
+  extends Promise<AsyncIterator<AggregateTraining>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Int>>;
+}
+
+export interface UserConnection {
+  pageInfo: PageInfo;
+  edges: UserEdge[];
+}
+
+export interface UserConnectionPromise
+  extends Promise<UserConnection>,
+    Fragmentable {
+  pageInfo: <T = PageInfoPromise>() => T;
+  edges: <T = FragmentableArray<UserEdge>>() => T;
+  aggregate: <T = AggregateUserPromise>() => T;
+}
+
+export interface UserConnectionSubscription
+  extends Promise<AsyncIterator<UserConnection>>,
+    Fragmentable {
+  pageInfo: <T = PageInfoSubscription>() => T;
+  edges: <T = Promise<AsyncIterator<UserEdgeSubscription>>>() => T;
+  aggregate: <T = AggregateUserSubscription>() => T;
+}
+
+export interface UserEdge {
+  node: User;
+  cursor: String;
+}
+
+export interface UserEdgePromise extends Promise<UserEdge>, Fragmentable {
+  node: <T = UserPromise>() => T;
+  cursor: () => Promise<String>;
+}
+
+export interface UserEdgeSubscription
+  extends Promise<AsyncIterator<UserEdge>>,
+    Fragmentable {
+  node: <T = UserSubscription>() => T;
+  cursor: () => Promise<AsyncIterator<String>>;
+}
+
+export interface AggregateUser {
+  count: Int;
+}
+
+export interface AggregateUserPromise
+  extends Promise<AggregateUser>,
+    Fragmentable {
+  count: () => Promise<Int>;
+}
+
+export interface AggregateUserSubscription
+  extends Promise<AsyncIterator<AggregateUser>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Int>>;
+}
+
+export interface BatchPayload {
+  count: Long;
+}
+
+export interface BatchPayloadPromise
+  extends Promise<BatchPayload>,
+    Fragmentable {
+  count: () => Promise<Long>;
+}
+
+export interface BatchPayloadSubscription
+  extends Promise<AsyncIterator<BatchPayload>>,
+    Fragmentable {
+  count: () => Promise<AsyncIterator<Long>>;
+}
+
+export interface BlockSubscriptionPayload {
+  mutation: MutationType;
+  node: Block;
+  updatedFields: String[];
+  previousValues: BlockPreviousValues;
+}
+
+export interface BlockSubscriptionPayloadPromise
+  extends Promise<BlockSubscriptionPayload>,
+    Fragmentable {
+  mutation: () => Promise<MutationType>;
+  node: <T = BlockPromise>() => T;
+  updatedFields: () => Promise<String[]>;
+  previousValues: <T = BlockPreviousValuesPromise>() => T;
+}
+
+export interface BlockSubscriptionPayloadSubscription
+  extends Promise<AsyncIterator<BlockSubscriptionPayload>>,
+    Fragmentable {
+  mutation: () => Promise<AsyncIterator<MutationType>>;
+  node: <T = BlockSubscription>() => T;
+  updatedFields: () => Promise<AsyncIterator<String[]>>;
+  previousValues: <T = BlockPreviousValuesSubscription>() => T;
+}
+
+export interface BlockPreviousValues {
+  id: ID_Output;
+  sequence: Int;
+  title: String;
+  duration: Int;
+  variation?: String;
+}
+
+export interface BlockPreviousValuesPromise
+  extends Promise<BlockPreviousValues>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  sequence: () => Promise<Int>;
+  title: () => Promise<String>;
+  duration: () => Promise<Int>;
+  variation: () => Promise<String>;
+}
+
+export interface BlockPreviousValuesSubscription
+  extends Promise<AsyncIterator<BlockPreviousValues>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  sequence: () => Promise<AsyncIterator<Int>>;
+  title: () => Promise<AsyncIterator<String>>;
+  duration: () => Promise<AsyncIterator<Int>>;
+  variation: () => Promise<AsyncIterator<String>>;
+}
+
+export interface CommentSubscriptionPayload {
+  mutation: MutationType;
+  node: Comment;
+  updatedFields: String[];
+  previousValues: CommentPreviousValues;
+}
+
+export interface CommentSubscriptionPayloadPromise
+  extends Promise<CommentSubscriptionPayload>,
+    Fragmentable {
+  mutation: () => Promise<MutationType>;
+  node: <T = CommentPromise>() => T;
+  updatedFields: () => Promise<String[]>;
+  previousValues: <T = CommentPreviousValuesPromise>() => T;
+}
+
+export interface CommentSubscriptionPayloadSubscription
+  extends Promise<AsyncIterator<CommentSubscriptionPayload>>,
+    Fragmentable {
+  mutation: () => Promise<AsyncIterator<MutationType>>;
+  node: <T = CommentSubscription>() => T;
+  updatedFields: () => Promise<AsyncIterator<String[]>>;
+  previousValues: <T = CommentPreviousValuesSubscription>() => T;
+}
+
+export interface CommentPreviousValues {
+  id: ID_Output;
+  text: String;
+  createdAt: DateTimeOutput;
+}
+
+export interface CommentPreviousValuesPromise
+  extends Promise<CommentPreviousValues>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  text: () => Promise<String>;
+  createdAt: () => Promise<DateTimeOutput>;
+}
+
+export interface CommentPreviousValuesSubscription
+  extends Promise<AsyncIterator<CommentPreviousValues>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  text: () => Promise<AsyncIterator<String>>;
+  createdAt: () => Promise<AsyncIterator<DateTimeOutput>>;
+}
+
+export interface ExcersiseSubscriptionPayload {
+  mutation: MutationType;
+  node: Excersise;
+  updatedFields: String[];
+  previousValues: ExcersisePreviousValues;
+}
+
+export interface ExcersiseSubscriptionPayloadPromise
+  extends Promise<ExcersiseSubscriptionPayload>,
+    Fragmentable {
+  mutation: () => Promise<MutationType>;
+  node: <T = ExcersisePromise>() => T;
+  updatedFields: () => Promise<String[]>;
+  previousValues: <T = ExcersisePreviousValuesPromise>() => T;
+}
+
+export interface ExcersiseSubscriptionPayloadSubscription
+  extends Promise<AsyncIterator<ExcersiseSubscriptionPayload>>,
+    Fragmentable {
+  mutation: () => Promise<AsyncIterator<MutationType>>;
+  node: <T = ExcersiseSubscription>() => T;
+  updatedFields: () => Promise<AsyncIterator<String[]>>;
+  previousValues: <T = ExcersisePreviousValuesSubscription>() => T;
+}
+
+export interface ExcersisePreviousValues {
+  id: ID_Output;
+  name: String;
+  description: String;
+  video: String;
+  targets: String[];
+}
+
+export interface ExcersisePreviousValuesPromise
+  extends Promise<ExcersisePreviousValues>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  name: () => Promise<String>;
+  description: () => Promise<String>;
+  video: () => Promise<String>;
+  targets: () => Promise<String[]>;
+}
+
+export interface ExcersisePreviousValuesSubscription
+  extends Promise<AsyncIterator<ExcersisePreviousValues>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  name: () => Promise<AsyncIterator<String>>;
+  description: () => Promise<AsyncIterator<String>>;
+  video: () => Promise<AsyncIterator<String>>;
+  targets: () => Promise<AsyncIterator<String[]>>;
+}
+
+export interface FormatSubscriptionPayload {
+  mutation: MutationType;
+  node: Format;
+  updatedFields: String[];
+  previousValues: FormatPreviousValues;
+}
+
+export interface FormatSubscriptionPayloadPromise
+  extends Promise<FormatSubscriptionPayload>,
+    Fragmentable {
+  mutation: () => Promise<MutationType>;
+  node: <T = FormatPromise>() => T;
+  updatedFields: () => Promise<String[]>;
+  previousValues: <T = FormatPreviousValuesPromise>() => T;
+}
+
+export interface FormatSubscriptionPayloadSubscription
+  extends Promise<AsyncIterator<FormatSubscriptionPayload>>,
+    Fragmentable {
+  mutation: () => Promise<AsyncIterator<MutationType>>;
+  node: <T = FormatSubscription>() => T;
+  updatedFields: () => Promise<AsyncIterator<String[]>>;
+  previousValues: <T = FormatPreviousValuesSubscription>() => T;
+}
+
+export interface FormatPreviousValues {
+  id: ID_Output;
+  name: String;
+  description: String;
+}
+
+export interface FormatPreviousValuesPromise
+  extends Promise<FormatPreviousValues>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  name: () => Promise<String>;
+  description: () => Promise<String>;
+}
+
+export interface FormatPreviousValuesSubscription
+  extends Promise<AsyncIterator<FormatPreviousValues>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  name: () => Promise<AsyncIterator<String>>;
+  description: () => Promise<AsyncIterator<String>>;
+}
+
+export interface RatingSubscriptionPayload {
+  mutation: MutationType;
+  node: Rating;
+  updatedFields: String[];
+  previousValues: RatingPreviousValues;
+}
+
+export interface RatingSubscriptionPayloadPromise
+  extends Promise<RatingSubscriptionPayload>,
+    Fragmentable {
+  mutation: () => Promise<MutationType>;
+  node: <T = RatingPromise>() => T;
+  updatedFields: () => Promise<String[]>;
+  previousValues: <T = RatingPreviousValuesPromise>() => T;
+}
+
+export interface RatingSubscriptionPayloadSubscription
+  extends Promise<AsyncIterator<RatingSubscriptionPayload>>,
+    Fragmentable {
+  mutation: () => Promise<AsyncIterator<MutationType>>;
+  node: <T = RatingSubscription>() => T;
+  updatedFields: () => Promise<AsyncIterator<String[]>>;
+  previousValues: <T = RatingPreviousValuesSubscription>() => T;
+}
+
+export interface RatingPreviousValues {
+  id: ID_Output;
+  value: Int;
+  comment: String;
+  createdAt: DateTimeOutput;
+}
+
+export interface RatingPreviousValuesPromise
+  extends Promise<RatingPreviousValues>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  value: () => Promise<Int>;
+  comment: () => Promise<String>;
+  createdAt: () => Promise<DateTimeOutput>;
+}
+
+export interface RatingPreviousValuesSubscription
+  extends Promise<AsyncIterator<RatingPreviousValues>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  value: () => Promise<AsyncIterator<Int>>;
+  comment: () => Promise<AsyncIterator<String>>;
+  createdAt: () => Promise<AsyncIterator<DateTimeOutput>>;
+}
+
+export interface TrackSubscriptionPayload {
+  mutation: MutationType;
+  node: Track;
+  updatedFields: String[];
+  previousValues: TrackPreviousValues;
+}
+
+export interface TrackSubscriptionPayloadPromise
+  extends Promise<TrackSubscriptionPayload>,
+    Fragmentable {
+  mutation: () => Promise<MutationType>;
+  node: <T = TrackPromise>() => T;
+  updatedFields: () => Promise<String[]>;
+  previousValues: <T = TrackPreviousValuesPromise>() => T;
+}
+
+export interface TrackSubscriptionPayloadSubscription
+  extends Promise<AsyncIterator<TrackSubscriptionPayload>>,
+    Fragmentable {
+  mutation: () => Promise<AsyncIterator<MutationType>>;
+  node: <T = TrackSubscription>() => T;
+  updatedFields: () => Promise<AsyncIterator<String[]>>;
+  previousValues: <T = TrackPreviousValuesSubscription>() => T;
+}
+
+export interface TrackPreviousValues {
+  id: ID_Output;
+  title: String;
+  artist: String;
+  duration: Int;
+  link: String;
+}
+
+export interface TrackPreviousValuesPromise
+  extends Promise<TrackPreviousValues>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  title: () => Promise<String>;
+  artist: () => Promise<String>;
+  duration: () => Promise<Int>;
+  link: () => Promise<String>;
+}
+
+export interface TrackPreviousValuesSubscription
+  extends Promise<AsyncIterator<TrackPreviousValues>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  title: () => Promise<AsyncIterator<String>>;
+  artist: () => Promise<AsyncIterator<String>>;
+  duration: () => Promise<AsyncIterator<Int>>;
+  link: () => Promise<AsyncIterator<String>>;
+}
+
+export interface TrainingSubscriptionPayload {
+  mutation: MutationType;
+  node: Training;
+  updatedFields: String[];
+  previousValues: TrainingPreviousValues;
+}
+
+export interface TrainingSubscriptionPayloadPromise
+  extends Promise<TrainingSubscriptionPayload>,
+    Fragmentable {
+  mutation: () => Promise<MutationType>;
+  node: <T = TrainingPromise>() => T;
+  updatedFields: () => Promise<String[]>;
+  previousValues: <T = TrainingPreviousValuesPromise>() => T;
+}
+
+export interface TrainingSubscriptionPayloadSubscription
+  extends Promise<AsyncIterator<TrainingSubscriptionPayload>>,
+    Fragmentable {
+  mutation: () => Promise<AsyncIterator<MutationType>>;
+  node: <T = TrainingSubscription>() => T;
+  updatedFields: () => Promise<AsyncIterator<String[]>>;
+  previousValues: <T = TrainingPreviousValuesSubscription>() => T;
+}
+
+export interface TrainingPreviousValues {
+  id: ID_Output;
+  title: String;
+  createdAt: DateTimeOutput;
+  trainingDate: DateTimeOutput;
+}
+
+export interface TrainingPreviousValuesPromise
+  extends Promise<TrainingPreviousValues>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  title: () => Promise<String>;
+  createdAt: () => Promise<DateTimeOutput>;
+  trainingDate: () => Promise<DateTimeOutput>;
+}
+
+export interface TrainingPreviousValuesSubscription
+  extends Promise<AsyncIterator<TrainingPreviousValues>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  title: () => Promise<AsyncIterator<String>>;
+  createdAt: () => Promise<AsyncIterator<DateTimeOutput>>;
+  trainingDate: () => Promise<AsyncIterator<DateTimeOutput>>;
+}
+
+export interface UserSubscriptionPayload {
+  mutation: MutationType;
+  node: User;
+  updatedFields: String[];
+  previousValues: UserPreviousValues;
+}
+
+export interface UserSubscriptionPayloadPromise
+  extends Promise<UserSubscriptionPayload>,
+    Fragmentable {
+  mutation: () => Promise<MutationType>;
+  node: <T = UserPromise>() => T;
+  updatedFields: () => Promise<String[]>;
+  previousValues: <T = UserPreviousValuesPromise>() => T;
+}
+
+export interface UserSubscriptionPayloadSubscription
+  extends Promise<AsyncIterator<UserSubscriptionPayload>>,
+    Fragmentable {
+  mutation: () => Promise<AsyncIterator<MutationType>>;
+  node: <T = UserSubscription>() => T;
+  updatedFields: () => Promise<AsyncIterator<String[]>>;
+  previousValues: <T = UserPreviousValuesSubscription>() => T;
+}
+
+export interface UserPreviousValues {
+  id: ID_Output;
+  email: String;
+  name: String;
+  abbreviation: String;
+  password: String;
+  createdAt: DateTimeOutput;
+}
+
+export interface UserPreviousValuesPromise
+  extends Promise<UserPreviousValues>,
+    Fragmentable {
+  id: () => Promise<ID_Output>;
+  email: () => Promise<String>;
+  name: () => Promise<String>;
+  abbreviation: () => Promise<String>;
+  password: () => Promise<String>;
+  createdAt: () => Promise<DateTimeOutput>;
+}
+
+export interface UserPreviousValuesSubscription
+  extends Promise<AsyncIterator<UserPreviousValues>>,
+    Fragmentable {
+  id: () => Promise<AsyncIterator<ID_Output>>;
+  email: () => Promise<AsyncIterator<String>>;
+  name: () => Promise<AsyncIterator<String>>;
+  abbreviation: () => Promise<AsyncIterator<String>>;
+  password: () => Promise<AsyncIterator<String>>;
+  createdAt: () => Promise<AsyncIterator<DateTimeOutput>>;
+}
+
+/*
+The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.
+*/
+export type ID_Input = string | number;
+export type ID_Output = string;
+
+/*
+The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
+*/
+export type Int = number;
+
+/*
+The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
+*/
+export type String = string;
+
+/*
+The `Boolean` scalar type represents `true` or `false`.
+*/
+export type Boolean = boolean;
+
+/*
+DateTime scalar input type, allowing Date
+*/
+export type DateTimeInput = Date | string;
+
+/*
+DateTime scalar output type, which is always a string
+*/
+export type DateTimeOutput = string;
+
+export type Long = string;
+
+/**
+ * Model Metadata
+ */
+
+export const models: Model[] = [
+  {
+    name: "User",
+    embedded: false
+  },
+  {
+    name: "Training",
+    embedded: false
+  },
+  {
+    name: "Block",
+    embedded: false
+  },
+  {
+    name: "Format",
+    embedded: false
+  },
+  {
+    name: "Track",
+    embedded: false
+  },
+  {
+    name: "Excersise",
+    embedded: false
+  },
+  {
+    name: "Rating",
+    embedded: false
+  },
+  {
+    name: "Comment",
+    embedded: false
+  }
+];
+
+/**
+ * Type Defs
+ */
+
+export const prisma: Prisma;

+ 45 - 0
database/generated/prisma-client/index.js

@@ -0,0 +1,45 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var prisma_lib_1 = require("prisma-client-lib");
+var typeDefs = require("./prisma-schema").typeDefs;
+
+var models = [
+  {
+    name: "User",
+    embedded: false
+  },
+  {
+    name: "Training",
+    embedded: false
+  },
+  {
+    name: "Block",
+    embedded: false
+  },
+  {
+    name: "Format",
+    embedded: false
+  },
+  {
+    name: "Track",
+    embedded: false
+  },
+  {
+    name: "Excersise",
+    embedded: false
+  },
+  {
+    name: "Rating",
+    embedded: false
+  },
+  {
+    name: "Comment",
+    embedded: false
+  }
+];
+exports.Prisma = prisma_lib_1.makePrismaClientClass({
+  typeDefs,
+  models,
+  endpoint: `http://localhost:8846`
+});
+exports.prisma = new exports.Prisma();

+ 2096 - 0
database/generated/prisma-client/prisma-schema.js

@@ -0,0 +1,2096 @@
+module.exports = {
+        typeDefs: // Code generated by Prisma (prisma@1.34.10). DO NOT EDIT.
+  // Please don't change this file manually but run `prisma generate` to update it.
+  // For more information, please read the docs: https://www.prisma.io/docs/prisma-client/
+
+/* GraphQL */ `type AggregateBlock {
+  count: Int!
+}
+
+type AggregateComment {
+  count: Int!
+}
+
+type AggregateExcersise {
+  count: Int!
+}
+
+type AggregateFormat {
+  count: Int!
+}
+
+type AggregateRating {
+  count: Int!
+}
+
+type AggregateTrack {
+  count: Int!
+}
+
+type AggregateTraining {
+  count: Int!
+}
+
+type AggregateUser {
+  count: Int!
+}
+
+type BatchPayload {
+  count: Long!
+}
+
+type Block {
+  id: ID!
+  sequence: Int!
+  title: String!
+  duration: Int!
+  variation: String
+  format: Format
+  tracks(where: TrackWhereInput, orderBy: TrackOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Track!]
+  excersises(where: ExcersiseWhereInput, orderBy: ExcersiseOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Excersise!]
+}
+
+type BlockConnection {
+  pageInfo: PageInfo!
+  edges: [BlockEdge]!
+  aggregate: AggregateBlock!
+}
+
+input BlockCreateInput {
+  id: ID
+  sequence: Int!
+  title: String!
+  duration: Int!
+  variation: String
+  format: FormatCreateOneInput
+  tracks: TrackCreateManyInput
+  excersises: ExcersiseCreateManyInput
+}
+
+input BlockCreateManyInput {
+  create: [BlockCreateInput!]
+  connect: [BlockWhereUniqueInput!]
+}
+
+type BlockEdge {
+  node: Block!
+  cursor: String!
+}
+
+enum BlockOrderByInput {
+  id_ASC
+  id_DESC
+  sequence_ASC
+  sequence_DESC
+  title_ASC
+  title_DESC
+  duration_ASC
+  duration_DESC
+  variation_ASC
+  variation_DESC
+}
+
+type BlockPreviousValues {
+  id: ID!
+  sequence: Int!
+  title: String!
+  duration: Int!
+  variation: String
+}
+
+input BlockScalarWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  sequence: Int
+  sequence_not: Int
+  sequence_in: [Int!]
+  sequence_not_in: [Int!]
+  sequence_lt: Int
+  sequence_lte: Int
+  sequence_gt: Int
+  sequence_gte: Int
+  title: String
+  title_not: String
+  title_in: [String!]
+  title_not_in: [String!]
+  title_lt: String
+  title_lte: String
+  title_gt: String
+  title_gte: String
+  title_contains: String
+  title_not_contains: String
+  title_starts_with: String
+  title_not_starts_with: String
+  title_ends_with: String
+  title_not_ends_with: String
+  duration: Int
+  duration_not: Int
+  duration_in: [Int!]
+  duration_not_in: [Int!]
+  duration_lt: Int
+  duration_lte: Int
+  duration_gt: Int
+  duration_gte: Int
+  variation: String
+  variation_not: String
+  variation_in: [String!]
+  variation_not_in: [String!]
+  variation_lt: String
+  variation_lte: String
+  variation_gt: String
+  variation_gte: String
+  variation_contains: String
+  variation_not_contains: String
+  variation_starts_with: String
+  variation_not_starts_with: String
+  variation_ends_with: String
+  variation_not_ends_with: String
+  AND: [BlockScalarWhereInput!]
+  OR: [BlockScalarWhereInput!]
+  NOT: [BlockScalarWhereInput!]
+}
+
+type BlockSubscriptionPayload {
+  mutation: MutationType!
+  node: Block
+  updatedFields: [String!]
+  previousValues: BlockPreviousValues
+}
+
+input BlockSubscriptionWhereInput {
+  mutation_in: [MutationType!]
+  updatedFields_contains: String
+  updatedFields_contains_every: [String!]
+  updatedFields_contains_some: [String!]
+  node: BlockWhereInput
+  AND: [BlockSubscriptionWhereInput!]
+  OR: [BlockSubscriptionWhereInput!]
+  NOT: [BlockSubscriptionWhereInput!]
+}
+
+input BlockUpdateDataInput {
+  sequence: Int
+  title: String
+  duration: Int
+  variation: String
+  format: FormatUpdateOneInput
+  tracks: TrackUpdateManyInput
+  excersises: ExcersiseUpdateManyInput
+}
+
+input BlockUpdateInput {
+  sequence: Int
+  title: String
+  duration: Int
+  variation: String
+  format: FormatUpdateOneInput
+  tracks: TrackUpdateManyInput
+  excersises: ExcersiseUpdateManyInput
+}
+
+input BlockUpdateManyDataInput {
+  sequence: Int
+  title: String
+  duration: Int
+  variation: String
+}
+
+input BlockUpdateManyInput {
+  create: [BlockCreateInput!]
+  update: [BlockUpdateWithWhereUniqueNestedInput!]
+  upsert: [BlockUpsertWithWhereUniqueNestedInput!]
+  delete: [BlockWhereUniqueInput!]
+  connect: [BlockWhereUniqueInput!]
+  set: [BlockWhereUniqueInput!]
+  disconnect: [BlockWhereUniqueInput!]
+  deleteMany: [BlockScalarWhereInput!]
+  updateMany: [BlockUpdateManyWithWhereNestedInput!]
+}
+
+input BlockUpdateManyMutationInput {
+  sequence: Int
+  title: String
+  duration: Int
+  variation: String
+}
+
+input BlockUpdateManyWithWhereNestedInput {
+  where: BlockScalarWhereInput!
+  data: BlockUpdateManyDataInput!
+}
+
+input BlockUpdateWithWhereUniqueNestedInput {
+  where: BlockWhereUniqueInput!
+  data: BlockUpdateDataInput!
+}
+
+input BlockUpsertWithWhereUniqueNestedInput {
+  where: BlockWhereUniqueInput!
+  update: BlockUpdateDataInput!
+  create: BlockCreateInput!
+}
+
+input BlockWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  sequence: Int
+  sequence_not: Int
+  sequence_in: [Int!]
+  sequence_not_in: [Int!]
+  sequence_lt: Int
+  sequence_lte: Int
+  sequence_gt: Int
+  sequence_gte: Int
+  title: String
+  title_not: String
+  title_in: [String!]
+  title_not_in: [String!]
+  title_lt: String
+  title_lte: String
+  title_gt: String
+  title_gte: String
+  title_contains: String
+  title_not_contains: String
+  title_starts_with: String
+  title_not_starts_with: String
+  title_ends_with: String
+  title_not_ends_with: String
+  duration: Int
+  duration_not: Int
+  duration_in: [Int!]
+  duration_not_in: [Int!]
+  duration_lt: Int
+  duration_lte: Int
+  duration_gt: Int
+  duration_gte: Int
+  variation: String
+  variation_not: String
+  variation_in: [String!]
+  variation_not_in: [String!]
+  variation_lt: String
+  variation_lte: String
+  variation_gt: String
+  variation_gte: String
+  variation_contains: String
+  variation_not_contains: String
+  variation_starts_with: String
+  variation_not_starts_with: String
+  variation_ends_with: String
+  variation_not_ends_with: String
+  format: FormatWhereInput
+  tracks_every: TrackWhereInput
+  tracks_some: TrackWhereInput
+  tracks_none: TrackWhereInput
+  excersises_every: ExcersiseWhereInput
+  excersises_some: ExcersiseWhereInput
+  excersises_none: ExcersiseWhereInput
+  AND: [BlockWhereInput!]
+  OR: [BlockWhereInput!]
+  NOT: [BlockWhereInput!]
+}
+
+input BlockWhereUniqueInput {
+  id: ID
+}
+
+type Comment {
+  id: ID!
+  text: String!
+  author: User!
+  createdAt: DateTime!
+}
+
+type CommentConnection {
+  pageInfo: PageInfo!
+  edges: [CommentEdge]!
+  aggregate: AggregateComment!
+}
+
+input CommentCreateInput {
+  id: ID
+  text: String!
+  author: UserCreateOneWithoutCommentsInput!
+}
+
+input CommentCreateManyWithoutAuthorInput {
+  create: [CommentCreateWithoutAuthorInput!]
+  connect: [CommentWhereUniqueInput!]
+}
+
+input CommentCreateWithoutAuthorInput {
+  id: ID
+  text: String!
+}
+
+type CommentEdge {
+  node: Comment!
+  cursor: String!
+}
+
+enum CommentOrderByInput {
+  id_ASC
+  id_DESC
+  text_ASC
+  text_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type CommentPreviousValues {
+  id: ID!
+  text: String!
+  createdAt: DateTime!
+}
+
+input CommentScalarWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  text: String
+  text_not: String
+  text_in: [String!]
+  text_not_in: [String!]
+  text_lt: String
+  text_lte: String
+  text_gt: String
+  text_gte: String
+  text_contains: String
+  text_not_contains: String
+  text_starts_with: String
+  text_not_starts_with: String
+  text_ends_with: String
+  text_not_ends_with: String
+  createdAt: DateTime
+  createdAt_not: DateTime
+  createdAt_in: [DateTime!]
+  createdAt_not_in: [DateTime!]
+  createdAt_lt: DateTime
+  createdAt_lte: DateTime
+  createdAt_gt: DateTime
+  createdAt_gte: DateTime
+  AND: [CommentScalarWhereInput!]
+  OR: [CommentScalarWhereInput!]
+  NOT: [CommentScalarWhereInput!]
+}
+
+type CommentSubscriptionPayload {
+  mutation: MutationType!
+  node: Comment
+  updatedFields: [String!]
+  previousValues: CommentPreviousValues
+}
+
+input CommentSubscriptionWhereInput {
+  mutation_in: [MutationType!]
+  updatedFields_contains: String
+  updatedFields_contains_every: [String!]
+  updatedFields_contains_some: [String!]
+  node: CommentWhereInput
+  AND: [CommentSubscriptionWhereInput!]
+  OR: [CommentSubscriptionWhereInput!]
+  NOT: [CommentSubscriptionWhereInput!]
+}
+
+input CommentUpdateInput {
+  text: String
+  author: UserUpdateOneRequiredWithoutCommentsInput
+}
+
+input CommentUpdateManyDataInput {
+  text: String
+}
+
+input CommentUpdateManyMutationInput {
+  text: String
+}
+
+input CommentUpdateManyWithoutAuthorInput {
+  create: [CommentCreateWithoutAuthorInput!]
+  delete: [CommentWhereUniqueInput!]
+  connect: [CommentWhereUniqueInput!]
+  set: [CommentWhereUniqueInput!]
+  disconnect: [CommentWhereUniqueInput!]
+  update: [CommentUpdateWithWhereUniqueWithoutAuthorInput!]
+  upsert: [CommentUpsertWithWhereUniqueWithoutAuthorInput!]
+  deleteMany: [CommentScalarWhereInput!]
+  updateMany: [CommentUpdateManyWithWhereNestedInput!]
+}
+
+input CommentUpdateManyWithWhereNestedInput {
+  where: CommentScalarWhereInput!
+  data: CommentUpdateManyDataInput!
+}
+
+input CommentUpdateWithoutAuthorDataInput {
+  text: String
+}
+
+input CommentUpdateWithWhereUniqueWithoutAuthorInput {
+  where: CommentWhereUniqueInput!
+  data: CommentUpdateWithoutAuthorDataInput!
+}
+
+input CommentUpsertWithWhereUniqueWithoutAuthorInput {
+  where: CommentWhereUniqueInput!
+  update: CommentUpdateWithoutAuthorDataInput!
+  create: CommentCreateWithoutAuthorInput!
+}
+
+input CommentWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  text: String
+  text_not: String
+  text_in: [String!]
+  text_not_in: [String!]
+  text_lt: String
+  text_lte: String
+  text_gt: String
+  text_gte: String
+  text_contains: String
+  text_not_contains: String
+  text_starts_with: String
+  text_not_starts_with: String
+  text_ends_with: String
+  text_not_ends_with: String
+  author: UserWhereInput
+  createdAt: DateTime
+  createdAt_not: DateTime
+  createdAt_in: [DateTime!]
+  createdAt_not_in: [DateTime!]
+  createdAt_lt: DateTime
+  createdAt_lte: DateTime
+  createdAt_gt: DateTime
+  createdAt_gte: DateTime
+  AND: [CommentWhereInput!]
+  OR: [CommentWhereInput!]
+  NOT: [CommentWhereInput!]
+}
+
+input CommentWhereUniqueInput {
+  id: ID
+}
+
+scalar DateTime
+
+type Excersise {
+  id: ID!
+  name: String!
+  description: String!
+  video: String!
+  targets: [String!]!
+}
+
+type ExcersiseConnection {
+  pageInfo: PageInfo!
+  edges: [ExcersiseEdge]!
+  aggregate: AggregateExcersise!
+}
+
+input ExcersiseCreateInput {
+  id: ID
+  name: String!
+  description: String!
+  video: String!
+  targets: ExcersiseCreatetargetsInput
+}
+
+input ExcersiseCreateManyInput {
+  create: [ExcersiseCreateInput!]
+  connect: [ExcersiseWhereUniqueInput!]
+}
+
+input ExcersiseCreatetargetsInput {
+  set: [String!]
+}
+
+type ExcersiseEdge {
+  node: Excersise!
+  cursor: String!
+}
+
+enum ExcersiseOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  video_ASC
+  video_DESC
+}
+
+type ExcersisePreviousValues {
+  id: ID!
+  name: String!
+  description: String!
+  video: String!
+  targets: [String!]!
+}
+
+input ExcersiseScalarWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  name: String
+  name_not: String
+  name_in: [String!]
+  name_not_in: [String!]
+  name_lt: String
+  name_lte: String
+  name_gt: String
+  name_gte: String
+  name_contains: String
+  name_not_contains: String
+  name_starts_with: String
+  name_not_starts_with: String
+  name_ends_with: String
+  name_not_ends_with: String
+  description: String
+  description_not: String
+  description_in: [String!]
+  description_not_in: [String!]
+  description_lt: String
+  description_lte: String
+  description_gt: String
+  description_gte: String
+  description_contains: String
+  description_not_contains: String
+  description_starts_with: String
+  description_not_starts_with: String
+  description_ends_with: String
+  description_not_ends_with: String
+  video: String
+  video_not: String
+  video_in: [String!]
+  video_not_in: [String!]
+  video_lt: String
+  video_lte: String
+  video_gt: String
+  video_gte: String
+  video_contains: String
+  video_not_contains: String
+  video_starts_with: String
+  video_not_starts_with: String
+  video_ends_with: String
+  video_not_ends_with: String
+  AND: [ExcersiseScalarWhereInput!]
+  OR: [ExcersiseScalarWhereInput!]
+  NOT: [ExcersiseScalarWhereInput!]
+}
+
+type ExcersiseSubscriptionPayload {
+  mutation: MutationType!
+  node: Excersise
+  updatedFields: [String!]
+  previousValues: ExcersisePreviousValues
+}
+
+input ExcersiseSubscriptionWhereInput {
+  mutation_in: [MutationType!]
+  updatedFields_contains: String
+  updatedFields_contains_every: [String!]
+  updatedFields_contains_some: [String!]
+  node: ExcersiseWhereInput
+  AND: [ExcersiseSubscriptionWhereInput!]
+  OR: [ExcersiseSubscriptionWhereInput!]
+  NOT: [ExcersiseSubscriptionWhereInput!]
+}
+
+input ExcersiseUpdateDataInput {
+  name: String
+  description: String
+  video: String
+  targets: ExcersiseUpdatetargetsInput
+}
+
+input ExcersiseUpdateInput {
+  name: String
+  description: String
+  video: String
+  targets: ExcersiseUpdatetargetsInput
+}
+
+input ExcersiseUpdateManyDataInput {
+  name: String
+  description: String
+  video: String
+  targets: ExcersiseUpdatetargetsInput
+}
+
+input ExcersiseUpdateManyInput {
+  create: [ExcersiseCreateInput!]
+  update: [ExcersiseUpdateWithWhereUniqueNestedInput!]
+  upsert: [ExcersiseUpsertWithWhereUniqueNestedInput!]
+  delete: [ExcersiseWhereUniqueInput!]
+  connect: [ExcersiseWhereUniqueInput!]
+  set: [ExcersiseWhereUniqueInput!]
+  disconnect: [ExcersiseWhereUniqueInput!]
+  deleteMany: [ExcersiseScalarWhereInput!]
+  updateMany: [ExcersiseUpdateManyWithWhereNestedInput!]
+}
+
+input ExcersiseUpdateManyMutationInput {
+  name: String
+  description: String
+  video: String
+  targets: ExcersiseUpdatetargetsInput
+}
+
+input ExcersiseUpdateManyWithWhereNestedInput {
+  where: ExcersiseScalarWhereInput!
+  data: ExcersiseUpdateManyDataInput!
+}
+
+input ExcersiseUpdatetargetsInput {
+  set: [String!]
+}
+
+input ExcersiseUpdateWithWhereUniqueNestedInput {
+  where: ExcersiseWhereUniqueInput!
+  data: ExcersiseUpdateDataInput!
+}
+
+input ExcersiseUpsertWithWhereUniqueNestedInput {
+  where: ExcersiseWhereUniqueInput!
+  update: ExcersiseUpdateDataInput!
+  create: ExcersiseCreateInput!
+}
+
+input ExcersiseWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  name: String
+  name_not: String
+  name_in: [String!]
+  name_not_in: [String!]
+  name_lt: String
+  name_lte: String
+  name_gt: String
+  name_gte: String
+  name_contains: String
+  name_not_contains: String
+  name_starts_with: String
+  name_not_starts_with: String
+  name_ends_with: String
+  name_not_ends_with: String
+  description: String
+  description_not: String
+  description_in: [String!]
+  description_not_in: [String!]
+  description_lt: String
+  description_lte: String
+  description_gt: String
+  description_gte: String
+  description_contains: String
+  description_not_contains: String
+  description_starts_with: String
+  description_not_starts_with: String
+  description_ends_with: String
+  description_not_ends_with: String
+  video: String
+  video_not: String
+  video_in: [String!]
+  video_not_in: [String!]
+  video_lt: String
+  video_lte: String
+  video_gt: String
+  video_gte: String
+  video_contains: String
+  video_not_contains: String
+  video_starts_with: String
+  video_not_starts_with: String
+  video_ends_with: String
+  video_not_ends_with: String
+  AND: [ExcersiseWhereInput!]
+  OR: [ExcersiseWhereInput!]
+  NOT: [ExcersiseWhereInput!]
+}
+
+input ExcersiseWhereUniqueInput {
+  id: ID
+}
+
+type Format {
+  id: ID!
+  name: String!
+  description: String!
+}
+
+type FormatConnection {
+  pageInfo: PageInfo!
+  edges: [FormatEdge]!
+  aggregate: AggregateFormat!
+}
+
+input FormatCreateInput {
+  id: ID
+  name: String!
+  description: String!
+}
+
+input FormatCreateOneInput {
+  create: FormatCreateInput
+  connect: FormatWhereUniqueInput
+}
+
+type FormatEdge {
+  node: Format!
+  cursor: String!
+}
+
+enum FormatOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+}
+
+type FormatPreviousValues {
+  id: ID!
+  name: String!
+  description: String!
+}
+
+type FormatSubscriptionPayload {
+  mutation: MutationType!
+  node: Format
+  updatedFields: [String!]
+  previousValues: FormatPreviousValues
+}
+
+input FormatSubscriptionWhereInput {
+  mutation_in: [MutationType!]
+  updatedFields_contains: String
+  updatedFields_contains_every: [String!]
+  updatedFields_contains_some: [String!]
+  node: FormatWhereInput
+  AND: [FormatSubscriptionWhereInput!]
+  OR: [FormatSubscriptionWhereInput!]
+  NOT: [FormatSubscriptionWhereInput!]
+}
+
+input FormatUpdateDataInput {
+  name: String
+  description: String
+}
+
+input FormatUpdateInput {
+  name: String
+  description: String
+}
+
+input FormatUpdateManyMutationInput {
+  name: String
+  description: String
+}
+
+input FormatUpdateOneInput {
+  create: FormatCreateInput
+  update: FormatUpdateDataInput
+  upsert: FormatUpsertNestedInput
+  delete: Boolean
+  disconnect: Boolean
+  connect: FormatWhereUniqueInput
+}
+
+input FormatUpsertNestedInput {
+  update: FormatUpdateDataInput!
+  create: FormatCreateInput!
+}
+
+input FormatWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  name: String
+  name_not: String
+  name_in: [String!]
+  name_not_in: [String!]
+  name_lt: String
+  name_lte: String
+  name_gt: String
+  name_gte: String
+  name_contains: String
+  name_not_contains: String
+  name_starts_with: String
+  name_not_starts_with: String
+  name_ends_with: String
+  name_not_ends_with: String
+  description: String
+  description_not: String
+  description_in: [String!]
+  description_not_in: [String!]
+  description_lt: String
+  description_lte: String
+  description_gt: String
+  description_gte: String
+  description_contains: String
+  description_not_contains: String
+  description_starts_with: String
+  description_not_starts_with: String
+  description_ends_with: String
+  description_not_ends_with: String
+  AND: [FormatWhereInput!]
+  OR: [FormatWhereInput!]
+  NOT: [FormatWhereInput!]
+}
+
+input FormatWhereUniqueInput {
+  id: ID
+}
+
+scalar Long
+
+type Mutation {
+  createBlock(data: BlockCreateInput!): Block!
+  updateBlock(data: BlockUpdateInput!, where: BlockWhereUniqueInput!): Block
+  updateManyBlocks(data: BlockUpdateManyMutationInput!, where: BlockWhereInput): BatchPayload!
+  upsertBlock(where: BlockWhereUniqueInput!, create: BlockCreateInput!, update: BlockUpdateInput!): Block!
+  deleteBlock(where: BlockWhereUniqueInput!): Block
+  deleteManyBlocks(where: BlockWhereInput): BatchPayload!
+  createComment(data: CommentCreateInput!): Comment!
+  updateComment(data: CommentUpdateInput!, where: CommentWhereUniqueInput!): Comment
+  updateManyComments(data: CommentUpdateManyMutationInput!, where: CommentWhereInput): BatchPayload!
+  upsertComment(where: CommentWhereUniqueInput!, create: CommentCreateInput!, update: CommentUpdateInput!): Comment!
+  deleteComment(where: CommentWhereUniqueInput!): Comment
+  deleteManyComments(where: CommentWhereInput): BatchPayload!
+  createExcersise(data: ExcersiseCreateInput!): Excersise!
+  updateExcersise(data: ExcersiseUpdateInput!, where: ExcersiseWhereUniqueInput!): Excersise
+  updateManyExcersises(data: ExcersiseUpdateManyMutationInput!, where: ExcersiseWhereInput): BatchPayload!
+  upsertExcersise(where: ExcersiseWhereUniqueInput!, create: ExcersiseCreateInput!, update: ExcersiseUpdateInput!): Excersise!
+  deleteExcersise(where: ExcersiseWhereUniqueInput!): Excersise
+  deleteManyExcersises(where: ExcersiseWhereInput): BatchPayload!
+  createFormat(data: FormatCreateInput!): Format!
+  updateFormat(data: FormatUpdateInput!, where: FormatWhereUniqueInput!): Format
+  updateManyFormats(data: FormatUpdateManyMutationInput!, where: FormatWhereInput): BatchPayload!
+  upsertFormat(where: FormatWhereUniqueInput!, create: FormatCreateInput!, update: FormatUpdateInput!): Format!
+  deleteFormat(where: FormatWhereUniqueInput!): Format
+  deleteManyFormats(where: FormatWhereInput): BatchPayload!
+  createRating(data: RatingCreateInput!): Rating!
+  updateRating(data: RatingUpdateInput!, where: RatingWhereUniqueInput!): Rating
+  updateManyRatings(data: RatingUpdateManyMutationInput!, where: RatingWhereInput): BatchPayload!
+  upsertRating(where: RatingWhereUniqueInput!, create: RatingCreateInput!, update: RatingUpdateInput!): Rating!
+  deleteRating(where: RatingWhereUniqueInput!): Rating
+  deleteManyRatings(where: RatingWhereInput): BatchPayload!
+  createTrack(data: TrackCreateInput!): Track!
+  updateTrack(data: TrackUpdateInput!, where: TrackWhereUniqueInput!): Track
+  updateManyTracks(data: TrackUpdateManyMutationInput!, where: TrackWhereInput): BatchPayload!
+  upsertTrack(where: TrackWhereUniqueInput!, create: TrackCreateInput!, update: TrackUpdateInput!): Track!
+  deleteTrack(where: TrackWhereUniqueInput!): Track
+  deleteManyTracks(where: TrackWhereInput): BatchPayload!
+  createTraining(data: TrainingCreateInput!): Training!
+  updateTraining(data: TrainingUpdateInput!, where: TrainingWhereUniqueInput!): Training
+  updateManyTrainings(data: TrainingUpdateManyMutationInput!, where: TrainingWhereInput): BatchPayload!
+  upsertTraining(where: TrainingWhereUniqueInput!, create: TrainingCreateInput!, update: TrainingUpdateInput!): Training!
+  deleteTraining(where: TrainingWhereUniqueInput!): Training
+  deleteManyTrainings(where: TrainingWhereInput): BatchPayload!
+  createUser(data: UserCreateInput!): User!
+  updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput!): User
+  updateManyUsers(data: UserUpdateManyMutationInput!, where: UserWhereInput): BatchPayload!
+  upsertUser(where: UserWhereUniqueInput!, create: UserCreateInput!, update: UserUpdateInput!): User!
+  deleteUser(where: UserWhereUniqueInput!): User
+  deleteManyUsers(where: UserWhereInput): BatchPayload!
+}
+
+enum MutationType {
+  CREATED
+  UPDATED
+  DELETED
+}
+
+interface Node {
+  id: ID!
+}
+
+type PageInfo {
+  hasNextPage: Boolean!
+  hasPreviousPage: Boolean!
+  startCursor: String
+  endCursor: String
+}
+
+type Query {
+  block(where: BlockWhereUniqueInput!): Block
+  blocks(where: BlockWhereInput, orderBy: BlockOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Block]!
+  blocksConnection(where: BlockWhereInput, orderBy: BlockOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): BlockConnection!
+  comment(where: CommentWhereUniqueInput!): Comment
+  comments(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Comment]!
+  commentsConnection(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): CommentConnection!
+  excersise(where: ExcersiseWhereUniqueInput!): Excersise
+  excersises(where: ExcersiseWhereInput, orderBy: ExcersiseOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Excersise]!
+  excersisesConnection(where: ExcersiseWhereInput, orderBy: ExcersiseOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): ExcersiseConnection!
+  format(where: FormatWhereUniqueInput!): Format
+  formats(where: FormatWhereInput, orderBy: FormatOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Format]!
+  formatsConnection(where: FormatWhereInput, orderBy: FormatOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): FormatConnection!
+  rating(where: RatingWhereUniqueInput!): Rating
+  ratings(where: RatingWhereInput, orderBy: RatingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Rating]!
+  ratingsConnection(where: RatingWhereInput, orderBy: RatingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): RatingConnection!
+  track(where: TrackWhereUniqueInput!): Track
+  tracks(where: TrackWhereInput, orderBy: TrackOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Track]!
+  tracksConnection(where: TrackWhereInput, orderBy: TrackOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TrackConnection!
+  training(where: TrainingWhereUniqueInput!): Training
+  trainings(where: TrainingWhereInput, orderBy: TrainingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Training]!
+  trainingsConnection(where: TrainingWhereInput, orderBy: TrainingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TrainingConnection!
+  user(where: UserWhereUniqueInput!): User
+  users(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User]!
+  usersConnection(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): UserConnection!
+  node(id: ID!): Node
+}
+
+type Rating {
+  id: ID!
+  user: User!
+  value: Int!
+  comment: String!
+  createdAt: DateTime!
+}
+
+type RatingConnection {
+  pageInfo: PageInfo!
+  edges: [RatingEdge]!
+  aggregate: AggregateRating!
+}
+
+input RatingCreateInput {
+  id: ID
+  user: UserCreateOneWithoutRatingsInput!
+  value: Int!
+  comment: String!
+}
+
+input RatingCreateManyInput {
+  create: [RatingCreateInput!]
+  connect: [RatingWhereUniqueInput!]
+}
+
+input RatingCreateManyWithoutUserInput {
+  create: [RatingCreateWithoutUserInput!]
+  connect: [RatingWhereUniqueInput!]
+}
+
+input RatingCreateWithoutUserInput {
+  id: ID
+  value: Int!
+  comment: String!
+}
+
+type RatingEdge {
+  node: Rating!
+  cursor: String!
+}
+
+enum RatingOrderByInput {
+  id_ASC
+  id_DESC
+  value_ASC
+  value_DESC
+  comment_ASC
+  comment_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type RatingPreviousValues {
+  id: ID!
+  value: Int!
+  comment: String!
+  createdAt: DateTime!
+}
+
+input RatingScalarWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  value: Int
+  value_not: Int
+  value_in: [Int!]
+  value_not_in: [Int!]
+  value_lt: Int
+  value_lte: Int
+  value_gt: Int
+  value_gte: Int
+  comment: String
+  comment_not: String
+  comment_in: [String!]
+  comment_not_in: [String!]
+  comment_lt: String
+  comment_lte: String
+  comment_gt: String
+  comment_gte: String
+  comment_contains: String
+  comment_not_contains: String
+  comment_starts_with: String
+  comment_not_starts_with: String
+  comment_ends_with: String
+  comment_not_ends_with: String
+  createdAt: DateTime
+  createdAt_not: DateTime
+  createdAt_in: [DateTime!]
+  createdAt_not_in: [DateTime!]
+  createdAt_lt: DateTime
+  createdAt_lte: DateTime
+  createdAt_gt: DateTime
+  createdAt_gte: DateTime
+  AND: [RatingScalarWhereInput!]
+  OR: [RatingScalarWhereInput!]
+  NOT: [RatingScalarWhereInput!]
+}
+
+type RatingSubscriptionPayload {
+  mutation: MutationType!
+  node: Rating
+  updatedFields: [String!]
+  previousValues: RatingPreviousValues
+}
+
+input RatingSubscriptionWhereInput {
+  mutation_in: [MutationType!]
+  updatedFields_contains: String
+  updatedFields_contains_every: [String!]
+  updatedFields_contains_some: [String!]
+  node: RatingWhereInput
+  AND: [RatingSubscriptionWhereInput!]
+  OR: [RatingSubscriptionWhereInput!]
+  NOT: [RatingSubscriptionWhereInput!]
+}
+
+input RatingUpdateDataInput {
+  user: UserUpdateOneRequiredWithoutRatingsInput
+  value: Int
+  comment: String
+}
+
+input RatingUpdateInput {
+  user: UserUpdateOneRequiredWithoutRatingsInput
+  value: Int
+  comment: String
+}
+
+input RatingUpdateManyDataInput {
+  value: Int
+  comment: String
+}
+
+input RatingUpdateManyInput {
+  create: [RatingCreateInput!]
+  update: [RatingUpdateWithWhereUniqueNestedInput!]
+  upsert: [RatingUpsertWithWhereUniqueNestedInput!]
+  delete: [RatingWhereUniqueInput!]
+  connect: [RatingWhereUniqueInput!]
+  set: [RatingWhereUniqueInput!]
+  disconnect: [RatingWhereUniqueInput!]
+  deleteMany: [RatingScalarWhereInput!]
+  updateMany: [RatingUpdateManyWithWhereNestedInput!]
+}
+
+input RatingUpdateManyMutationInput {
+  value: Int
+  comment: String
+}
+
+input RatingUpdateManyWithoutUserInput {
+  create: [RatingCreateWithoutUserInput!]
+  delete: [RatingWhereUniqueInput!]
+  connect: [RatingWhereUniqueInput!]
+  set: [RatingWhereUniqueInput!]
+  disconnect: [RatingWhereUniqueInput!]
+  update: [RatingUpdateWithWhereUniqueWithoutUserInput!]
+  upsert: [RatingUpsertWithWhereUniqueWithoutUserInput!]
+  deleteMany: [RatingScalarWhereInput!]
+  updateMany: [RatingUpdateManyWithWhereNestedInput!]
+}
+
+input RatingUpdateManyWithWhereNestedInput {
+  where: RatingScalarWhereInput!
+  data: RatingUpdateManyDataInput!
+}
+
+input RatingUpdateWithoutUserDataInput {
+  value: Int
+  comment: String
+}
+
+input RatingUpdateWithWhereUniqueNestedInput {
+  where: RatingWhereUniqueInput!
+  data: RatingUpdateDataInput!
+}
+
+input RatingUpdateWithWhereUniqueWithoutUserInput {
+  where: RatingWhereUniqueInput!
+  data: RatingUpdateWithoutUserDataInput!
+}
+
+input RatingUpsertWithWhereUniqueNestedInput {
+  where: RatingWhereUniqueInput!
+  update: RatingUpdateDataInput!
+  create: RatingCreateInput!
+}
+
+input RatingUpsertWithWhereUniqueWithoutUserInput {
+  where: RatingWhereUniqueInput!
+  update: RatingUpdateWithoutUserDataInput!
+  create: RatingCreateWithoutUserInput!
+}
+
+input RatingWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  user: UserWhereInput
+  value: Int
+  value_not: Int
+  value_in: [Int!]
+  value_not_in: [Int!]
+  value_lt: Int
+  value_lte: Int
+  value_gt: Int
+  value_gte: Int
+  comment: String
+  comment_not: String
+  comment_in: [String!]
+  comment_not_in: [String!]
+  comment_lt: String
+  comment_lte: String
+  comment_gt: String
+  comment_gte: String
+  comment_contains: String
+  comment_not_contains: String
+  comment_starts_with: String
+  comment_not_starts_with: String
+  comment_ends_with: String
+  comment_not_ends_with: String
+  createdAt: DateTime
+  createdAt_not: DateTime
+  createdAt_in: [DateTime!]
+  createdAt_not_in: [DateTime!]
+  createdAt_lt: DateTime
+  createdAt_lte: DateTime
+  createdAt_gt: DateTime
+  createdAt_gte: DateTime
+  AND: [RatingWhereInput!]
+  OR: [RatingWhereInput!]
+  NOT: [RatingWhereInput!]
+}
+
+input RatingWhereUniqueInput {
+  id: ID
+}
+
+type Subscription {
+  block(where: BlockSubscriptionWhereInput): BlockSubscriptionPayload
+  comment(where: CommentSubscriptionWhereInput): CommentSubscriptionPayload
+  excersise(where: ExcersiseSubscriptionWhereInput): ExcersiseSubscriptionPayload
+  format(where: FormatSubscriptionWhereInput): FormatSubscriptionPayload
+  rating(where: RatingSubscriptionWhereInput): RatingSubscriptionPayload
+  track(where: TrackSubscriptionWhereInput): TrackSubscriptionPayload
+  training(where: TrainingSubscriptionWhereInput): TrainingSubscriptionPayload
+  user(where: UserSubscriptionWhereInput): UserSubscriptionPayload
+}
+
+type Track {
+  id: ID!
+  title: String!
+  artist: String!
+  duration: Int!
+  link: String!
+}
+
+type TrackConnection {
+  pageInfo: PageInfo!
+  edges: [TrackEdge]!
+  aggregate: AggregateTrack!
+}
+
+input TrackCreateInput {
+  id: ID
+  title: String!
+  artist: String!
+  duration: Int!
+  link: String!
+}
+
+input TrackCreateManyInput {
+  create: [TrackCreateInput!]
+  connect: [TrackWhereUniqueInput!]
+}
+
+type TrackEdge {
+  node: Track!
+  cursor: String!
+}
+
+enum TrackOrderByInput {
+  id_ASC
+  id_DESC
+  title_ASC
+  title_DESC
+  artist_ASC
+  artist_DESC
+  duration_ASC
+  duration_DESC
+  link_ASC
+  link_DESC
+}
+
+type TrackPreviousValues {
+  id: ID!
+  title: String!
+  artist: String!
+  duration: Int!
+  link: String!
+}
+
+input TrackScalarWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  title: String
+  title_not: String
+  title_in: [String!]
+  title_not_in: [String!]
+  title_lt: String
+  title_lte: String
+  title_gt: String
+  title_gte: String
+  title_contains: String
+  title_not_contains: String
+  title_starts_with: String
+  title_not_starts_with: String
+  title_ends_with: String
+  title_not_ends_with: String
+  artist: String
+  artist_not: String
+  artist_in: [String!]
+  artist_not_in: [String!]
+  artist_lt: String
+  artist_lte: String
+  artist_gt: String
+  artist_gte: String
+  artist_contains: String
+  artist_not_contains: String
+  artist_starts_with: String
+  artist_not_starts_with: String
+  artist_ends_with: String
+  artist_not_ends_with: String
+  duration: Int
+  duration_not: Int
+  duration_in: [Int!]
+  duration_not_in: [Int!]
+  duration_lt: Int
+  duration_lte: Int
+  duration_gt: Int
+  duration_gte: Int
+  link: String
+  link_not: String
+  link_in: [String!]
+  link_not_in: [String!]
+  link_lt: String
+  link_lte: String
+  link_gt: String
+  link_gte: String
+  link_contains: String
+  link_not_contains: String
+  link_starts_with: String
+  link_not_starts_with: String
+  link_ends_with: String
+  link_not_ends_with: String
+  AND: [TrackScalarWhereInput!]
+  OR: [TrackScalarWhereInput!]
+  NOT: [TrackScalarWhereInput!]
+}
+
+type TrackSubscriptionPayload {
+  mutation: MutationType!
+  node: Track
+  updatedFields: [String!]
+  previousValues: TrackPreviousValues
+}
+
+input TrackSubscriptionWhereInput {
+  mutation_in: [MutationType!]
+  updatedFields_contains: String
+  updatedFields_contains_every: [String!]
+  updatedFields_contains_some: [String!]
+  node: TrackWhereInput
+  AND: [TrackSubscriptionWhereInput!]
+  OR: [TrackSubscriptionWhereInput!]
+  NOT: [TrackSubscriptionWhereInput!]
+}
+
+input TrackUpdateDataInput {
+  title: String
+  artist: String
+  duration: Int
+  link: String
+}
+
+input TrackUpdateInput {
+  title: String
+  artist: String
+  duration: Int
+  link: String
+}
+
+input TrackUpdateManyDataInput {
+  title: String
+  artist: String
+  duration: Int
+  link: String
+}
+
+input TrackUpdateManyInput {
+  create: [TrackCreateInput!]
+  update: [TrackUpdateWithWhereUniqueNestedInput!]
+  upsert: [TrackUpsertWithWhereUniqueNestedInput!]
+  delete: [TrackWhereUniqueInput!]
+  connect: [TrackWhereUniqueInput!]
+  set: [TrackWhereUniqueInput!]
+  disconnect: [TrackWhereUniqueInput!]
+  deleteMany: [TrackScalarWhereInput!]
+  updateMany: [TrackUpdateManyWithWhereNestedInput!]
+}
+
+input TrackUpdateManyMutationInput {
+  title: String
+  artist: String
+  duration: Int
+  link: String
+}
+
+input TrackUpdateManyWithWhereNestedInput {
+  where: TrackScalarWhereInput!
+  data: TrackUpdateManyDataInput!
+}
+
+input TrackUpdateWithWhereUniqueNestedInput {
+  where: TrackWhereUniqueInput!
+  data: TrackUpdateDataInput!
+}
+
+input TrackUpsertWithWhereUniqueNestedInput {
+  where: TrackWhereUniqueInput!
+  update: TrackUpdateDataInput!
+  create: TrackCreateInput!
+}
+
+input TrackWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  title: String
+  title_not: String
+  title_in: [String!]
+  title_not_in: [String!]
+  title_lt: String
+  title_lte: String
+  title_gt: String
+  title_gte: String
+  title_contains: String
+  title_not_contains: String
+  title_starts_with: String
+  title_not_starts_with: String
+  title_ends_with: String
+  title_not_ends_with: String
+  artist: String
+  artist_not: String
+  artist_in: [String!]
+  artist_not_in: [String!]
+  artist_lt: String
+  artist_lte: String
+  artist_gt: String
+  artist_gte: String
+  artist_contains: String
+  artist_not_contains: String
+  artist_starts_with: String
+  artist_not_starts_with: String
+  artist_ends_with: String
+  artist_not_ends_with: String
+  duration: Int
+  duration_not: Int
+  duration_in: [Int!]
+  duration_not_in: [Int!]
+  duration_lt: Int
+  duration_lte: Int
+  duration_gt: Int
+  duration_gte: Int
+  link: String
+  link_not: String
+  link_in: [String!]
+  link_not_in: [String!]
+  link_lt: String
+  link_lte: String
+  link_gt: String
+  link_gte: String
+  link_contains: String
+  link_not_contains: String
+  link_starts_with: String
+  link_not_starts_with: String
+  link_ends_with: String
+  link_not_ends_with: String
+  AND: [TrackWhereInput!]
+  OR: [TrackWhereInput!]
+  NOT: [TrackWhereInput!]
+}
+
+input TrackWhereUniqueInput {
+  id: ID
+}
+
+type Training {
+  id: ID!
+  title: String!
+  content(where: BlockWhereInput, orderBy: BlockOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Block!]
+  createdAt: DateTime!
+  trainingDate: DateTime!
+  participants(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User!]
+  ratings(where: RatingWhereInput, orderBy: RatingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Rating!]
+}
+
+type TrainingConnection {
+  pageInfo: PageInfo!
+  edges: [TrainingEdge]!
+  aggregate: AggregateTraining!
+}
+
+input TrainingCreateInput {
+  id: ID
+  title: String!
+  content: BlockCreateManyInput
+  trainingDate: DateTime!
+  participants: UserCreateManyInput
+  ratings: RatingCreateManyInput
+}
+
+type TrainingEdge {
+  node: Training!
+  cursor: String!
+}
+
+enum TrainingOrderByInput {
+  id_ASC
+  id_DESC
+  title_ASC
+  title_DESC
+  createdAt_ASC
+  createdAt_DESC
+  trainingDate_ASC
+  trainingDate_DESC
+}
+
+type TrainingPreviousValues {
+  id: ID!
+  title: String!
+  createdAt: DateTime!
+  trainingDate: DateTime!
+}
+
+type TrainingSubscriptionPayload {
+  mutation: MutationType!
+  node: Training
+  updatedFields: [String!]
+  previousValues: TrainingPreviousValues
+}
+
+input TrainingSubscriptionWhereInput {
+  mutation_in: [MutationType!]
+  updatedFields_contains: String
+  updatedFields_contains_every: [String!]
+  updatedFields_contains_some: [String!]
+  node: TrainingWhereInput
+  AND: [TrainingSubscriptionWhereInput!]
+  OR: [TrainingSubscriptionWhereInput!]
+  NOT: [TrainingSubscriptionWhereInput!]
+}
+
+input TrainingUpdateInput {
+  title: String
+  content: BlockUpdateManyInput
+  trainingDate: DateTime
+  participants: UserUpdateManyInput
+  ratings: RatingUpdateManyInput
+}
+
+input TrainingUpdateManyMutationInput {
+  title: String
+  trainingDate: DateTime
+}
+
+input TrainingWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  title: String
+  title_not: String
+  title_in: [String!]
+  title_not_in: [String!]
+  title_lt: String
+  title_lte: String
+  title_gt: String
+  title_gte: String
+  title_contains: String
+  title_not_contains: String
+  title_starts_with: String
+  title_not_starts_with: String
+  title_ends_with: String
+  title_not_ends_with: String
+  content_every: BlockWhereInput
+  content_some: BlockWhereInput
+  content_none: BlockWhereInput
+  createdAt: DateTime
+  createdAt_not: DateTime
+  createdAt_in: [DateTime!]
+  createdAt_not_in: [DateTime!]
+  createdAt_lt: DateTime
+  createdAt_lte: DateTime
+  createdAt_gt: DateTime
+  createdAt_gte: DateTime
+  trainingDate: DateTime
+  trainingDate_not: DateTime
+  trainingDate_in: [DateTime!]
+  trainingDate_not_in: [DateTime!]
+  trainingDate_lt: DateTime
+  trainingDate_lte: DateTime
+  trainingDate_gt: DateTime
+  trainingDate_gte: DateTime
+  participants_every: UserWhereInput
+  participants_some: UserWhereInput
+  participants_none: UserWhereInput
+  ratings_every: RatingWhereInput
+  ratings_some: RatingWhereInput
+  ratings_none: RatingWhereInput
+  AND: [TrainingWhereInput!]
+  OR: [TrainingWhereInput!]
+  NOT: [TrainingWhereInput!]
+}
+
+input TrainingWhereUniqueInput {
+  id: ID
+}
+
+type User {
+  id: ID!
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  createdAt: DateTime!
+  comments(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Comment!]
+  ratings(where: RatingWhereInput, orderBy: RatingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Rating!]
+}
+
+type UserConnection {
+  pageInfo: PageInfo!
+  edges: [UserEdge]!
+  aggregate: AggregateUser!
+}
+
+input UserCreateInput {
+  id: ID
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  comments: CommentCreateManyWithoutAuthorInput
+  ratings: RatingCreateManyWithoutUserInput
+}
+
+input UserCreateManyInput {
+  create: [UserCreateInput!]
+  connect: [UserWhereUniqueInput!]
+}
+
+input UserCreateOneWithoutCommentsInput {
+  create: UserCreateWithoutCommentsInput
+  connect: UserWhereUniqueInput
+}
+
+input UserCreateOneWithoutRatingsInput {
+  create: UserCreateWithoutRatingsInput
+  connect: UserWhereUniqueInput
+}
+
+input UserCreateWithoutCommentsInput {
+  id: ID
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  ratings: RatingCreateManyWithoutUserInput
+}
+
+input UserCreateWithoutRatingsInput {
+  id: ID
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  comments: CommentCreateManyWithoutAuthorInput
+}
+
+type UserEdge {
+  node: User!
+  cursor: String!
+}
+
+enum UserOrderByInput {
+  id_ASC
+  id_DESC
+  email_ASC
+  email_DESC
+  name_ASC
+  name_DESC
+  abbreviation_ASC
+  abbreviation_DESC
+  password_ASC
+  password_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type UserPreviousValues {
+  id: ID!
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  createdAt: DateTime!
+}
+
+input UserScalarWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  email: String
+  email_not: String
+  email_in: [String!]
+  email_not_in: [String!]
+  email_lt: String
+  email_lte: String
+  email_gt: String
+  email_gte: String
+  email_contains: String
+  email_not_contains: String
+  email_starts_with: String
+  email_not_starts_with: String
+  email_ends_with: String
+  email_not_ends_with: String
+  name: String
+  name_not: String
+  name_in: [String!]
+  name_not_in: [String!]
+  name_lt: String
+  name_lte: String
+  name_gt: String
+  name_gte: String
+  name_contains: String
+  name_not_contains: String
+  name_starts_with: String
+  name_not_starts_with: String
+  name_ends_with: String
+  name_not_ends_with: String
+  abbreviation: String
+  abbreviation_not: String
+  abbreviation_in: [String!]
+  abbreviation_not_in: [String!]
+  abbreviation_lt: String
+  abbreviation_lte: String
+  abbreviation_gt: String
+  abbreviation_gte: String
+  abbreviation_contains: String
+  abbreviation_not_contains: String
+  abbreviation_starts_with: String
+  abbreviation_not_starts_with: String
+  abbreviation_ends_with: String
+  abbreviation_not_ends_with: String
+  password: String
+  password_not: String
+  password_in: [String!]
+  password_not_in: [String!]
+  password_lt: String
+  password_lte: String
+  password_gt: String
+  password_gte: String
+  password_contains: String
+  password_not_contains: String
+  password_starts_with: String
+  password_not_starts_with: String
+  password_ends_with: String
+  password_not_ends_with: String
+  createdAt: DateTime
+  createdAt_not: DateTime
+  createdAt_in: [DateTime!]
+  createdAt_not_in: [DateTime!]
+  createdAt_lt: DateTime
+  createdAt_lte: DateTime
+  createdAt_gt: DateTime
+  createdAt_gte: DateTime
+  AND: [UserScalarWhereInput!]
+  OR: [UserScalarWhereInput!]
+  NOT: [UserScalarWhereInput!]
+}
+
+type UserSubscriptionPayload {
+  mutation: MutationType!
+  node: User
+  updatedFields: [String!]
+  previousValues: UserPreviousValues
+}
+
+input UserSubscriptionWhereInput {
+  mutation_in: [MutationType!]
+  updatedFields_contains: String
+  updatedFields_contains_every: [String!]
+  updatedFields_contains_some: [String!]
+  node: UserWhereInput
+  AND: [UserSubscriptionWhereInput!]
+  OR: [UserSubscriptionWhereInput!]
+  NOT: [UserSubscriptionWhereInput!]
+}
+
+input UserUpdateDataInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  comments: CommentUpdateManyWithoutAuthorInput
+  ratings: RatingUpdateManyWithoutUserInput
+}
+
+input UserUpdateInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  comments: CommentUpdateManyWithoutAuthorInput
+  ratings: RatingUpdateManyWithoutUserInput
+}
+
+input UserUpdateManyDataInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+}
+
+input UserUpdateManyInput {
+  create: [UserCreateInput!]
+  update: [UserUpdateWithWhereUniqueNestedInput!]
+  upsert: [UserUpsertWithWhereUniqueNestedInput!]
+  delete: [UserWhereUniqueInput!]
+  connect: [UserWhereUniqueInput!]
+  set: [UserWhereUniqueInput!]
+  disconnect: [UserWhereUniqueInput!]
+  deleteMany: [UserScalarWhereInput!]
+  updateMany: [UserUpdateManyWithWhereNestedInput!]
+}
+
+input UserUpdateManyMutationInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+}
+
+input UserUpdateManyWithWhereNestedInput {
+  where: UserScalarWhereInput!
+  data: UserUpdateManyDataInput!
+}
+
+input UserUpdateOneRequiredWithoutCommentsInput {
+  create: UserCreateWithoutCommentsInput
+  update: UserUpdateWithoutCommentsDataInput
+  upsert: UserUpsertWithoutCommentsInput
+  connect: UserWhereUniqueInput
+}
+
+input UserUpdateOneRequiredWithoutRatingsInput {
+  create: UserCreateWithoutRatingsInput
+  update: UserUpdateWithoutRatingsDataInput
+  upsert: UserUpsertWithoutRatingsInput
+  connect: UserWhereUniqueInput
+}
+
+input UserUpdateWithoutCommentsDataInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  ratings: RatingUpdateManyWithoutUserInput
+}
+
+input UserUpdateWithoutRatingsDataInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  comments: CommentUpdateManyWithoutAuthorInput
+}
+
+input UserUpdateWithWhereUniqueNestedInput {
+  where: UserWhereUniqueInput!
+  data: UserUpdateDataInput!
+}
+
+input UserUpsertWithoutCommentsInput {
+  update: UserUpdateWithoutCommentsDataInput!
+  create: UserCreateWithoutCommentsInput!
+}
+
+input UserUpsertWithoutRatingsInput {
+  update: UserUpdateWithoutRatingsDataInput!
+  create: UserCreateWithoutRatingsInput!
+}
+
+input UserUpsertWithWhereUniqueNestedInput {
+  where: UserWhereUniqueInput!
+  update: UserUpdateDataInput!
+  create: UserCreateInput!
+}
+
+input UserWhereInput {
+  id: ID
+  id_not: ID
+  id_in: [ID!]
+  id_not_in: [ID!]
+  id_lt: ID
+  id_lte: ID
+  id_gt: ID
+  id_gte: ID
+  id_contains: ID
+  id_not_contains: ID
+  id_starts_with: ID
+  id_not_starts_with: ID
+  id_ends_with: ID
+  id_not_ends_with: ID
+  email: String
+  email_not: String
+  email_in: [String!]
+  email_not_in: [String!]
+  email_lt: String
+  email_lte: String
+  email_gt: String
+  email_gte: String
+  email_contains: String
+  email_not_contains: String
+  email_starts_with: String
+  email_not_starts_with: String
+  email_ends_with: String
+  email_not_ends_with: String
+  name: String
+  name_not: String
+  name_in: [String!]
+  name_not_in: [String!]
+  name_lt: String
+  name_lte: String
+  name_gt: String
+  name_gte: String
+  name_contains: String
+  name_not_contains: String
+  name_starts_with: String
+  name_not_starts_with: String
+  name_ends_with: String
+  name_not_ends_with: String
+  abbreviation: String
+  abbreviation_not: String
+  abbreviation_in: [String!]
+  abbreviation_not_in: [String!]
+  abbreviation_lt: String
+  abbreviation_lte: String
+  abbreviation_gt: String
+  abbreviation_gte: String
+  abbreviation_contains: String
+  abbreviation_not_contains: String
+  abbreviation_starts_with: String
+  abbreviation_not_starts_with: String
+  abbreviation_ends_with: String
+  abbreviation_not_ends_with: String
+  password: String
+  password_not: String
+  password_in: [String!]
+  password_not_in: [String!]
+  password_lt: String
+  password_lte: String
+  password_gt: String
+  password_gte: String
+  password_contains: String
+  password_not_contains: String
+  password_starts_with: String
+  password_not_starts_with: String
+  password_ends_with: String
+  password_not_ends_with: String
+  createdAt: DateTime
+  createdAt_not: DateTime
+  createdAt_in: [DateTime!]
+  createdAt_not_in: [DateTime!]
+  createdAt_lt: DateTime
+  createdAt_lte: DateTime
+  createdAt_gt: DateTime
+  createdAt_gte: DateTime
+  comments_every: CommentWhereInput
+  comments_some: CommentWhereInput
+  comments_none: CommentWhereInput
+  ratings_every: RatingWhereInput
+  ratings_some: RatingWhereInput
+  ratings_none: RatingWhereInput
+  AND: [UserWhereInput!]
+  OR: [UserWhereInput!]
+  NOT: [UserWhereInput!]
+}
+
+input UserWhereUniqueInput {
+  id: ID
+  email: String
+}
+`
+      }
+    

+ 3791 - 0
database/generated/prisma.graphql

@@ -0,0 +1,3791 @@
+# source: http://localhost:8846
+# timestamp: Tue Nov 05 2019 17:50:27 GMT+0100 (Central European Standard Time)
+
+type AggregateBlock {
+  count: Int!
+}
+
+type AggregateComment {
+  count: Int!
+}
+
+type AggregateExcersise {
+  count: Int!
+}
+
+type AggregateFormat {
+  count: Int!
+}
+
+type AggregateRating {
+  count: Int!
+}
+
+type AggregateTrack {
+  count: Int!
+}
+
+type AggregateTraining {
+  count: Int!
+}
+
+type AggregateUser {
+  count: Int!
+}
+
+type BatchPayload {
+  """The number of nodes that have been affected by the Batch operation."""
+  count: Long!
+}
+
+type Block implements Node {
+  id: ID!
+  sequence: Int!
+  title: String!
+  duration: Int!
+  variation: String
+  format: Format
+  tracks(where: TrackWhereInput, orderBy: TrackOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Track!]
+  excersises(where: ExcersiseWhereInput, orderBy: ExcersiseOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Excersise!]
+}
+
+"""A connection to a list of items."""
+type BlockConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [BlockEdge]!
+  aggregate: AggregateBlock!
+}
+
+input BlockCreateInput {
+  id: ID
+  sequence: Int!
+  title: String!
+  duration: Int!
+  variation: String
+  format: FormatCreateOneInput
+  tracks: TrackCreateManyInput
+  excersises: ExcersiseCreateManyInput
+}
+
+input BlockCreateManyInput {
+  create: [BlockCreateInput!]
+  connect: [BlockWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type BlockEdge {
+  """The item at the end of the edge."""
+  node: Block!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum BlockOrderByInput {
+  id_ASC
+  id_DESC
+  sequence_ASC
+  sequence_DESC
+  title_ASC
+  title_DESC
+  duration_ASC
+  duration_DESC
+  variation_ASC
+  variation_DESC
+}
+
+type BlockPreviousValues {
+  id: ID!
+  sequence: Int!
+  title: String!
+  duration: Int!
+  variation: String
+}
+
+input BlockScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [BlockScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [BlockScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [BlockScalarWhereInput!]
+  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
+  sequence: Int
+
+  """All values that are not equal to given value."""
+  sequence_not: Int
+
+  """All values that are contained in given list."""
+  sequence_in: [Int!]
+
+  """All values that are not contained in given list."""
+  sequence_not_in: [Int!]
+
+  """All values less than the given value."""
+  sequence_lt: Int
+
+  """All values less than or equal the given value."""
+  sequence_lte: Int
+
+  """All values greater than the given value."""
+  sequence_gt: Int
+
+  """All values greater than or equal the given value."""
+  sequence_gte: Int
+  title: String
+
+  """All values that are not equal to given value."""
+  title_not: String
+
+  """All values that are contained in given list."""
+  title_in: [String!]
+
+  """All values that are not contained in given list."""
+  title_not_in: [String!]
+
+  """All values less than the given value."""
+  title_lt: String
+
+  """All values less than or equal the given value."""
+  title_lte: String
+
+  """All values greater than the given value."""
+  title_gt: String
+
+  """All values greater than or equal the given value."""
+  title_gte: String
+
+  """All values containing the given string."""
+  title_contains: String
+
+  """All values not containing the given string."""
+  title_not_contains: String
+
+  """All values starting with the given string."""
+  title_starts_with: String
+
+  """All values not starting with the given string."""
+  title_not_starts_with: String
+
+  """All values ending with the given string."""
+  title_ends_with: String
+
+  """All values not ending with the given string."""
+  title_not_ends_with: String
+  duration: Int
+
+  """All values that are not equal to given value."""
+  duration_not: Int
+
+  """All values that are contained in given list."""
+  duration_in: [Int!]
+
+  """All values that are not contained in given list."""
+  duration_not_in: [Int!]
+
+  """All values less than the given value."""
+  duration_lt: Int
+
+  """All values less than or equal the given value."""
+  duration_lte: Int
+
+  """All values greater than the given value."""
+  duration_gt: Int
+
+  """All values greater than or equal the given value."""
+  duration_gte: Int
+  variation: String
+
+  """All values that are not equal to given value."""
+  variation_not: String
+
+  """All values that are contained in given list."""
+  variation_in: [String!]
+
+  """All values that are not contained in given list."""
+  variation_not_in: [String!]
+
+  """All values less than the given value."""
+  variation_lt: String
+
+  """All values less than or equal the given value."""
+  variation_lte: String
+
+  """All values greater than the given value."""
+  variation_gt: String
+
+  """All values greater than or equal the given value."""
+  variation_gte: String
+
+  """All values containing the given string."""
+  variation_contains: String
+
+  """All values not containing the given string."""
+  variation_not_contains: String
+
+  """All values starting with the given string."""
+  variation_starts_with: String
+
+  """All values not starting with the given string."""
+  variation_not_starts_with: String
+
+  """All values ending with the given string."""
+  variation_ends_with: String
+
+  """All values not ending with the given string."""
+  variation_not_ends_with: String
+}
+
+type BlockSubscriptionPayload {
+  mutation: MutationType!
+  node: Block
+  updatedFields: [String!]
+  previousValues: BlockPreviousValues
+}
+
+input BlockSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [BlockSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [BlockSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [BlockSubscriptionWhereInput!]
+
+  """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: BlockWhereInput
+}
+
+input BlockUpdateDataInput {
+  sequence: Int
+  title: String
+  duration: Int
+  variation: String
+  format: FormatUpdateOneInput
+  tracks: TrackUpdateManyInput
+  excersises: ExcersiseUpdateManyInput
+}
+
+input BlockUpdateInput {
+  sequence: Int
+  title: String
+  duration: Int
+  variation: String
+  format: FormatUpdateOneInput
+  tracks: TrackUpdateManyInput
+  excersises: ExcersiseUpdateManyInput
+}
+
+input BlockUpdateManyDataInput {
+  sequence: Int
+  title: String
+  duration: Int
+  variation: String
+}
+
+input BlockUpdateManyInput {
+  create: [BlockCreateInput!]
+  connect: [BlockWhereUniqueInput!]
+  set: [BlockWhereUniqueInput!]
+  disconnect: [BlockWhereUniqueInput!]
+  delete: [BlockWhereUniqueInput!]
+  update: [BlockUpdateWithWhereUniqueNestedInput!]
+  updateMany: [BlockUpdateManyWithWhereNestedInput!]
+  deleteMany: [BlockScalarWhereInput!]
+  upsert: [BlockUpsertWithWhereUniqueNestedInput!]
+}
+
+input BlockUpdateManyMutationInput {
+  sequence: Int
+  title: String
+  duration: Int
+  variation: String
+}
+
+input BlockUpdateManyWithWhereNestedInput {
+  where: BlockScalarWhereInput!
+  data: BlockUpdateManyDataInput!
+}
+
+input BlockUpdateWithWhereUniqueNestedInput {
+  where: BlockWhereUniqueInput!
+  data: BlockUpdateDataInput!
+}
+
+input BlockUpsertWithWhereUniqueNestedInput {
+  where: BlockWhereUniqueInput!
+  update: BlockUpdateDataInput!
+  create: BlockCreateInput!
+}
+
+input BlockWhereInput {
+  """Logical AND on all given filters."""
+  AND: [BlockWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [BlockWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [BlockWhereInput!]
+  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
+  sequence: Int
+
+  """All values that are not equal to given value."""
+  sequence_not: Int
+
+  """All values that are contained in given list."""
+  sequence_in: [Int!]
+
+  """All values that are not contained in given list."""
+  sequence_not_in: [Int!]
+
+  """All values less than the given value."""
+  sequence_lt: Int
+
+  """All values less than or equal the given value."""
+  sequence_lte: Int
+
+  """All values greater than the given value."""
+  sequence_gt: Int
+
+  """All values greater than or equal the given value."""
+  sequence_gte: Int
+  title: String
+
+  """All values that are not equal to given value."""
+  title_not: String
+
+  """All values that are contained in given list."""
+  title_in: [String!]
+
+  """All values that are not contained in given list."""
+  title_not_in: [String!]
+
+  """All values less than the given value."""
+  title_lt: String
+
+  """All values less than or equal the given value."""
+  title_lte: String
+
+  """All values greater than the given value."""
+  title_gt: String
+
+  """All values greater than or equal the given value."""
+  title_gte: String
+
+  """All values containing the given string."""
+  title_contains: String
+
+  """All values not containing the given string."""
+  title_not_contains: String
+
+  """All values starting with the given string."""
+  title_starts_with: String
+
+  """All values not starting with the given string."""
+  title_not_starts_with: String
+
+  """All values ending with the given string."""
+  title_ends_with: String
+
+  """All values not ending with the given string."""
+  title_not_ends_with: String
+  duration: Int
+
+  """All values that are not equal to given value."""
+  duration_not: Int
+
+  """All values that are contained in given list."""
+  duration_in: [Int!]
+
+  """All values that are not contained in given list."""
+  duration_not_in: [Int!]
+
+  """All values less than the given value."""
+  duration_lt: Int
+
+  """All values less than or equal the given value."""
+  duration_lte: Int
+
+  """All values greater than the given value."""
+  duration_gt: Int
+
+  """All values greater than or equal the given value."""
+  duration_gte: Int
+  variation: String
+
+  """All values that are not equal to given value."""
+  variation_not: String
+
+  """All values that are contained in given list."""
+  variation_in: [String!]
+
+  """All values that are not contained in given list."""
+  variation_not_in: [String!]
+
+  """All values less than the given value."""
+  variation_lt: String
+
+  """All values less than or equal the given value."""
+  variation_lte: String
+
+  """All values greater than the given value."""
+  variation_gt: String
+
+  """All values greater than or equal the given value."""
+  variation_gte: String
+
+  """All values containing the given string."""
+  variation_contains: String
+
+  """All values not containing the given string."""
+  variation_not_contains: String
+
+  """All values starting with the given string."""
+  variation_starts_with: String
+
+  """All values not starting with the given string."""
+  variation_not_starts_with: String
+
+  """All values ending with the given string."""
+  variation_ends_with: String
+
+  """All values not ending with the given string."""
+  variation_not_ends_with: String
+  format: FormatWhereInput
+  tracks_every: TrackWhereInput
+  tracks_some: TrackWhereInput
+  tracks_none: TrackWhereInput
+  excersises_every: ExcersiseWhereInput
+  excersises_some: ExcersiseWhereInput
+  excersises_none: ExcersiseWhereInput
+}
+
+input BlockWhereUniqueInput {
+  id: ID
+}
+
+type Comment implements Node {
+  id: ID!
+  text: String!
+  author: User!
+  createdAt: DateTime!
+}
+
+"""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 {
+  id: ID
+  text: String!
+  author: UserCreateOneWithoutCommentsInput!
+}
+
+input CommentCreateManyWithoutAuthorInput {
+  create: [CommentCreateWithoutAuthorInput!]
+  connect: [CommentWhereUniqueInput!]
+}
+
+input CommentCreateWithoutAuthorInput {
+  id: ID
+  text: String!
+}
+
+"""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
+}
+
+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 CommentUpdateInput {
+  text: String
+  author: UserUpdateOneRequiredWithoutCommentsInput
+}
+
+input CommentUpdateManyDataInput {
+  text: String
+}
+
+input CommentUpdateManyMutationInput {
+  text: String
+}
+
+input CommentUpdateManyWithoutAuthorInput {
+  create: [CommentCreateWithoutAuthorInput!]
+  connect: [CommentWhereUniqueInput!]
+  set: [CommentWhereUniqueInput!]
+  disconnect: [CommentWhereUniqueInput!]
+  delete: [CommentWhereUniqueInput!]
+  update: [CommentUpdateWithWhereUniqueWithoutAuthorInput!]
+  updateMany: [CommentUpdateManyWithWhereNestedInput!]
+  deleteMany: [CommentScalarWhereInput!]
+  upsert: [CommentUpsertWithWhereUniqueWithoutAuthorInput!]
+}
+
+input CommentUpdateManyWithWhereNestedInput {
+  where: CommentScalarWhereInput!
+  data: CommentUpdateManyDataInput!
+}
+
+input CommentUpdateWithoutAuthorDataInput {
+  text: String
+}
+
+input CommentUpdateWithWhereUniqueWithoutAuthorInput {
+  where: CommentWhereUniqueInput!
+  data: CommentUpdateWithoutAuthorDataInput!
+}
+
+input CommentUpsertWithWhereUniqueWithoutAuthorInput {
+  where: CommentWhereUniqueInput!
+  update: CommentUpdateWithoutAuthorDataInput!
+  create: CommentCreateWithoutAuthorInput!
+}
+
+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
+  author: UserWhereInput
+}
+
+input CommentWhereUniqueInput {
+  id: ID
+}
+
+scalar DateTime
+
+type Excersise implements Node {
+  id: ID!
+  name: String!
+  description: String!
+  video: String!
+  targets: [String!]!
+}
+
+"""A connection to a list of items."""
+type ExcersiseConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [ExcersiseEdge]!
+  aggregate: AggregateExcersise!
+}
+
+input ExcersiseCreateInput {
+  id: ID
+  name: String!
+  description: String!
+  video: String!
+  targets: ExcersiseCreatetargetsInput
+}
+
+input ExcersiseCreateManyInput {
+  create: [ExcersiseCreateInput!]
+  connect: [ExcersiseWhereUniqueInput!]
+}
+
+input ExcersiseCreatetargetsInput {
+  set: [String!]
+}
+
+"""An edge in a connection."""
+type ExcersiseEdge {
+  """The item at the end of the edge."""
+  node: Excersise!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum ExcersiseOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+  video_ASC
+  video_DESC
+}
+
+type ExcersisePreviousValues {
+  id: ID!
+  name: String!
+  description: String!
+  video: String!
+  targets: [String!]!
+}
+
+input ExcersiseScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [ExcersiseScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [ExcersiseScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [ExcersiseScalarWhereInput!]
+  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
+  video: String
+
+  """All values that are not equal to given value."""
+  video_not: String
+
+  """All values that are contained in given list."""
+  video_in: [String!]
+
+  """All values that are not contained in given list."""
+  video_not_in: [String!]
+
+  """All values less than the given value."""
+  video_lt: String
+
+  """All values less than or equal the given value."""
+  video_lte: String
+
+  """All values greater than the given value."""
+  video_gt: String
+
+  """All values greater than or equal the given value."""
+  video_gte: String
+
+  """All values containing the given string."""
+  video_contains: String
+
+  """All values not containing the given string."""
+  video_not_contains: String
+
+  """All values starting with the given string."""
+  video_starts_with: String
+
+  """All values not starting with the given string."""
+  video_not_starts_with: String
+
+  """All values ending with the given string."""
+  video_ends_with: String
+
+  """All values not ending with the given string."""
+  video_not_ends_with: String
+}
+
+type ExcersiseSubscriptionPayload {
+  mutation: MutationType!
+  node: Excersise
+  updatedFields: [String!]
+  previousValues: ExcersisePreviousValues
+}
+
+input ExcersiseSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [ExcersiseSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [ExcersiseSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [ExcersiseSubscriptionWhereInput!]
+
+  """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: ExcersiseWhereInput
+}
+
+input ExcersiseUpdateDataInput {
+  name: String
+  description: String
+  video: String
+  targets: ExcersiseUpdatetargetsInput
+}
+
+input ExcersiseUpdateInput {
+  name: String
+  description: String
+  video: String
+  targets: ExcersiseUpdatetargetsInput
+}
+
+input ExcersiseUpdateManyDataInput {
+  name: String
+  description: String
+  video: String
+  targets: ExcersiseUpdatetargetsInput
+}
+
+input ExcersiseUpdateManyInput {
+  create: [ExcersiseCreateInput!]
+  connect: [ExcersiseWhereUniqueInput!]
+  set: [ExcersiseWhereUniqueInput!]
+  disconnect: [ExcersiseWhereUniqueInput!]
+  delete: [ExcersiseWhereUniqueInput!]
+  update: [ExcersiseUpdateWithWhereUniqueNestedInput!]
+  updateMany: [ExcersiseUpdateManyWithWhereNestedInput!]
+  deleteMany: [ExcersiseScalarWhereInput!]
+  upsert: [ExcersiseUpsertWithWhereUniqueNestedInput!]
+}
+
+input ExcersiseUpdateManyMutationInput {
+  name: String
+  description: String
+  video: String
+  targets: ExcersiseUpdatetargetsInput
+}
+
+input ExcersiseUpdateManyWithWhereNestedInput {
+  where: ExcersiseScalarWhereInput!
+  data: ExcersiseUpdateManyDataInput!
+}
+
+input ExcersiseUpdatetargetsInput {
+  set: [String!]
+}
+
+input ExcersiseUpdateWithWhereUniqueNestedInput {
+  where: ExcersiseWhereUniqueInput!
+  data: ExcersiseUpdateDataInput!
+}
+
+input ExcersiseUpsertWithWhereUniqueNestedInput {
+  where: ExcersiseWhereUniqueInput!
+  update: ExcersiseUpdateDataInput!
+  create: ExcersiseCreateInput!
+}
+
+input ExcersiseWhereInput {
+  """Logical AND on all given filters."""
+  AND: [ExcersiseWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [ExcersiseWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [ExcersiseWhereInput!]
+  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
+  video: String
+
+  """All values that are not equal to given value."""
+  video_not: String
+
+  """All values that are contained in given list."""
+  video_in: [String!]
+
+  """All values that are not contained in given list."""
+  video_not_in: [String!]
+
+  """All values less than the given value."""
+  video_lt: String
+
+  """All values less than or equal the given value."""
+  video_lte: String
+
+  """All values greater than the given value."""
+  video_gt: String
+
+  """All values greater than or equal the given value."""
+  video_gte: String
+
+  """All values containing the given string."""
+  video_contains: String
+
+  """All values not containing the given string."""
+  video_not_contains: String
+
+  """All values starting with the given string."""
+  video_starts_with: String
+
+  """All values not starting with the given string."""
+  video_not_starts_with: String
+
+  """All values ending with the given string."""
+  video_ends_with: String
+
+  """All values not ending with the given string."""
+  video_not_ends_with: String
+}
+
+input ExcersiseWhereUniqueInput {
+  id: ID
+}
+
+type Format implements Node {
+  id: ID!
+  name: String!
+  description: String!
+}
+
+"""A connection to a list of items."""
+type FormatConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [FormatEdge]!
+  aggregate: AggregateFormat!
+}
+
+input FormatCreateInput {
+  id: ID
+  name: String!
+  description: String!
+}
+
+input FormatCreateOneInput {
+  create: FormatCreateInput
+  connect: FormatWhereUniqueInput
+}
+
+"""An edge in a connection."""
+type FormatEdge {
+  """The item at the end of the edge."""
+  node: Format!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum FormatOrderByInput {
+  id_ASC
+  id_DESC
+  name_ASC
+  name_DESC
+  description_ASC
+  description_DESC
+}
+
+type FormatPreviousValues {
+  id: ID!
+  name: String!
+  description: String!
+}
+
+type FormatSubscriptionPayload {
+  mutation: MutationType!
+  node: Format
+  updatedFields: [String!]
+  previousValues: FormatPreviousValues
+}
+
+input FormatSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [FormatSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [FormatSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [FormatSubscriptionWhereInput!]
+
+  """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: FormatWhereInput
+}
+
+input FormatUpdateDataInput {
+  name: String
+  description: String
+}
+
+input FormatUpdateInput {
+  name: String
+  description: String
+}
+
+input FormatUpdateManyMutationInput {
+  name: String
+  description: String
+}
+
+input FormatUpdateOneInput {
+  create: FormatCreateInput
+  connect: FormatWhereUniqueInput
+  disconnect: Boolean
+  delete: Boolean
+  update: FormatUpdateDataInput
+  upsert: FormatUpsertNestedInput
+}
+
+input FormatUpsertNestedInput {
+  update: FormatUpdateDataInput!
+  create: FormatCreateInput!
+}
+
+input FormatWhereInput {
+  """Logical AND on all given filters."""
+  AND: [FormatWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [FormatWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [FormatWhereInput!]
+  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
+}
+
+input FormatWhereUniqueInput {
+  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 Mutation {
+  createTraining(data: TrainingCreateInput!): Training!
+  createComment(data: CommentCreateInput!): Comment!
+  createUser(data: UserCreateInput!): User!
+  createTrack(data: TrackCreateInput!): Track!
+  createExcersise(data: ExcersiseCreateInput!): Excersise!
+  createBlock(data: BlockCreateInput!): Block!
+  createFormat(data: FormatCreateInput!): Format!
+  createRating(data: RatingCreateInput!): Rating!
+  updateTraining(data: TrainingUpdateInput!, where: TrainingWhereUniqueInput!): Training
+  updateComment(data: CommentUpdateInput!, where: CommentWhereUniqueInput!): Comment
+  updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput!): User
+  updateTrack(data: TrackUpdateInput!, where: TrackWhereUniqueInput!): Track
+  updateExcersise(data: ExcersiseUpdateInput!, where: ExcersiseWhereUniqueInput!): Excersise
+  updateBlock(data: BlockUpdateInput!, where: BlockWhereUniqueInput!): Block
+  updateFormat(data: FormatUpdateInput!, where: FormatWhereUniqueInput!): Format
+  updateRating(data: RatingUpdateInput!, where: RatingWhereUniqueInput!): Rating
+  deleteTraining(where: TrainingWhereUniqueInput!): Training
+  deleteComment(where: CommentWhereUniqueInput!): Comment
+  deleteUser(where: UserWhereUniqueInput!): User
+  deleteTrack(where: TrackWhereUniqueInput!): Track
+  deleteExcersise(where: ExcersiseWhereUniqueInput!): Excersise
+  deleteBlock(where: BlockWhereUniqueInput!): Block
+  deleteFormat(where: FormatWhereUniqueInput!): Format
+  deleteRating(where: RatingWhereUniqueInput!): Rating
+  upsertTraining(where: TrainingWhereUniqueInput!, create: TrainingCreateInput!, update: TrainingUpdateInput!): Training!
+  upsertComment(where: CommentWhereUniqueInput!, create: CommentCreateInput!, update: CommentUpdateInput!): Comment!
+  upsertUser(where: UserWhereUniqueInput!, create: UserCreateInput!, update: UserUpdateInput!): User!
+  upsertTrack(where: TrackWhereUniqueInput!, create: TrackCreateInput!, update: TrackUpdateInput!): Track!
+  upsertExcersise(where: ExcersiseWhereUniqueInput!, create: ExcersiseCreateInput!, update: ExcersiseUpdateInput!): Excersise!
+  upsertBlock(where: BlockWhereUniqueInput!, create: BlockCreateInput!, update: BlockUpdateInput!): Block!
+  upsertFormat(where: FormatWhereUniqueInput!, create: FormatCreateInput!, update: FormatUpdateInput!): Format!
+  upsertRating(where: RatingWhereUniqueInput!, create: RatingCreateInput!, update: RatingUpdateInput!): Rating!
+  updateManyTrainings(data: TrainingUpdateManyMutationInput!, where: TrainingWhereInput): BatchPayload!
+  updateManyComments(data: CommentUpdateManyMutationInput!, where: CommentWhereInput): BatchPayload!
+  updateManyUsers(data: UserUpdateManyMutationInput!, where: UserWhereInput): BatchPayload!
+  updateManyTracks(data: TrackUpdateManyMutationInput!, where: TrackWhereInput): BatchPayload!
+  updateManyExcersises(data: ExcersiseUpdateManyMutationInput!, where: ExcersiseWhereInput): BatchPayload!
+  updateManyBlocks(data: BlockUpdateManyMutationInput!, where: BlockWhereInput): BatchPayload!
+  updateManyFormats(data: FormatUpdateManyMutationInput!, where: FormatWhereInput): BatchPayload!
+  updateManyRatings(data: RatingUpdateManyMutationInput!, where: RatingWhereInput): BatchPayload!
+  deleteManyTrainings(where: TrainingWhereInput): BatchPayload!
+  deleteManyComments(where: CommentWhereInput): BatchPayload!
+  deleteManyUsers(where: UserWhereInput): BatchPayload!
+  deleteManyTracks(where: TrackWhereInput): BatchPayload!
+  deleteManyExcersises(where: ExcersiseWhereInput): BatchPayload!
+  deleteManyBlocks(where: BlockWhereInput): BatchPayload!
+  deleteManyFormats(where: FormatWhereInput): BatchPayload!
+  deleteManyRatings(where: RatingWhereInput): 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 Query {
+  trainings(where: TrainingWhereInput, orderBy: TrainingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Training]!
+  comments(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Comment]!
+  users(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User]!
+  tracks(where: TrackWhereInput, orderBy: TrackOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Track]!
+  excersises(where: ExcersiseWhereInput, orderBy: ExcersiseOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Excersise]!
+  blocks(where: BlockWhereInput, orderBy: BlockOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Block]!
+  formats(where: FormatWhereInput, orderBy: FormatOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Format]!
+  ratings(where: RatingWhereInput, orderBy: RatingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Rating]!
+  training(where: TrainingWhereUniqueInput!): Training
+  comment(where: CommentWhereUniqueInput!): Comment
+  user(where: UserWhereUniqueInput!): User
+  track(where: TrackWhereUniqueInput!): Track
+  excersise(where: ExcersiseWhereUniqueInput!): Excersise
+  block(where: BlockWhereUniqueInput!): Block
+  format(where: FormatWhereUniqueInput!): Format
+  rating(where: RatingWhereUniqueInput!): Rating
+  trainingsConnection(where: TrainingWhereInput, orderBy: TrainingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TrainingConnection!
+  commentsConnection(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): CommentConnection!
+  usersConnection(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): UserConnection!
+  tracksConnection(where: TrackWhereInput, orderBy: TrackOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TrackConnection!
+  excersisesConnection(where: ExcersiseWhereInput, orderBy: ExcersiseOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): ExcersiseConnection!
+  blocksConnection(where: BlockWhereInput, orderBy: BlockOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): BlockConnection!
+  formatsConnection(where: FormatWhereInput, orderBy: FormatOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): FormatConnection!
+  ratingsConnection(where: RatingWhereInput, orderBy: RatingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): RatingConnection!
+
+  """Fetches an object given its ID"""
+  node(
+    """The ID of an object"""
+    id: ID!
+  ): Node
+}
+
+type Rating implements Node {
+  id: ID!
+  user: User!
+  value: Int!
+  comment: String!
+  createdAt: DateTime!
+}
+
+"""A connection to a list of items."""
+type RatingConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [RatingEdge]!
+  aggregate: AggregateRating!
+}
+
+input RatingCreateInput {
+  id: ID
+  value: Int!
+  comment: String!
+  user: UserCreateOneWithoutRatingsInput!
+}
+
+input RatingCreateManyInput {
+  create: [RatingCreateInput!]
+  connect: [RatingWhereUniqueInput!]
+}
+
+input RatingCreateManyWithoutUserInput {
+  create: [RatingCreateWithoutUserInput!]
+  connect: [RatingWhereUniqueInput!]
+}
+
+input RatingCreateWithoutUserInput {
+  id: ID
+  value: Int!
+  comment: String!
+}
+
+"""An edge in a connection."""
+type RatingEdge {
+  """The item at the end of the edge."""
+  node: Rating!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum RatingOrderByInput {
+  id_ASC
+  id_DESC
+  value_ASC
+  value_DESC
+  comment_ASC
+  comment_DESC
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type RatingPreviousValues {
+  id: ID!
+  value: Int!
+  comment: String!
+  createdAt: DateTime!
+}
+
+input RatingScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [RatingScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [RatingScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [RatingScalarWhereInput!]
+  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
+  value: Int
+
+  """All values that are not equal to given value."""
+  value_not: Int
+
+  """All values that are contained in given list."""
+  value_in: [Int!]
+
+  """All values that are not contained in given list."""
+  value_not_in: [Int!]
+
+  """All values less than the given value."""
+  value_lt: Int
+
+  """All values less than or equal the given value."""
+  value_lte: Int
+
+  """All values greater than the given value."""
+  value_gt: Int
+
+  """All values greater than or equal the given value."""
+  value_gte: Int
+  comment: String
+
+  """All values that are not equal to given value."""
+  comment_not: String
+
+  """All values that are contained in given list."""
+  comment_in: [String!]
+
+  """All values that are not contained in given list."""
+  comment_not_in: [String!]
+
+  """All values less than the given value."""
+  comment_lt: String
+
+  """All values less than or equal the given value."""
+  comment_lte: String
+
+  """All values greater than the given value."""
+  comment_gt: String
+
+  """All values greater than or equal the given value."""
+  comment_gte: String
+
+  """All values containing the given string."""
+  comment_contains: String
+
+  """All values not containing the given string."""
+  comment_not_contains: String
+
+  """All values starting with the given string."""
+  comment_starts_with: String
+
+  """All values not starting with the given string."""
+  comment_not_starts_with: String
+
+  """All values ending with the given string."""
+  comment_ends_with: String
+
+  """All values not ending with the given string."""
+  comment_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 RatingSubscriptionPayload {
+  mutation: MutationType!
+  node: Rating
+  updatedFields: [String!]
+  previousValues: RatingPreviousValues
+}
+
+input RatingSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [RatingSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [RatingSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [RatingSubscriptionWhereInput!]
+
+  """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: RatingWhereInput
+}
+
+input RatingUpdateDataInput {
+  value: Int
+  comment: String
+  user: UserUpdateOneRequiredWithoutRatingsInput
+}
+
+input RatingUpdateInput {
+  value: Int
+  comment: String
+  user: UserUpdateOneRequiredWithoutRatingsInput
+}
+
+input RatingUpdateManyDataInput {
+  value: Int
+  comment: String
+}
+
+input RatingUpdateManyInput {
+  create: [RatingCreateInput!]
+  connect: [RatingWhereUniqueInput!]
+  set: [RatingWhereUniqueInput!]
+  disconnect: [RatingWhereUniqueInput!]
+  delete: [RatingWhereUniqueInput!]
+  update: [RatingUpdateWithWhereUniqueNestedInput!]
+  updateMany: [RatingUpdateManyWithWhereNestedInput!]
+  deleteMany: [RatingScalarWhereInput!]
+  upsert: [RatingUpsertWithWhereUniqueNestedInput!]
+}
+
+input RatingUpdateManyMutationInput {
+  value: Int
+  comment: String
+}
+
+input RatingUpdateManyWithoutUserInput {
+  create: [RatingCreateWithoutUserInput!]
+  connect: [RatingWhereUniqueInput!]
+  set: [RatingWhereUniqueInput!]
+  disconnect: [RatingWhereUniqueInput!]
+  delete: [RatingWhereUniqueInput!]
+  update: [RatingUpdateWithWhereUniqueWithoutUserInput!]
+  updateMany: [RatingUpdateManyWithWhereNestedInput!]
+  deleteMany: [RatingScalarWhereInput!]
+  upsert: [RatingUpsertWithWhereUniqueWithoutUserInput!]
+}
+
+input RatingUpdateManyWithWhereNestedInput {
+  where: RatingScalarWhereInput!
+  data: RatingUpdateManyDataInput!
+}
+
+input RatingUpdateWithoutUserDataInput {
+  value: Int
+  comment: String
+}
+
+input RatingUpdateWithWhereUniqueNestedInput {
+  where: RatingWhereUniqueInput!
+  data: RatingUpdateDataInput!
+}
+
+input RatingUpdateWithWhereUniqueWithoutUserInput {
+  where: RatingWhereUniqueInput!
+  data: RatingUpdateWithoutUserDataInput!
+}
+
+input RatingUpsertWithWhereUniqueNestedInput {
+  where: RatingWhereUniqueInput!
+  update: RatingUpdateDataInput!
+  create: RatingCreateInput!
+}
+
+input RatingUpsertWithWhereUniqueWithoutUserInput {
+  where: RatingWhereUniqueInput!
+  update: RatingUpdateWithoutUserDataInput!
+  create: RatingCreateWithoutUserInput!
+}
+
+input RatingWhereInput {
+  """Logical AND on all given filters."""
+  AND: [RatingWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [RatingWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [RatingWhereInput!]
+  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
+  value: Int
+
+  """All values that are not equal to given value."""
+  value_not: Int
+
+  """All values that are contained in given list."""
+  value_in: [Int!]
+
+  """All values that are not contained in given list."""
+  value_not_in: [Int!]
+
+  """All values less than the given value."""
+  value_lt: Int
+
+  """All values less than or equal the given value."""
+  value_lte: Int
+
+  """All values greater than the given value."""
+  value_gt: Int
+
+  """All values greater than or equal the given value."""
+  value_gte: Int
+  comment: String
+
+  """All values that are not equal to given value."""
+  comment_not: String
+
+  """All values that are contained in given list."""
+  comment_in: [String!]
+
+  """All values that are not contained in given list."""
+  comment_not_in: [String!]
+
+  """All values less than the given value."""
+  comment_lt: String
+
+  """All values less than or equal the given value."""
+  comment_lte: String
+
+  """All values greater than the given value."""
+  comment_gt: String
+
+  """All values greater than or equal the given value."""
+  comment_gte: String
+
+  """All values containing the given string."""
+  comment_contains: String
+
+  """All values not containing the given string."""
+  comment_not_contains: String
+
+  """All values starting with the given string."""
+  comment_starts_with: String
+
+  """All values not starting with the given string."""
+  comment_not_starts_with: String
+
+  """All values ending with the given string."""
+  comment_ends_with: String
+
+  """All values not ending with the given string."""
+  comment_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
+  user: UserWhereInput
+}
+
+input RatingWhereUniqueInput {
+  id: ID
+}
+
+type Subscription {
+  training(where: TrainingSubscriptionWhereInput): TrainingSubscriptionPayload
+  comment(where: CommentSubscriptionWhereInput): CommentSubscriptionPayload
+  user(where: UserSubscriptionWhereInput): UserSubscriptionPayload
+  track(where: TrackSubscriptionWhereInput): TrackSubscriptionPayload
+  excersise(where: ExcersiseSubscriptionWhereInput): ExcersiseSubscriptionPayload
+  block(where: BlockSubscriptionWhereInput): BlockSubscriptionPayload
+  format(where: FormatSubscriptionWhereInput): FormatSubscriptionPayload
+  rating(where: RatingSubscriptionWhereInput): RatingSubscriptionPayload
+}
+
+type Track implements Node {
+  id: ID!
+  title: String!
+  artist: String!
+  duration: Int!
+  link: String!
+}
+
+"""A connection to a list of items."""
+type TrackConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [TrackEdge]!
+  aggregate: AggregateTrack!
+}
+
+input TrackCreateInput {
+  id: ID
+  title: String!
+  artist: String!
+  duration: Int!
+  link: String!
+}
+
+input TrackCreateManyInput {
+  create: [TrackCreateInput!]
+  connect: [TrackWhereUniqueInput!]
+}
+
+"""An edge in a connection."""
+type TrackEdge {
+  """The item at the end of the edge."""
+  node: Track!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum TrackOrderByInput {
+  id_ASC
+  id_DESC
+  title_ASC
+  title_DESC
+  artist_ASC
+  artist_DESC
+  duration_ASC
+  duration_DESC
+  link_ASC
+  link_DESC
+}
+
+type TrackPreviousValues {
+  id: ID!
+  title: String!
+  artist: String!
+  duration: Int!
+  link: String!
+}
+
+input TrackScalarWhereInput {
+  """Logical AND on all given filters."""
+  AND: [TrackScalarWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [TrackScalarWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [TrackScalarWhereInput!]
+  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
+  title: String
+
+  """All values that are not equal to given value."""
+  title_not: String
+
+  """All values that are contained in given list."""
+  title_in: [String!]
+
+  """All values that are not contained in given list."""
+  title_not_in: [String!]
+
+  """All values less than the given value."""
+  title_lt: String
+
+  """All values less than or equal the given value."""
+  title_lte: String
+
+  """All values greater than the given value."""
+  title_gt: String
+
+  """All values greater than or equal the given value."""
+  title_gte: String
+
+  """All values containing the given string."""
+  title_contains: String
+
+  """All values not containing the given string."""
+  title_not_contains: String
+
+  """All values starting with the given string."""
+  title_starts_with: String
+
+  """All values not starting with the given string."""
+  title_not_starts_with: String
+
+  """All values ending with the given string."""
+  title_ends_with: String
+
+  """All values not ending with the given string."""
+  title_not_ends_with: String
+  artist: String
+
+  """All values that are not equal to given value."""
+  artist_not: String
+
+  """All values that are contained in given list."""
+  artist_in: [String!]
+
+  """All values that are not contained in given list."""
+  artist_not_in: [String!]
+
+  """All values less than the given value."""
+  artist_lt: String
+
+  """All values less than or equal the given value."""
+  artist_lte: String
+
+  """All values greater than the given value."""
+  artist_gt: String
+
+  """All values greater than or equal the given value."""
+  artist_gte: String
+
+  """All values containing the given string."""
+  artist_contains: String
+
+  """All values not containing the given string."""
+  artist_not_contains: String
+
+  """All values starting with the given string."""
+  artist_starts_with: String
+
+  """All values not starting with the given string."""
+  artist_not_starts_with: String
+
+  """All values ending with the given string."""
+  artist_ends_with: String
+
+  """All values not ending with the given string."""
+  artist_not_ends_with: String
+  duration: Int
+
+  """All values that are not equal to given value."""
+  duration_not: Int
+
+  """All values that are contained in given list."""
+  duration_in: [Int!]
+
+  """All values that are not contained in given list."""
+  duration_not_in: [Int!]
+
+  """All values less than the given value."""
+  duration_lt: Int
+
+  """All values less than or equal the given value."""
+  duration_lte: Int
+
+  """All values greater than the given value."""
+  duration_gt: Int
+
+  """All values greater than or equal the given value."""
+  duration_gte: Int
+  link: String
+
+  """All values that are not equal to given value."""
+  link_not: String
+
+  """All values that are contained in given list."""
+  link_in: [String!]
+
+  """All values that are not contained in given list."""
+  link_not_in: [String!]
+
+  """All values less than the given value."""
+  link_lt: String
+
+  """All values less than or equal the given value."""
+  link_lte: String
+
+  """All values greater than the given value."""
+  link_gt: String
+
+  """All values greater than or equal the given value."""
+  link_gte: String
+
+  """All values containing the given string."""
+  link_contains: String
+
+  """All values not containing the given string."""
+  link_not_contains: String
+
+  """All values starting with the given string."""
+  link_starts_with: String
+
+  """All values not starting with the given string."""
+  link_not_starts_with: String
+
+  """All values ending with the given string."""
+  link_ends_with: String
+
+  """All values not ending with the given string."""
+  link_not_ends_with: String
+}
+
+type TrackSubscriptionPayload {
+  mutation: MutationType!
+  node: Track
+  updatedFields: [String!]
+  previousValues: TrackPreviousValues
+}
+
+input TrackSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [TrackSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [TrackSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [TrackSubscriptionWhereInput!]
+
+  """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: TrackWhereInput
+}
+
+input TrackUpdateDataInput {
+  title: String
+  artist: String
+  duration: Int
+  link: String
+}
+
+input TrackUpdateInput {
+  title: String
+  artist: String
+  duration: Int
+  link: String
+}
+
+input TrackUpdateManyDataInput {
+  title: String
+  artist: String
+  duration: Int
+  link: String
+}
+
+input TrackUpdateManyInput {
+  create: [TrackCreateInput!]
+  connect: [TrackWhereUniqueInput!]
+  set: [TrackWhereUniqueInput!]
+  disconnect: [TrackWhereUniqueInput!]
+  delete: [TrackWhereUniqueInput!]
+  update: [TrackUpdateWithWhereUniqueNestedInput!]
+  updateMany: [TrackUpdateManyWithWhereNestedInput!]
+  deleteMany: [TrackScalarWhereInput!]
+  upsert: [TrackUpsertWithWhereUniqueNestedInput!]
+}
+
+input TrackUpdateManyMutationInput {
+  title: String
+  artist: String
+  duration: Int
+  link: String
+}
+
+input TrackUpdateManyWithWhereNestedInput {
+  where: TrackScalarWhereInput!
+  data: TrackUpdateManyDataInput!
+}
+
+input TrackUpdateWithWhereUniqueNestedInput {
+  where: TrackWhereUniqueInput!
+  data: TrackUpdateDataInput!
+}
+
+input TrackUpsertWithWhereUniqueNestedInput {
+  where: TrackWhereUniqueInput!
+  update: TrackUpdateDataInput!
+  create: TrackCreateInput!
+}
+
+input TrackWhereInput {
+  """Logical AND on all given filters."""
+  AND: [TrackWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [TrackWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [TrackWhereInput!]
+  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
+  title: String
+
+  """All values that are not equal to given value."""
+  title_not: String
+
+  """All values that are contained in given list."""
+  title_in: [String!]
+
+  """All values that are not contained in given list."""
+  title_not_in: [String!]
+
+  """All values less than the given value."""
+  title_lt: String
+
+  """All values less than or equal the given value."""
+  title_lte: String
+
+  """All values greater than the given value."""
+  title_gt: String
+
+  """All values greater than or equal the given value."""
+  title_gte: String
+
+  """All values containing the given string."""
+  title_contains: String
+
+  """All values not containing the given string."""
+  title_not_contains: String
+
+  """All values starting with the given string."""
+  title_starts_with: String
+
+  """All values not starting with the given string."""
+  title_not_starts_with: String
+
+  """All values ending with the given string."""
+  title_ends_with: String
+
+  """All values not ending with the given string."""
+  title_not_ends_with: String
+  artist: String
+
+  """All values that are not equal to given value."""
+  artist_not: String
+
+  """All values that are contained in given list."""
+  artist_in: [String!]
+
+  """All values that are not contained in given list."""
+  artist_not_in: [String!]
+
+  """All values less than the given value."""
+  artist_lt: String
+
+  """All values less than or equal the given value."""
+  artist_lte: String
+
+  """All values greater than the given value."""
+  artist_gt: String
+
+  """All values greater than or equal the given value."""
+  artist_gte: String
+
+  """All values containing the given string."""
+  artist_contains: String
+
+  """All values not containing the given string."""
+  artist_not_contains: String
+
+  """All values starting with the given string."""
+  artist_starts_with: String
+
+  """All values not starting with the given string."""
+  artist_not_starts_with: String
+
+  """All values ending with the given string."""
+  artist_ends_with: String
+
+  """All values not ending with the given string."""
+  artist_not_ends_with: String
+  duration: Int
+
+  """All values that are not equal to given value."""
+  duration_not: Int
+
+  """All values that are contained in given list."""
+  duration_in: [Int!]
+
+  """All values that are not contained in given list."""
+  duration_not_in: [Int!]
+
+  """All values less than the given value."""
+  duration_lt: Int
+
+  """All values less than or equal the given value."""
+  duration_lte: Int
+
+  """All values greater than the given value."""
+  duration_gt: Int
+
+  """All values greater than or equal the given value."""
+  duration_gte: Int
+  link: String
+
+  """All values that are not equal to given value."""
+  link_not: String
+
+  """All values that are contained in given list."""
+  link_in: [String!]
+
+  """All values that are not contained in given list."""
+  link_not_in: [String!]
+
+  """All values less than the given value."""
+  link_lt: String
+
+  """All values less than or equal the given value."""
+  link_lte: String
+
+  """All values greater than the given value."""
+  link_gt: String
+
+  """All values greater than or equal the given value."""
+  link_gte: String
+
+  """All values containing the given string."""
+  link_contains: String
+
+  """All values not containing the given string."""
+  link_not_contains: String
+
+  """All values starting with the given string."""
+  link_starts_with: String
+
+  """All values not starting with the given string."""
+  link_not_starts_with: String
+
+  """All values ending with the given string."""
+  link_ends_with: String
+
+  """All values not ending with the given string."""
+  link_not_ends_with: String
+}
+
+input TrackWhereUniqueInput {
+  id: ID
+}
+
+type Training implements Node {
+  id: ID!
+  title: String!
+  content(where: BlockWhereInput, orderBy: BlockOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Block!]
+  createdAt: DateTime!
+  trainingDate: DateTime!
+  participants(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User!]
+  ratings(where: RatingWhereInput, orderBy: RatingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Rating!]
+}
+
+"""A connection to a list of items."""
+type TrainingConnection {
+  """Information to aid in pagination."""
+  pageInfo: PageInfo!
+
+  """A list of edges."""
+  edges: [TrainingEdge]!
+  aggregate: AggregateTraining!
+}
+
+input TrainingCreateInput {
+  id: ID
+  title: String!
+  trainingDate: DateTime!
+  content: BlockCreateManyInput
+  participants: UserCreateManyInput
+  ratings: RatingCreateManyInput
+}
+
+"""An edge in a connection."""
+type TrainingEdge {
+  """The item at the end of the edge."""
+  node: Training!
+
+  """A cursor for use in pagination."""
+  cursor: String!
+}
+
+enum TrainingOrderByInput {
+  id_ASC
+  id_DESC
+  title_ASC
+  title_DESC
+  createdAt_ASC
+  createdAt_DESC
+  trainingDate_ASC
+  trainingDate_DESC
+}
+
+type TrainingPreviousValues {
+  id: ID!
+  title: String!
+  createdAt: DateTime!
+  trainingDate: DateTime!
+}
+
+type TrainingSubscriptionPayload {
+  mutation: MutationType!
+  node: Training
+  updatedFields: [String!]
+  previousValues: TrainingPreviousValues
+}
+
+input TrainingSubscriptionWhereInput {
+  """Logical AND on all given filters."""
+  AND: [TrainingSubscriptionWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [TrainingSubscriptionWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [TrainingSubscriptionWhereInput!]
+
+  """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: TrainingWhereInput
+}
+
+input TrainingUpdateInput {
+  title: String
+  trainingDate: DateTime
+  content: BlockUpdateManyInput
+  participants: UserUpdateManyInput
+  ratings: RatingUpdateManyInput
+}
+
+input TrainingUpdateManyMutationInput {
+  title: String
+  trainingDate: DateTime
+}
+
+input TrainingWhereInput {
+  """Logical AND on all given filters."""
+  AND: [TrainingWhereInput!]
+
+  """Logical OR on all given filters."""
+  OR: [TrainingWhereInput!]
+
+  """Logical NOT on all given filters combined by AND."""
+  NOT: [TrainingWhereInput!]
+  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
+  title: String
+
+  """All values that are not equal to given value."""
+  title_not: String
+
+  """All values that are contained in given list."""
+  title_in: [String!]
+
+  """All values that are not contained in given list."""
+  title_not_in: [String!]
+
+  """All values less than the given value."""
+  title_lt: String
+
+  """All values less than or equal the given value."""
+  title_lte: String
+
+  """All values greater than the given value."""
+  title_gt: String
+
+  """All values greater than or equal the given value."""
+  title_gte: String
+
+  """All values containing the given string."""
+  title_contains: String
+
+  """All values not containing the given string."""
+  title_not_contains: String
+
+  """All values starting with the given string."""
+  title_starts_with: String
+
+  """All values not starting with the given string."""
+  title_not_starts_with: String
+
+  """All values ending with the given string."""
+  title_ends_with: String
+
+  """All values not ending with the given string."""
+  title_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
+  trainingDate: DateTime
+
+  """All values that are not equal to given value."""
+  trainingDate_not: DateTime
+
+  """All values that are contained in given list."""
+  trainingDate_in: [DateTime!]
+
+  """All values that are not contained in given list."""
+  trainingDate_not_in: [DateTime!]
+
+  """All values less than the given value."""
+  trainingDate_lt: DateTime
+
+  """All values less than or equal the given value."""
+  trainingDate_lte: DateTime
+
+  """All values greater than the given value."""
+  trainingDate_gt: DateTime
+
+  """All values greater than or equal the given value."""
+  trainingDate_gte: DateTime
+  content_every: BlockWhereInput
+  content_some: BlockWhereInput
+  content_none: BlockWhereInput
+  participants_every: UserWhereInput
+  participants_some: UserWhereInput
+  participants_none: UserWhereInput
+  ratings_every: RatingWhereInput
+  ratings_some: RatingWhereInput
+  ratings_none: RatingWhereInput
+}
+
+input TrainingWhereUniqueInput {
+  id: ID
+}
+
+type User implements Node {
+  id: ID!
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  createdAt: DateTime!
+  comments(where: CommentWhereInput, orderBy: CommentOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Comment!]
+  ratings(where: RatingWhereInput, orderBy: RatingOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Rating!]
+}
+
+"""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 {
+  id: ID
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  comments: CommentCreateManyWithoutAuthorInput
+  ratings: RatingCreateManyWithoutUserInput
+}
+
+input UserCreateManyInput {
+  create: [UserCreateInput!]
+  connect: [UserWhereUniqueInput!]
+}
+
+input UserCreateOneWithoutCommentsInput {
+  create: UserCreateWithoutCommentsInput
+  connect: UserWhereUniqueInput
+}
+
+input UserCreateOneWithoutRatingsInput {
+  create: UserCreateWithoutRatingsInput
+  connect: UserWhereUniqueInput
+}
+
+input UserCreateWithoutCommentsInput {
+  id: ID
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  ratings: RatingCreateManyWithoutUserInput
+}
+
+input UserCreateWithoutRatingsInput {
+  id: ID
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  comments: CommentCreateManyWithoutAuthorInput
+}
+
+"""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
+  createdAt_ASC
+  createdAt_DESC
+}
+
+type UserPreviousValues {
+  id: ID!
+  email: String!
+  name: String!
+  abbreviation: String!
+  password: String!
+  createdAt: DateTime!
+}
+
+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
+  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 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
+  comments: CommentUpdateManyWithoutAuthorInput
+  ratings: RatingUpdateManyWithoutUserInput
+}
+
+input UserUpdateInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  comments: CommentUpdateManyWithoutAuthorInput
+  ratings: RatingUpdateManyWithoutUserInput
+}
+
+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 UserUpdateOneRequiredWithoutCommentsInput {
+  create: UserCreateWithoutCommentsInput
+  connect: UserWhereUniqueInput
+  update: UserUpdateWithoutCommentsDataInput
+  upsert: UserUpsertWithoutCommentsInput
+}
+
+input UserUpdateOneRequiredWithoutRatingsInput {
+  create: UserCreateWithoutRatingsInput
+  connect: UserWhereUniqueInput
+  update: UserUpdateWithoutRatingsDataInput
+  upsert: UserUpsertWithoutRatingsInput
+}
+
+input UserUpdateWithoutCommentsDataInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  ratings: RatingUpdateManyWithoutUserInput
+}
+
+input UserUpdateWithoutRatingsDataInput {
+  email: String
+  name: String
+  abbreviation: String
+  password: String
+  comments: CommentUpdateManyWithoutAuthorInput
+}
+
+input UserUpdateWithWhereUniqueNestedInput {
+  where: UserWhereUniqueInput!
+  data: UserUpdateDataInput!
+}
+
+input UserUpsertWithoutCommentsInput {
+  update: UserUpdateWithoutCommentsDataInput!
+  create: UserCreateWithoutCommentsInput!
+}
+
+input UserUpsertWithoutRatingsInput {
+  update: UserUpdateWithoutRatingsDataInput!
+  create: UserCreateWithoutRatingsInput!
+}
+
+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
+  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
+  comments_every: CommentWhereInput
+  comments_some: CommentWhereInput
+  comments_none: CommentWhereInput
+  ratings_every: RatingWhereInput
+  ratings_some: RatingWhereInput
+  ratings_none: RatingWhereInput
+}
+
+input UserWhereUniqueInput {
+  id: ID
+  email: String
+}

+ 28 - 1
docker-compose.yml

@@ -9,6 +9,33 @@ services:
       - "./frontend:/app"
       - "/app/node_modules"
     ports:
-      - "3001:3000"
+      - "127.0.0.1:8800:3000"
     environment:
       - NODE_ENV=development
+
+  prisma:
+    image: prismagraphql/prisma:1.34.10
+    restart: always
+    ports:
+      - "127.0.0.1:8846:4466"
+    environment:
+      PRISMA_CONFIG: |
+        port: 4466
+        databases:
+          default:
+            connector: mysql
+            host: mysql
+            port: 3306
+            user: root
+            password: prisma
+            migrations: true
+  mysql:
+    image: mysql:5.7
+    restart: always
+    environment:
+      MYSQL_ROOT_PASSWORD: prisma
+    volumes:
+      - mysql:/var/lib/mysql
+
+volumes:
+  mysql:

Някои файлове не бяха показани, защото твърде много файлове са промени