Update generated types

This commit is contained in:
Daniel Egger 2023-07-18 09:37:42 +02:00
parent da03b407bb
commit eb50fb0b59
4 changed files with 557 additions and 71 deletions

View File

@ -258,9 +258,6 @@ There are some rules when it comes to the folder structure of the frontend.
## GraphQL ## GraphQL
When you change something on the server side run the following command to update the
graphql schema:
```bash ```bash
python manage.py graphql_schema python manage.py graphql_schema
``` ```
@ -270,13 +267,25 @@ generated code
```bash ```bash
npm run codegen npm run codegen
# `npm run dev` includes `npm run codegen` as step...
npm run dev
``` ```
💡 If you run `npm run dev`, the codegen command will be run automatically in watch mode." If you run `npm run dev`, the codegen command will be run automatically in watch mode.
For the `ObjectTypes` on the server, please use the postfix `ObjectType` for types,
like `LearningContentAttendanceCourseObjectType`.
This will prevent problems with the hand written types on the client side,
when `npm run codegen` will create the types automatically.
When you change something on the server side run the following command to update the
graphql schema.
### Open Questions ### Open Questions
- The `id` field has to be a string? - The `id` field has to be a string?
- Is running `codegen` a prerequisite so that it even works?
- What about the generated types from `codegen`? Hand written types seem to be better. - What about the generated types from `codegen`? Hand written types seem to be better.
- The functions is `cacheExchange` should be nearer the concrete implementation - The functions in `cacheExchange` should be nearer the concrete implementation...

View File

