TestPage fetches suggestions

This commit is contained in:
Dawid Wysokiński 2021-03-28 09:10:55 +02:00
parent 9254120c44
commit b0af6339f4
5 changed files with 412 additions and 338 deletions

View File

@ -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;

View File

@ -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
}
}
}
`;

View File

@ -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
View 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;

View File

@ -1,3 +0,0 @@
import { resolveHref } from 'next/dist/next-server/lib/router/router';
export default resolveHref;