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! content: [Block]! createdAt: DateTime! @createdAt trainingDate: DateTime! location: String! registration: [User]! attendance: Int! ratings: [Rating]! published: Boolean! } type TrainingType { id: ID! @id name: String! @unique description: String! } type Block { id: ID! @id sequence: Int! title: String! duration: Int! variation: String format: Format tracks: [Track]! exercises: [Exercise]! description: String! } type Format { id: ID! @id name: String! description: String! } type Track { id: ID! @id title: String! artist: String! duration: Int! link: String! } type Exercise { id: ID! @id name: String! description: String! video: String! targets: [String]! @scalarList(strategy: RELATION) baseExercise: BaseExercise! } type BaseExercise { id: ID! @id name: String! variations: [Exercise]! } 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 }