@ -138,6 +138,20 @@ export type AttendanceUserType = {
user_id: Scalars['UUID']['output']; user_id: Scalars['UUID']['output'];
}; };
export type CircleObjectType = CoursePageInterface & {
__typename?: 'CircleObjectType';
content_type?: Maybe<Scalars['String']['output']>;
description: Scalars['String']['output'];
frontend_url?: Maybe<Scalars['String']['output']>;
goals: Scalars['String']['output'];
id?: Maybe<Scalars['ID']['output']>;
learning_sequences?: Maybe<Array<Maybe<LearningSequenceObjectType>>>;
live?: Maybe<Scalars['Boolean']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
/** An enumeration. */ /** An enumeration. */
export type CoreUserLanguageChoices = export type CoreUserLanguageChoices =
/** Deutsch */ /** Deutsch */
@ -147,6 +161,15 @@ export type CoreUserLanguageChoices =
/** Italiano */ /** Italiano */
| 'IT'; | 'IT';
export type CourseObjectType = {
__typename?: 'CourseObjectType';
category_name: Scalars['String']['output'];
id: Scalars['ID']['output'];
learning_path?: Maybe<LearningPathObjectType>;
slug: Scalars['String']['output'];
title: Scalars['String']['output'];
};
export type CoursePageInterface = { export type CoursePageInterface = {
content_type?: Maybe<Scalars['String']['output']>; content_type?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>; frontend_url?: Maybe<Scalars['String']['output']>;
@ -170,15 +193,6 @@ export type CourseSessionAttendanceCourseType = {
trainer: Scalars['String']['output']; trainer: Scalars['String']['output'];
}; };
export type CourseType = {
__typename?: 'CourseType';
category_name: Scalars['String']['output'];
id: Scalars['ID']['output'];
learning_path?: Maybe<LearningPathType>;
slug: Scalars['String']['output'];
title: Scalars['String']['output'];
};
export type ErrorType = { export type ErrorType = {
__typename?: 'ErrorType'; __typename?: 'ErrorType';
field: Scalars['String']['output']; field: Scalars['String']['output'];
@ -187,14 +201,170 @@ export type ErrorType = {
export type FeedbackResponse = Node & { export type FeedbackResponse = Node & {
__typename?: 'FeedbackResponse'; __typename?: 'FeedbackResponse';
circle: CircleObjectType;
created_at: Scalars['DateTime']['output']; created_at: Scalars['DateTime']['output'];
data?: Maybe<Scalars['GenericScalar']['output']>; data?: Maybe<Scalars['GenericScalar']['output']>;
/** The ID of the object */ /** The ID of the object */
id: Scalars['ID']['output']; id: Scalars['ID']['output'];
}; };
export type LearningPathType = CoursePageInterface & { export type LearningContentAssignmentObjectType = LearningContentInterface & {
__typename?: 'LearningPathType'; __typename?: 'LearningContentAssignmentObjectType';
assignment_type: LearnpathLearningContentAssignmentAssignmentTypeChoices;
content?: Maybe<Scalars['String']['output']>;
content_assignment: AssignmentObjectType;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentAttendanceCourseObjectType = LearningContentInterface & {
__typename?: 'LearningContentAttendanceCourseObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentDocumentListObjectType = LearningContentInterface & {
__typename?: 'LearningContentDocumentListObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentFeedbackObjectType = LearningContentInterface & {
__typename?: 'LearningContentFeedbackObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentInterface = {
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentLearningModuleObjectType = LearningContentInterface & {
__typename?: 'LearningContentLearningModuleObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentMediaLibraryObjectType = LearningContentInterface & {
__typename?: 'LearningContentMediaLibraryObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentPlaceholderObjectType = LearningContentInterface & {
__typename?: 'LearningContentPlaceholderObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentRichTextObjectType = LearningContentInterface & {
__typename?: 'LearningContentRichTextObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentTestObjectType = LearningContentInterface & {
__typename?: 'LearningContentTestObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningContentVideoObjectType = LearningContentInterface & {
__typename?: 'LearningContentVideoObjectType';
content?: Maybe<Scalars['String']['output']>;
content_type?: Maybe<Scalars['String']['output']>;
description?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
live?: Maybe<Scalars['Boolean']['output']>;
minutes?: Maybe<Scalars['Int']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningPathObjectType = CoursePageInterface & {
__typename?: 'LearningPathObjectType';
content_type?: Maybe<Scalars['String']['output']>; content_type?: Maybe<Scalars['String']['output']>;
depth: Scalars['Int']['output']; depth: Scalars['Int']['output'];
draft_title: Scalars['String']['output']; draft_title: Scalars['String']['output'];
@ -222,10 +392,45 @@ export type LearningPathType = CoursePageInterface & {
show_in_menus: Scalars['Boolean']['output']; show_in_menus: Scalars['Boolean']['output'];
slug?: Maybe<Scalars['String']['output']>; slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>; title?: Maybe<Scalars['String']['output']>;
topics?: Maybe<Array<Maybe<TopicObjectType>>>;
translation_key?: Maybe<Scalars['String']['output']>; translation_key?: Maybe<Scalars['String']['output']>;
url_path: Scalars['String']['output']; url_path: Scalars['String']['output'];
}; };
export type LearningSequenceObjectType = CoursePageInterface & {
__typename?: 'LearningSequenceObjectType';
content_type?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
icon: Scalars['String']['output'];
id?: Maybe<Scalars['ID']['output']>;
learning_units?: Maybe<Array<Maybe<LearningUnitObjectType>>>;
live?: Maybe<Scalars['Boolean']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type LearningUnitObjectType = CoursePageInterface & {
__typename?: 'LearningUnitObjectType';
content_type?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
learning_contents?: Maybe<Array<Maybe<LearningContentInterface>>>;
live?: Maybe<Scalars['Boolean']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
/** An enumeration. */
export type LearnpathLearningContentAssignmentAssignmentTypeChoices =
/** CASEWORK */
| 'CASEWORK'
/** PREP_ASSIGNMENT */
| 'PREP_ASSIGNMENT'
/** REFLECTION */
| 'REFLECTION';
export type Mutation = { export type Mutation = {
__typename?: 'Mutation'; __typename?: 'Mutation';
send_feedback?: Maybe<SendFeedbackPayload>; send_feedback?: Maybe<SendFeedbackPayload>;
@ -266,8 +471,20 @@ export type Query = {
__typename?: 'Query'; __typename?: 'Query';
assignment?: Maybe<AssignmentObjectType>; assignment?: Maybe<AssignmentObjectType>;
assignment_completion?: Maybe<AssignmentCompletionObjectType>; assignment_completion?: Maybe<AssignmentCompletionObjectType>;
course?: Maybe<CourseType>; circle?: Maybe<CircleObjectType>;
course?: Maybe<CourseObjectType>;
course_session_attendance_course?: Maybe<CourseSessionAttendanceCourseType>; course_session_attendance_course?: Maybe<CourseSessionAttendanceCourseType>;
learning_content_assignment?: Maybe<LearningContentAssignmentObjectType>;
learning_content_attendance_course?: Maybe<LearningContentAttendanceCourseObjectType>;
learning_content_document_list?: Maybe<LearningContentDocumentListObjectType>;
learning_content_feedback?: Maybe<LearningContentFeedbackObjectType>;
learning_content_learning_module?: Maybe<LearningContentLearningModuleObjectType>;
learning_content_media_library?: Maybe<LearningContentMediaLibraryObjectType>;
learning_content_placeholder?: Maybe<LearningContentPlaceholderObjectType>;
learning_content_rich_text?: Maybe<LearningContentRichTextObjectType>;
learning_content_test?: Maybe<LearningContentTestObjectType>;
learning_content_video?: Maybe<LearningContentVideoObjectType>;
learning_path?: Maybe<LearningPathObjectType>;
}; };
@ -285,6 +502,12 @@ export type QueryAssignmentCompletionArgs = {
}; };
export type QueryCircleArgs = {
id?: InputMaybe<Scalars['Int']['input']>;
slug?: InputMaybe<Scalars['String']['input']>;
};
export type QueryCourseArgs = { export type QueryCourseArgs = {
id?: InputMaybe<Scalars['Int']['input']>; id?: InputMaybe<Scalars['Int']['input']>;
}; };
@ -295,6 +518,12 @@ export type QueryCourseSessionAttendanceCourseArgs = {
id: Scalars['ID']['input']; id: Scalars['ID']['input'];
}; };
export type QueryLearningPathArgs = {
id?: InputMaybe<Scalars['Int']['input']>;
slug?: InputMaybe<Scalars['String']['input']>;
};
export type SendFeedbackInput = { export type SendFeedbackInput = {
clientMutationId?: InputMaybe<Scalars['String']['input']>; clientMutationId?: InputMaybe<Scalars['String']['input']>;
course_session: Scalars['Int']['input']; course_session: Scalars['Int']['input'];
@ -310,6 +539,19 @@ export type SendFeedbackPayload = {
feedback_response?: Maybe<FeedbackResponse>; feedback_response?: Maybe<FeedbackResponse>;
}; };
export type TopicObjectType = CoursePageInterface & {
__typename?: 'TopicObjectType';
circles?: Maybe<Array<Maybe<CircleObjectType>>>;
content_type?: Maybe<Scalars['String']['output']>;
frontend_url?: Maybe<Scalars['String']['output']>;
id?: Maybe<Scalars['ID']['output']>;
is_visible: Scalars['Boolean']['output'];
live?: Maybe<Scalars['Boolean']['output']>;
slug?: Maybe<Scalars['String']['output']>;
title?: Maybe<Scalars['String']['output']>;
translation_key?: Maybe<Scalars['String']['output']>;
};
export type UserType = { export type UserType = {
__typename?: 'UserType'; __typename?: 'UserType';
avatar_url: Scalars['String']['output']; avatar_url: Scalars['String']['output'];
@ -358,7 +600,7 @@ export type CourseQueryQueryVariables = Exact<{
}>; }>;
export type CourseQueryQuery = { __typename?: 'Query', course?: { __typename?: 'CourseType', id: string, slug: string, title: string, category_name: string, learning_path?: { __typename?: 'LearningPathType', id?: string | null } | null } | null }; export type CourseQueryQuery = { __typename?: 'Query', course?: { __typename?: 'CourseObjectType', id: string, slug: string, title: string, category_name: string, learning_path?: { __typename?: 'LearningPathObjectType', id?: string | null } | null } | null };
export const SendFeedbackMutationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SendFeedbackMutation"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SendFeedbackInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"send_feedback"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"feedback_response"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"errors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"field"}},{"kind":"Field","name":{"kind":"Name","value":"messages"}}]}}]}}]}}]} as unknown as DocumentNode<SendFeedbackMutationMutation, SendFeedbackMutationMutationVariables>; export const SendFeedbackMutationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SendFeedbackMutation"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SendFeedbackInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"send_feedback"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"feedback_response"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"errors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"field"}},{"kind":"Field","name":{"kind":"Name","value":"messages"}}]}}]}}]}}]} as unknown as DocumentNode<SendFeedbackMutationMutation, SendFeedbackMutationMutationVariables>;

