type User { id: ID! @id email: String! @unique name: String! password: String! resetToken: String resetTokenExpiry: Float createdAt: DateTime! @createdAt comments: [Comment!]! ratings: [Rating!]! permissions: [Permission!]! @scalarList(strategy: RELATION) interests: [String!]! @scalarList(strategy: RELATION) } enum Permission { ADMIN INSTRUCTOR } type Training { id: ID! @id title: String! type: TrainingType! createdAt: DateTime! @createdAt trainingDate: DateTime location: String registrations: [User!]! attendance: Int ratings: [Rating!]! published: Boolean! blocks: [Block!]! } type TrainingType { id: ID! @id name: String! @unique description: String! } type Block { id: ID! @id sequence: Int! title: String! description: String videos: [String!]! @scalarList(strategy: RELATION) pictures: [String!]! @scalarList(strategy: RELATION) duration: Int rounds: Int format: Format! rest: Int tracks: [Track!]! blocks: [Block!]! exercises: [ExerciseInstance!]! } type Format { id: ID! @id name: String! description: String! } type Track { id: ID! @id title: String! artist: String! duration: Int! link: String! } type ExerciseInstance { id: ID! @id exercise: Exercise! repetitions: Int } type Exercise { id: ID! @id name: String! description: String! video: String! targets: [String!]! @scalarList(strategy: RELATION) baseExercise: [String!]! @scalarList(strategy: RELATION) } type Rating { id: ID! @id user: User! value: Int! comment: String! createdAt: DateTime! @createdAt } type Comment { id: ID! @id text: String! author: User! createdAt: DateTime! @createdAt }