TestPage fetches suggestions
This commit is contained in:
parent
9254120c44
commit
b0af6339f4
|
@ -1,16 +1,20 @@
|
|||
import { GetStaticPaths, GetStaticProps } from 'next';
|
||||
import { polishPlurals } from 'polish-plurals';
|
||||
import {
|
||||
createClient,
|
||||
Qualification,
|
||||
Query,
|
||||
QueryGenerateTestArgs,
|
||||
QueryQualificationArgs,
|
||||
Question,
|
||||
Scalars,
|
||||
} from 'libs/graphql';
|
||||
import resolveHref from 'utils/resolveHref';
|
||||
import resolveAs from 'utils/resolveAs';
|
||||
import { QUESTIONS } from 'config/app';
|
||||
import { Route } from 'config/routing';
|
||||
import { QUERY_GENERATE_TEST, QUERY_QUALIFICATION } from './queries';
|
||||
import {
|
||||
QUERY_GENERATE_TEST_SIMILAR_QUALIFICATIONS,
|
||||
QUERY_QUALIFICATION,
|
||||
} from './queries';
|
||||
|
||||
import Layout from 'common/Layout/Layout';
|
||||
import SEO from 'common/SEO/SEO';
|
||||
|
@ -21,15 +25,20 @@ export type TestPageParams = {
|
|||
};
|
||||
|
||||
export interface TestPageProps {
|
||||
qualification: Qualification;
|
||||
questions: Question[];
|
||||
suggestions: Qualification[];
|
||||
}
|
||||
|
||||
const TestPage = () => {
|
||||
const TestPage = ({ questions, suggestions, qualification }: TestPageProps) => {
|
||||
console.log(questions, suggestions, qualification);
|
||||
return (
|
||||
<Layout>
|
||||
<SEO />
|
||||
elo
|
||||
<SEO
|
||||
title={`${qualification.code} - Test ${
|
||||
questions.length
|
||||
} ${polishPlurals('pytanie', 'pytania', 'pytań', questions.length)}`}
|
||||
/>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
@ -41,6 +50,12 @@ export const getStaticPaths: GetStaticPaths = async () => {
|
|||
};
|
||||
};
|
||||
|
||||
type QueryGenerateTestSimilarQualificationsArgs = {
|
||||
limitTest: Scalars['Int'];
|
||||
qualificationID: Scalars['ID'];
|
||||
limitSuggestions: Scalars['Int'];
|
||||
};
|
||||
|
||||
export const getStaticProps: GetStaticProps<
|
||||
TestPageProps,
|
||||
TestPageParams
|
||||
|
@ -48,28 +63,31 @@ export const getStaticProps: GetStaticProps<
|
|||
const props: TestPageProps = {
|
||||
suggestions: [],
|
||||
questions: [],
|
||||
qualification: {
|
||||
id: 0,
|
||||
slug: '',
|
||||
name: '',
|
||||
code: '',
|
||||
createdAt: new Date(0),
|
||||
},
|
||||
};
|
||||
|
||||
if (!params) return { notFound: true, revalidate: 600, props };
|
||||
if (!params) return { notFound: true, revalidate: 600 };
|
||||
const limit = parseInt(params.limit);
|
||||
const slug = params.slug.trim();
|
||||
if (
|
||||
slug.length === 0 ||
|
||||
isNaN(limit) ||
|
||||
!QUESTIONS.some(numOfQuestions => numOfQuestions === limit)
|
||||
) {
|
||||
return {
|
||||
props,
|
||||
redirect: {
|
||||
destination: resolveHref(
|
||||
'',
|
||||
{
|
||||
pathname: Route.TestPage,
|
||||
query: { ...params, limit: QUESTIONS[QUESTIONS.length - 1] },
|
||||
},
|
||||
true
|
||||
)[1],
|
||||
destination: resolveAs({
|
||||
pathname: Route.TestPage,
|
||||
query: { ...params, limit: QUESTIONS[QUESTIONS.length - 1] },
|
||||
}),
|
||||
},
|
||||
revalidate: 600,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -82,21 +100,28 @@ export const getStaticProps: GetStaticProps<
|
|||
if (!qualification) {
|
||||
throw new Error('404');
|
||||
}
|
||||
const { generateTest } = await client.request<
|
||||
Pick<Query, 'generateTest'>,
|
||||
QueryGenerateTestArgs
|
||||
>(QUERY_GENERATE_TEST, { limit, qualificationIDs: [qualification.id] });
|
||||
props.qualification = qualification;
|
||||
const { generateTest, similarQualifications } = await client.request<
|
||||
Pick<Query, 'generateTest' | 'similarQualifications'>,
|
||||
QueryGenerateTestSimilarQualificationsArgs
|
||||
>(QUERY_GENERATE_TEST_SIMILAR_QUALIFICATIONS, {
|
||||
limitSuggestions: 6,
|
||||
qualificationID: qualification.id,
|
||||
limitTest: limit,
|
||||
});
|
||||
if (Array.isArray(generateTest)) {
|
||||
props.questions = generateTest;
|
||||
}
|
||||
if (Array.isArray(similarQualifications.items)) {
|
||||
props.suggestions = similarQualifications.items;
|
||||
}
|
||||
return {
|
||||
props,
|
||||
revalidate: 20,
|
||||
};
|
||||
} catch (e) {
|
||||
return { notFound: true, revalidate: 600, props };
|
||||
return { notFound: true, revalidate: 600 };
|
||||
}
|
||||
|
||||
return {
|
||||
props,
|
||||
revalidate: 20,
|
||||
};
|
||||
};
|
||||
|
||||
export default TestPage;
|
||||
|
|
|
@ -12,9 +12,13 @@ export const QUERY_QUALIFICATION = gql`
|
|||
}
|
||||
`;
|
||||
|
||||
export const QUERY_GENERATE_TEST = gql`
|
||||
query generateTest($limit: Int!, $qualificationIDs: [ID!]!) {
|
||||
generateTest(limit: $limit, qualificationIDs: $qualificationIDs) {
|
||||
export const QUERY_GENERATE_TEST_SIMILAR_QUALIFICATIONS = gql`
|
||||
query generateTestAndGetSimilarQualifications(
|
||||
$limitTest: Int!
|
||||
$qualificationID: ID!
|
||||
$limitSuggestions: Int!
|
||||
) {
|
||||
generateTest(limit: $limitTest, qualificationIDs: [$qualificationID]) {
|
||||
id
|
||||
content
|
||||
image
|
||||
|
@ -29,5 +33,15 @@ export const QUERY_GENERATE_TEST = gql`
|
|||
correctAnswer
|
||||
updatedAt
|
||||
}
|
||||
similarQualifications(
|
||||
limit: $limitSuggestions
|
||||
qualificationID: $qualificationID
|
||||
) {
|
||||
items {
|
||||
id
|
||||
name
|
||||
code
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
export type Maybe<T> = T | null;
|
||||
export type Exact<T extends { [key: string]: unknown }> = {
|
||||
[K in keyof T]: T[K];
|
||||
};
|
||||
export type MakeOptional<T, K extends keyof T> = Omit<T, K> &
|
||||
{ [SubKey in K]?: Maybe<T[SubKey]> };
|
||||
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> &
|
||||
{ [SubKey in K]: Maybe<T[SubKey]> };
|
||||
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
|
||||
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
|
||||
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
|
||||
/** All built-in and custom scalars, mapped to their actual values */
|
||||
export type Scalars = {
|
||||
ID: number;
|
||||
|
@ -17,6 +13,31 @@ export type Scalars = {
|
|||
Upload: any;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
export type Qualification = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
code: Scalars['String'];
|
||||
formula?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type UserWithToken = {
|
||||
token: Scalars['String'];
|
||||
user: User;
|
||||
};
|
||||
|
||||
export enum Answer {
|
||||
A = 'a',
|
||||
B = 'b',
|
||||
C = 'c',
|
||||
D = 'd'
|
||||
}
|
||||
|
||||
export type Question = {
|
||||
id: Scalars['ID'];
|
||||
from?: Maybe<Scalars['String']>;
|
||||
|
@ -37,284 +58,34 @@ export type Question = {
|
|||
updatedAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type UpdateManyUsersInput = {
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
export type QuestionInput = {
|
||||
content?: Maybe<Scalars['String']>;
|
||||
from?: Maybe<Scalars['String']>;
|
||||
explanation?: Maybe<Scalars['String']>;
|
||||
correctAnswer?: Maybe<Answer>;
|
||||
qualificationID?: Maybe<Scalars['Int']>;
|
||||
image?: Maybe<Scalars['Upload']>;
|
||||
deleteImage?: Maybe<Scalars['Boolean']>;
|
||||
answerA?: Maybe<Scalars['String']>;
|
||||
answerAImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerAImage?: Maybe<Scalars['Boolean']>;
|
||||
answerB?: Maybe<Scalars['String']>;
|
||||
answerBImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerBImage?: Maybe<Scalars['Boolean']>;
|
||||
answerC?: Maybe<Scalars['String']>;
|
||||
answerCImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerCImage?: Maybe<Scalars['Boolean']>;
|
||||
answerD?: Maybe<Scalars['String']>;
|
||||
answerDImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerDImage?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type ProfessionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
slug?: Maybe<Array<Scalars['String']>>;
|
||||
slugNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
name?: Maybe<Array<Scalars['String']>>;
|
||||
nameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
nameMATCH?: Maybe<Scalars['String']>;
|
||||
descriptionIEQ?: Maybe<Scalars['String']>;
|
||||
descriptionMATCH?: Maybe<Scalars['String']>;
|
||||
qualificationID?: Maybe<Array<Scalars['ID']>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type Qualification = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
code: Scalars['String'];
|
||||
formula?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type QuestionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
from?: Maybe<Array<Scalars['String']>>;
|
||||
contentIEQ?: Maybe<Scalars['String']>;
|
||||
contentMATCH?: Maybe<Scalars['String']>;
|
||||
qualificationID?: Maybe<Array<Scalars['Int']>>;
|
||||
qualificationIDNEQ?: Maybe<Array<Scalars['Int']>>;
|
||||
qualificationFilter?: Maybe<QualificationFilter>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export enum Role {
|
||||
Admin = 'admin',
|
||||
User = 'user',
|
||||
}
|
||||
|
||||
export enum Answer {
|
||||
A = 'a',
|
||||
B = 'b',
|
||||
C = 'c',
|
||||
D = 'd',
|
||||
}
|
||||
|
||||
export type UserInput = {
|
||||
displayName?: Maybe<Scalars['String']>;
|
||||
password?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type Query = {
|
||||
professions: ProfessionList;
|
||||
profession?: Maybe<Profession>;
|
||||
qualifications: QualificationList;
|
||||
qualification?: Maybe<Qualification>;
|
||||
questions: QuestionList;
|
||||
generateTest?: Maybe<Array<Question>>;
|
||||
users: UserList;
|
||||
user?: Maybe<User>;
|
||||
me?: Maybe<User>;
|
||||
};
|
||||
|
||||
export type QueryProfessionsArgs = {
|
||||
filter?: Maybe<ProfessionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
export type QueryProfessionArgs = {
|
||||
id?: Maybe<Scalars['Int']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type QueryQualificationsArgs = {
|
||||
filter?: Maybe<QualificationFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
export type QueryQualificationArgs = {
|
||||
id?: Maybe<Scalars['Int']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type QueryQuestionsArgs = {
|
||||
filter?: Maybe<QuestionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
export type QueryGenerateTestArgs = {
|
||||
qualificationIDs: Array<Scalars['ID']>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
};
|
||||
|
||||
export type QueryUsersArgs = {
|
||||
filter?: Maybe<UserFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
export type QueryUserArgs = {
|
||||
id: Scalars['Int'];
|
||||
};
|
||||
|
||||
export type Profession = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Time'];
|
||||
qualifications: Array<Qualification>;
|
||||
};
|
||||
|
||||
export type QualificationFilterOr = {
|
||||
nameMatch?: Maybe<Scalars['String']>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
codeMatch?: Maybe<Scalars['String']>;
|
||||
codeIEQ?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type UserFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
displayName?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
export type UserFilterOr = {
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Array<Scalars['String']>>;
|
||||
emailNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Array<Role>>;
|
||||
roleNEQ?: Maybe<Array<Role>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
or?: Maybe<UserFilterOr>;
|
||||
};
|
||||
|
||||
export type ProfessionInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type QualificationList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Qualification>>;
|
||||
};
|
||||
|
||||
export type User = {
|
||||
id: Scalars['ID'];
|
||||
displayName: Scalars['String'];
|
||||
role: Role;
|
||||
email: Scalars['String'];
|
||||
activated: Scalars['Boolean'];
|
||||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type QualificationInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
code?: Maybe<Scalars['String']>;
|
||||
formula?: Maybe<Scalars['String']>;
|
||||
associateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
dissociateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
};
|
||||
|
||||
export type QuestionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Question>>;
|
||||
};
|
||||
|
||||
export type Mutation = {
|
||||
createProfession?: Maybe<Profession>;
|
||||
updateProfession?: Maybe<Profession>;
|
||||
deleteProfessions?: Maybe<Array<Profession>>;
|
||||
createQualification?: Maybe<Qualification>;
|
||||
updateQualification?: Maybe<Qualification>;
|
||||
deleteQualifications?: Maybe<Array<Qualification>>;
|
||||
createQuestion?: Maybe<Question>;
|
||||
updateQuestion?: Maybe<Question>;
|
||||
deleteQuestions?: Maybe<Array<Question>>;
|
||||
createUser?: Maybe<User>;
|
||||
updateUser?: Maybe<User>;
|
||||
updateManyUsers?: Maybe<Array<User>>;
|
||||
deleteUsers?: Maybe<Array<User>>;
|
||||
signIn?: Maybe<UserWithToken>;
|
||||
};
|
||||
|
||||
export type MutationCreateProfessionArgs = {
|
||||
input: ProfessionInput;
|
||||
};
|
||||
|
||||
export type MutationUpdateProfessionArgs = {
|
||||
id: Scalars['ID'];
|
||||
input: ProfessionInput;
|
||||
};
|
||||
|
||||
export type MutationDeleteProfessionsArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
};
|
||||
|
||||
export type MutationCreateQualificationArgs = {
|
||||
input: QualificationInput;
|
||||
};
|
||||
|
||||
export type MutationUpdateQualificationArgs = {
|
||||
id: Scalars['ID'];
|
||||
input: QualificationInput;
|
||||
};
|
||||
|
||||
export type MutationDeleteQualificationsArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
};
|
||||
|
||||
export type MutationCreateQuestionArgs = {
|
||||
input: QuestionInput;
|
||||
};
|
||||
|
||||
export type MutationUpdateQuestionArgs = {
|
||||
id: Scalars['ID'];
|
||||
input: QuestionInput;
|
||||
};
|
||||
|
||||
export type MutationDeleteQuestionsArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
};
|
||||
|
||||
export type MutationCreateUserArgs = {
|
||||
input: UserInput;
|
||||
};
|
||||
|
||||
export type MutationUpdateUserArgs = {
|
||||
id: Scalars['ID'];
|
||||
input: UserInput;
|
||||
};
|
||||
|
||||
export type MutationUpdateManyUsersArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
input: UpdateManyUsersInput;
|
||||
};
|
||||
|
||||
export type MutationDeleteUsersArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
};
|
||||
|
||||
export type MutationSignInArgs = {
|
||||
email: Scalars['String'];
|
||||
password: Scalars['String'];
|
||||
staySignedIn?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type ProfessionList = {
|
||||
|
@ -348,26 +119,141 @@ export type QualificationFilter = {
|
|||
or?: Maybe<QualificationFilterOr>;
|
||||
};
|
||||
|
||||
export type QuestionInput = {
|
||||
content?: Maybe<Scalars['String']>;
|
||||
from?: Maybe<Scalars['String']>;
|
||||
explanation?: Maybe<Scalars['String']>;
|
||||
correctAnswer?: Maybe<Answer>;
|
||||
qualificationID?: Maybe<Scalars['Int']>;
|
||||
image?: Maybe<Scalars['Upload']>;
|
||||
deleteImage?: Maybe<Scalars['Boolean']>;
|
||||
answerA?: Maybe<Scalars['String']>;
|
||||
answerAImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerAImage?: Maybe<Scalars['Boolean']>;
|
||||
answerB?: Maybe<Scalars['String']>;
|
||||
answerBImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerBImage?: Maybe<Scalars['Boolean']>;
|
||||
answerC?: Maybe<Scalars['String']>;
|
||||
answerCImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerCImage?: Maybe<Scalars['Boolean']>;
|
||||
answerD?: Maybe<Scalars['String']>;
|
||||
answerDImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerDImage?: Maybe<Scalars['Boolean']>;
|
||||
export type User = {
|
||||
id: Scalars['ID'];
|
||||
displayName: Scalars['String'];
|
||||
role: Role;
|
||||
email: Scalars['String'];
|
||||
activated: Scalars['Boolean'];
|
||||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type QuestionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
from?: Maybe<Array<Scalars['String']>>;
|
||||
contentIEQ?: Maybe<Scalars['String']>;
|
||||
contentMATCH?: Maybe<Scalars['String']>;
|
||||
qualificationID?: Maybe<Array<Scalars['Int']>>;
|
||||
qualificationIDNEQ?: Maybe<Array<Scalars['Int']>>;
|
||||
qualificationFilter?: Maybe<QualificationFilter>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type UpdateManyUsersInput = {
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type Query = {
|
||||
professions: ProfessionList;
|
||||
profession?: Maybe<Profession>;
|
||||
qualifications: QualificationList;
|
||||
similarQualifications: QualificationList;
|
||||
qualification?: Maybe<Qualification>;
|
||||
questions: QuestionList;
|
||||
generateTest?: Maybe<Array<Question>>;
|
||||
users: UserList;
|
||||
user?: Maybe<User>;
|
||||
me?: Maybe<User>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionsArgs = {
|
||||
filter?: Maybe<ProfessionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionArgs = {
|
||||
id?: Maybe<Scalars['Int']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationsArgs = {
|
||||
filter?: Maybe<QualificationFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QuerySimilarQualificationsArgs = {
|
||||
qualificationID: Scalars['ID'];
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationArgs = {
|
||||
id?: Maybe<Scalars['Int']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQuestionsArgs = {
|
||||
filter?: Maybe<QuestionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryGenerateTestArgs = {
|
||||
qualificationIDs: Array<Scalars['ID']>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUsersArgs = {
|
||||
filter?: Maybe<UserFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUserArgs = {
|
||||
id: Scalars['Int'];
|
||||
};
|
||||
|
||||
export type Profession = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Time'];
|
||||
qualifications: Array<Qualification>;
|
||||
};
|
||||
|
||||
|
||||
export type QualificationInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
code?: Maybe<Scalars['String']>;
|
||||
formula?: Maybe<Scalars['String']>;
|
||||
associateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
dissociateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
};
|
||||
|
||||
export type QualificationFilterOr = {
|
||||
nameMatch?: Maybe<Scalars['String']>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
codeMatch?: Maybe<Scalars['String']>;
|
||||
codeIEQ?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type QuestionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Question>>;
|
||||
};
|
||||
|
||||
export type UserList = {
|
||||
|
@ -375,14 +261,160 @@ export type UserList = {
|
|||
items?: Maybe<Array<User>>;
|
||||
};
|
||||
|
||||
export type UserFilterOr = {
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
export type UserInput = {
|
||||
displayName?: Maybe<Scalars['String']>;
|
||||
password?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type UserWithToken = {
|
||||
token: Scalars['String'];
|
||||
user: User;
|
||||
export type UserFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
displayName?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Array<Scalars['String']>>;
|
||||
emailNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Array<Role>>;
|
||||
roleNEQ?: Maybe<Array<Role>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
or?: Maybe<UserFilterOr>;
|
||||
};
|
||||
|
||||
export type ProfessionInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type ProfessionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
slug?: Maybe<Array<Scalars['String']>>;
|
||||
slugNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
name?: Maybe<Array<Scalars['String']>>;
|
||||
nameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
nameMATCH?: Maybe<Scalars['String']>;
|
||||
descriptionIEQ?: Maybe<Scalars['String']>;
|
||||
descriptionMATCH?: Maybe<Scalars['String']>;
|
||||
qualificationID?: Maybe<Array<Scalars['ID']>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type QualificationList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Qualification>>;
|
||||
};
|
||||
|
||||
export enum Role {
|
||||
Admin = 'admin',
|
||||
User = 'user'
|
||||
}
|
||||
|
||||
export type Mutation = {
|
||||
createProfession?: Maybe<Profession>;
|
||||
updateProfession?: Maybe<Profession>;
|
||||
deleteProfessions?: Maybe<Array<Profession>>;
|
||||
createQualification?: Maybe<Qualification>;
|
||||
updateQualification?: Maybe<Qualification>;
|
||||
deleteQualifications?: Maybe<Array<Qualification>>;
|
||||
createQuestion?: Maybe<Question>;
|
||||
updateQuestion?: Maybe<Question>;
|
||||
deleteQuestions?: Maybe<Array<Question>>;
|
||||
createUser?: Maybe<User>;
|
||||
updateUser?: Maybe<User>;
|
||||
updateManyUsers?: Maybe<Array<User>>;
|
||||
deleteUsers?: Maybe<Array<User>>;
|
||||
signIn?: Maybe<UserWithToken>;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateProfessionArgs = {
|
||||
input: ProfessionInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateProfessionArgs = {
|
||||
id: Scalars['ID'];
|
||||
input: ProfessionInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteProfessionsArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateQualificationArgs = {
|
||||
input: QualificationInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateQualificationArgs = {
|
||||
id: Scalars['ID'];
|
||||
input: QualificationInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteQualificationsArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateQuestionArgs = {
|
||||
input: QuestionInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateQuestionArgs = {
|
||||
id: Scalars['ID'];
|
||||
input: QuestionInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteQuestionsArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateUserArgs = {
|
||||
input: UserInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateUserArgs = {
|
||||
id: Scalars['ID'];
|
||||
input: UserInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateManyUsersArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
input: UpdateManyUsersInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteUsersArgs = {
|
||||
ids: Array<Scalars['ID']>;
|
||||
};
|
||||
|
||||
|
||||
export type MutationSignInArgs = {
|
||||
email: Scalars['String'];
|
||||
password: Scalars['String'];
|
||||
staySignedIn?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
|
6
src/utils/resolveAs.ts
Normal file
6
src/utils/resolveAs.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
import { resolveHref } from 'next/dist/next-server/lib/router/router';
|
||||
import { UrlObject } from 'url';
|
||||
|
||||
const resolveAs = (url: UrlObject): string => resolveHref('', url, true)[1];
|
||||
|
||||
export default resolveAs;
|
|
@ -1,3 +0,0 @@
|
|||
import { resolveHref } from 'next/dist/next-server/lib/router/router';
|
||||
|
||||
export default resolveHref;
|
Reference in New Issue
Block a user