View File

@ -1,58 +1,82 @@
type Query { type Query {
circle(id: Int, slug: String): CircleObjectType
learning_path(id: Int, slug: String): LearningPathObjectType
learning_content_media_library: LearningContentMediaLibraryObjectType
learning_content_assignment: LearningContentAssignmentObjectType
learning_content_attendance_course: LearningContentAttendanceCourseObjectType
learning_content_feedback: LearningContentFeedbackObjectType
learning_content_learning_module: LearningContentLearningModuleObjectType
learning_content_placeholder: LearningContentPlaceholderObjectType
learning_content_rich_text: LearningContentRichTextObjectType
learning_content_test: LearningContentTestObjectType
learning_content_video: LearningContentVideoObjectType
learning_content_document_list: LearningContentDocumentListObjectType
course_session_attendance_course(id: ID!, assignment_user_id: ID): CourseSessionAttendanceCourseType course_session_attendance_course(id: ID!, assignment_user_id: ID): CourseSessionAttendanceCourseType
course(id: Int): CourseType course(id: Int): CourseObjectType
assignment(id: ID, slug: String): AssignmentObjectType assignment(id: ID, slug: String): AssignmentObjectType
assignment_completion(assignment_id: ID!, course_session_id: ID!, learning_content_page_id: ID, assignment_user_id: UUID): AssignmentCompletionObjectType assignment_completion(assignment_id: ID!, course_session_id: ID!, learning_content_page_id: ID, assignment_user_id: UUID): AssignmentCompletionObjectType
} }
type CourseSessionAttendanceCourseType { type CircleObjectType implements CoursePageInterface {
id: ID! description: String!
location: String! goals: String!
trainer: String! id: ID
course_session_id: ID title: String
learning_content_id: ID slug: String
due_date_id: ID content_type: String
end: DateTime live: Boolean
start: DateTime translation_key: String
attendance_user_list: [AttendanceUserType] frontend_url: String
learning_sequences: [LearningSequenceObjectType]
} }
""" interface CoursePageInterface {
The `DateTime` scalar type represents a DateTime id: ID
value as specified by title: String
[iso8601](https://en.wikipedia.org/wiki/ISO_8601). slug: String
""" content_type: String
scalar DateTime live: Boolean
translation_key: String
type AttendanceUserType { frontend_url: String
user_id: UUID!
status: AttendanceUserStatus!
first_name: String
last_name: String
email: String
} }
""" type LearningSequenceObjectType implements CoursePageInterface {
Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects icon: String!
in fields, resolvers and input. id: ID
""" title: String
scalar UUID slug: String
content_type: String
"""An enumeration.""" live: Boolean
enum AttendanceUserStatus { translation_key: String
PRESENT frontend_url: String
ABSENT learning_units: [LearningUnitObjectType]
} }
type CourseType { type LearningUnitObjectType implements CoursePageInterface {
id: ID! id: ID
title: String! title: String
category_name: String! slug: String
slug: String! content_type: String
learning_path: LearningPathType live: Boolean
translation_key: String
frontend_url: String
learning_contents: [LearningContentInterface]
} }
type LearningPathType implements CoursePageInterface { interface LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningPathObjectType implements CoursePageInterface {
id: ID id: ID
path: String! path: String!
depth: Int! depth: Int!
@ -91,17 +115,15 @@ type LearningPathType implements CoursePageInterface {
search_description: String! search_description: String!
latest_revision_created_at: DateTime latest_revision_created_at: DateTime
frontend_url: String frontend_url: String
topics: [TopicObjectType]
} }
interface CoursePageInterface { """
id: ID The `DateTime` scalar type represents a DateTime
title: String value as specified by
slug: String [iso8601](https://en.wikipedia.org/wiki/ISO_8601).
content_type: String """
live: Boolean scalar DateTime
translation_key: String
frontend_url: String
}
type UserType { type UserType {
""" """
@ -116,6 +138,12 @@ type UserType {
language: CoreUserLanguageChoices! language: CoreUserLanguageChoices!
} }
"""
Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects
in fields, resolvers and input.
"""
scalar UUID
"""An enumeration.""" """An enumeration."""
enum CoreUserLanguageChoices { enum CoreUserLanguageChoices {
"""Deutsch""" """Deutsch"""
@ -128,6 +156,46 @@ enum CoreUserLanguageChoices {
IT IT
} }
type TopicObjectType implements CoursePageInterface {
is_visible: Boolean!
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
circles: [CircleObjectType]
}
type LearningContentMediaLibraryObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningContentAssignmentObjectType implements LearningContentInterface {
content_assignment: AssignmentObjectType!
assignment_type: LearnpathLearningContentAssignmentAssignmentTypeChoices!
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type AssignmentObjectType implements CoursePageInterface { type AssignmentObjectType implements CoursePageInterface {
assignment_type: AssignmentAssignmentAssignmentTypeChoices! assignment_type: AssignmentAssignmentAssignmentTypeChoices!
@ -168,6 +236,156 @@ enum AssignmentAssignmentAssignmentTypeChoices {
scalar JSONStreamField scalar JSONStreamField
"""An enumeration."""
enum LearnpathLearningContentAssignmentAssignmentTypeChoices {
"""CASEWORK"""
CASEWORK
"""PREP_ASSIGNMENT"""
PREP_ASSIGNMENT
"""REFLECTION"""
REFLECTION
}
type LearningContentAttendanceCourseObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningContentFeedbackObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningContentLearningModuleObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningContentPlaceholderObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningContentRichTextObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningContentTestObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningContentVideoObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type LearningContentDocumentListObjectType implements LearningContentInterface {
id: ID
title: String
slug: String
content_type: String
live: Boolean
translation_key: String
frontend_url: String
minutes: Int
description: String
content: String
}
type CourseSessionAttendanceCourseType {
id: ID!
location: String!
trainer: String!
course_session_id: ID
learning_content_id: ID
due_date_id: ID
end: DateTime
start: DateTime
attendance_user_list: [AttendanceUserType]
}
type AttendanceUserType {
user_id: UUID!
status: AttendanceUserStatus!
first_name: String
last_name: String
email: String
}
"""An enumeration."""
enum AttendanceUserStatus {
PRESENT
ABSENT
}
type CourseObjectType {
id: ID!
title: String!
category_name: String!
slug: String!
learning_path: LearningPathObjectType
}
type AssignmentCompletionObjectType { type AssignmentCompletionObjectType {
id: UUID! id: UUID!
created_at: DateTime! created_at: DateTime!
@ -234,6 +452,7 @@ type FeedbackResponse implements Node {
id: ID! id: ID!
data: GenericScalar data: GenericScalar
created_at: DateTime! created_at: DateTime!
circle: CircleObjectType!
} }
"""An object with an ID""" """An object with an ID"""

View File

@ -9,10 +9,11 @@ export const AttendanceUserInputType = "AttendanceUserInputType";
export const AttendanceUserStatus = "AttendanceUserStatus"; export const AttendanceUserStatus = "AttendanceUserStatus";
export const AttendanceUserType = "AttendanceUserType"; export const AttendanceUserType = "AttendanceUserType";
export const Boolean = "Boolean"; export const Boolean = "Boolean";
export const CircleObjectType = "CircleObjectType";
export const CoreUserLanguageChoices = "CoreUserLanguageChoices"; export const CoreUserLanguageChoices = "CoreUserLanguageChoices";
export const CourseObjectType = "CourseObjectType";
export const CoursePageInterface = "CoursePageInterface"; export const CoursePageInterface = "CoursePageInterface";
export const CourseSessionAttendanceCourseType = "CourseSessionAttendanceCourseType"; export const CourseSessionAttendanceCourseType = "CourseSessionAttendanceCourseType";
export const CourseType = "CourseType";
export const DateTime = "DateTime"; export const DateTime = "DateTime";
export const ErrorType = "ErrorType"; export const ErrorType = "ErrorType";
export const FeedbackResponse = "FeedbackResponse"; export const FeedbackResponse = "FeedbackResponse";
@ -22,12 +23,27 @@ export const ID = "ID";
export const Int = "Int"; export const Int = "Int";
export const JSONStreamField = "JSONStreamField"; export const JSONStreamField = "JSONStreamField";
export const JSONString = "JSONString"; export const JSONString = "JSONString";
export const LearningPathType = "LearningPathType"; export const LearningContentAssignmentObjectType = "LearningContentAssignmentObjectType";
export const LearningContentAttendanceCourseObjectType = "LearningContentAttendanceCourseObjectType";
export const LearningContentDocumentListObjectType = "LearningContentDocumentListObjectType";
export const LearningContentFeedbackObjectType = "LearningContentFeedbackObjectType";
export const LearningContentInterface = "LearningContentInterface";
export const LearningContentLearningModuleObjectType = "LearningContentLearningModuleObjectType";
export const LearningContentMediaLibraryObjectType = "LearningContentMediaLibraryObjectType";
export const LearningContentPlaceholderObjectType = "LearningContentPlaceholderObjectType";
export const LearningContentRichTextObjectType = "LearningContentRichTextObjectType";
export const LearningContentTestObjectType = "LearningContentTestObjectType";
export const LearningContentVideoObjectType = "LearningContentVideoObjectType";
export const LearningPathObjectType = "LearningPathObjectType";
export const LearningSequenceObjectType = "LearningSequenceObjectType";
export const LearningUnitObjectType = "LearningUnitObjectType";
export const LearnpathLearningContentAssignmentAssignmentTypeChoices = "LearnpathLearningContentAssignmentAssignmentTypeChoices";
export const Mutation = "Mutation"; export const Mutation = "Mutation";
export const Node = "Node"; export const Node = "Node";
export const Query = "Query"; export const Query = "Query";
export const SendFeedbackInput = "SendFeedbackInput"; export const SendFeedbackInput = "SendFeedbackInput";
export const SendFeedbackPayload = "SendFeedbackPayload"; export const SendFeedbackPayload = "SendFeedbackPayload";
export const String = "String"; export const String = "String";
export const TopicObjectType = "TopicObjectType";
export const UUID = "UUID"; export const UUID = "UUID";
export const UserType = "UserType"; export const UserType = "UserType";