codegen.yml: the ID scalar should be a number | add edit user functionality
This commit is contained in:
parent
2f73ef1b62
commit
f0782f143f
|
@ -6,4 +6,6 @@ generates:
|
||||||
- "typescript"
|
- "typescript"
|
||||||
- "typescript-operations"
|
- "typescript-operations"
|
||||||
config:
|
config:
|
||||||
skipTypename: true
|
skipTypename: true
|
||||||
|
scalars:
|
||||||
|
ID: number
|
||||||
|
|
|
@ -7,7 +7,13 @@ import {
|
||||||
} from 'use-query-params';
|
} from 'use-query-params';
|
||||||
import SortParam, { decodeSort } from 'libs/serialize-query-params/SortParam';
|
import SortParam, { decodeSort } from 'libs/serialize-query-params/SortParam';
|
||||||
import useUsers from './UsersPage.useUsers';
|
import useUsers from './UsersPage.useUsers';
|
||||||
import { MutationCreateUserArgs, UserInput } from 'libs/graphql/types';
|
import {
|
||||||
|
Maybe,
|
||||||
|
MutationCreateUserArgs,
|
||||||
|
MutationUpdateUserArgs,
|
||||||
|
User,
|
||||||
|
UserInput,
|
||||||
|
} from 'libs/graphql/types';
|
||||||
import { validateRowsPerPage } from 'common/Table/helpers';
|
import { validateRowsPerPage } from 'common/Table/helpers';
|
||||||
import { COLUMNS, DEFAULT_SORT, DialogType } from './constants';
|
import { COLUMNS, DEFAULT_SORT, DialogType } from './constants';
|
||||||
|
|
||||||
|
@ -17,7 +23,7 @@ import Table from 'common/Table/Table';
|
||||||
import TableToolbar from './components/TableToolbar/TableToolbar';
|
import TableToolbar from './components/TableToolbar/TableToolbar';
|
||||||
import FormDialog from './components/FormDialog/FormDialog';
|
import FormDialog from './components/FormDialog/FormDialog';
|
||||||
import { ApolloError, useMutation } from '@apollo/client';
|
import { ApolloError, useMutation } from '@apollo/client';
|
||||||
import { MUTATION_CREATE_USER } from './mutations';
|
import { MUTATION_CREATE_USER, MUTATION_UPDATE_USER } from './mutations';
|
||||||
import { useSnackbar } from 'material-ui-snackbar-provider';
|
import { useSnackbar } from 'material-ui-snackbar-provider';
|
||||||
|
|
||||||
const UsersPage = () => {
|
const UsersPage = () => {
|
||||||
|
@ -25,7 +31,12 @@ const UsersPage = () => {
|
||||||
MUTATION_CREATE_USER,
|
MUTATION_CREATE_USER,
|
||||||
{ ignoreResults: true }
|
{ ignoreResults: true }
|
||||||
);
|
);
|
||||||
|
const [updateUserMutation] = useMutation<any, MutationUpdateUserArgs>(
|
||||||
|
MUTATION_UPDATE_USER,
|
||||||
|
{ ignoreResults: true }
|
||||||
|
);
|
||||||
const [dialogType, setDialogType] = useState<DialogType>(DialogType.None);
|
const [dialogType, setDialogType] = useState<DialogType>(DialogType.None);
|
||||||
|
const [userBeingEdited, setUserBeingEdited] = useState<Maybe<User>>(null);
|
||||||
const snackbar = useSnackbar();
|
const snackbar = useSnackbar();
|
||||||
const [{ page, sort, search, ...rest }, setQueryParams] = useQueryParams({
|
const [{ page, sort, search, ...rest }, setQueryParams] = useQueryParams({
|
||||||
limit: NumberParam,
|
limit: NumberParam,
|
||||||
|
@ -41,9 +52,15 @@ const UsersPage = () => {
|
||||||
search
|
search
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleCreateUser = async (input: UserInput) => {
|
const handleFormDialogSubmit = async (input: UserInput) => {
|
||||||
try {
|
try {
|
||||||
await createUserMutation({ variables: { input } });
|
if (dialogType === DialogType.Create) {
|
||||||
|
await createUserMutation({ variables: { input } });
|
||||||
|
} else {
|
||||||
|
await updateUserMutation({
|
||||||
|
variables: { input, id: userBeingEdited?.id ?? -1 },
|
||||||
|
});
|
||||||
|
}
|
||||||
await refetch();
|
await refetch();
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -61,7 +78,10 @@ const UsersPage = () => {
|
||||||
<Paper>
|
<Paper>
|
||||||
<TableToolbar
|
<TableToolbar
|
||||||
search={search}
|
search={search}
|
||||||
onClickCreateUser={() => setDialogType(DialogType.Create)}
|
onClickCreateUser={() => {
|
||||||
|
setUserBeingEdited(null);
|
||||||
|
setDialogType(DialogType.Create);
|
||||||
|
}}
|
||||||
onChangeSearchValue={val => {
|
onChangeSearchValue={val => {
|
||||||
setQueryParams({ page: 0, search: val });
|
setQueryParams({ page: 0, search: val });
|
||||||
}}
|
}}
|
||||||
|
@ -74,7 +94,12 @@ const UsersPage = () => {
|
||||||
{
|
{
|
||||||
icon: row => {
|
icon: row => {
|
||||||
return (
|
return (
|
||||||
<IconButton>
|
<IconButton
|
||||||
|
onClick={() => {
|
||||||
|
setUserBeingEdited(row);
|
||||||
|
setDialogType(DialogType.Edit);
|
||||||
|
}}
|
||||||
|
>
|
||||||
<EditIcon />
|
<EditIcon />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
);
|
);
|
||||||
|
@ -108,7 +133,8 @@ const UsersPage = () => {
|
||||||
open={
|
open={
|
||||||
dialogType === DialogType.Create || dialogType === DialogType.Edit
|
dialogType === DialogType.Create || dialogType === DialogType.Edit
|
||||||
}
|
}
|
||||||
onSubmit={handleCreateUser}
|
user={userBeingEdited as UserInput}
|
||||||
|
onSubmit={handleFormDialogSubmit}
|
||||||
onClose={() => setDialogType(DialogType.None)}
|
onClose={() => setDialogType(DialogType.None)}
|
||||||
/>
|
/>
|
||||||
</Container>
|
</Container>
|
||||||
|
|
|
@ -37,9 +37,7 @@ export interface FormDialogProps extends Pick<DialogProps, 'open'> {
|
||||||
|
|
||||||
const FormDialog = ({ open, onClose, user, onSubmit }: FormDialogProps) => {
|
const FormDialog = ({ open, onClose, user, onSubmit }: FormDialogProps) => {
|
||||||
const editMode = Boolean(user);
|
const editMode = Boolean(user);
|
||||||
const { register, handleSubmit, errors } = useForm<UserInput>({
|
const { register, handleSubmit, errors } = useForm<UserInput>({});
|
||||||
defaultValues: user,
|
|
||||||
});
|
|
||||||
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
|
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
|
|
||||||
|
@ -52,10 +50,9 @@ const FormDialog = ({ open, onClose, user, onSubmit }: FormDialogProps) => {
|
||||||
)
|
)
|
||||||
: data;
|
: data;
|
||||||
const success = await onSubmit(filtered);
|
const success = await onSubmit(filtered);
|
||||||
|
setIsSubmitting(false);
|
||||||
if (success) {
|
if (success) {
|
||||||
onClose();
|
onClose();
|
||||||
} else {
|
|
||||||
setIsSubmitting(false);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,6 +72,7 @@ const FormDialog = ({ open, onClose, user, onSubmit }: FormDialogProps) => {
|
||||||
fullWidth
|
fullWidth
|
||||||
label="Nazwa użytkownika"
|
label="Nazwa użytkownika"
|
||||||
name="displayName"
|
name="displayName"
|
||||||
|
defaultValue={user?.displayName}
|
||||||
inputRef={register({
|
inputRef={register({
|
||||||
required: 'Te pole jest wymagane.',
|
required: 'Te pole jest wymagane.',
|
||||||
minLength: {
|
minLength: {
|
||||||
|
@ -93,6 +91,7 @@ const FormDialog = ({ open, onClose, user, onSubmit }: FormDialogProps) => {
|
||||||
fullWidth
|
fullWidth
|
||||||
label="Adres e-mail"
|
label="Adres e-mail"
|
||||||
name="email"
|
name="email"
|
||||||
|
defaultValue={user?.email}
|
||||||
inputRef={register({
|
inputRef={register({
|
||||||
required: 'Te pole jest wymagane.',
|
required: 'Te pole jest wymagane.',
|
||||||
validate: (email: string) => {
|
validate: (email: string) => {
|
||||||
|
@ -110,7 +109,7 @@ const FormDialog = ({ open, onClose, user, onSubmit }: FormDialogProps) => {
|
||||||
type="password"
|
type="password"
|
||||||
name="password"
|
name="password"
|
||||||
inputRef={register({
|
inputRef={register({
|
||||||
required: 'Te pole jest wymagane.',
|
required: editMode ? false : 'Te pole jest wymagane.',
|
||||||
minLength: {
|
minLength: {
|
||||||
value: MIN_PASSWORD_LENGTH,
|
value: MIN_PASSWORD_LENGTH,
|
||||||
message: `Hasło musi zawierać co najmniej ${MIN_PASSWORD_LENGTH} znaków.`,
|
message: `Hasło musi zawierać co najmniej ${MIN_PASSWORD_LENGTH} znaków.`,
|
||||||
|
@ -125,7 +124,7 @@ const FormDialog = ({ open, onClose, user, onSubmit }: FormDialogProps) => {
|
||||||
/>
|
/>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<FormLabel>Rola</FormLabel>
|
<FormLabel>Rola</FormLabel>
|
||||||
<RadioGroup name="role" defaultValue={Role.User}>
|
<RadioGroup name="role" defaultValue={user?.role ?? Role.User}>
|
||||||
{[Role.Admin, Role.User].map(role => {
|
{[Role.Admin, Role.User].map(role => {
|
||||||
return (
|
return (
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
|
@ -141,7 +140,13 @@ const FormDialog = ({ open, onClose, user, onSubmit }: FormDialogProps) => {
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
control={<Checkbox inputRef={register} name="activated" />}
|
control={
|
||||||
|
<Checkbox
|
||||||
|
inputRef={register}
|
||||||
|
name="activated"
|
||||||
|
defaultChecked={user?.activated ?? false}
|
||||||
|
/>
|
||||||
|
}
|
||||||
label="Aktywowany"
|
label="Aktywowany"
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
|
@ -7,3 +7,11 @@ export const MUTATION_CREATE_USER = gql`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
export const MUTATION_UPDATE_USER = gql`
|
||||||
|
mutation updateUser($id: ID!, $input: UserInput!) {
|
||||||
|
updateUser(id: $id, input: $input) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
|
@ -4,7 +4,7 @@ export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?:
|
||||||
export type MakeMaybe<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 */
|
/** All built-in and custom scalars, mapped to their actual values */
|
||||||
export type Scalars = {
|
export type Scalars = {
|
||||||
ID: string;
|
ID: number;
|
||||||
String: string;
|
String: string;
|
||||||
Boolean: boolean;
|
Boolean: boolean;
|
||||||
Int: number;
|
Int: number;
|
||||||
|
@ -16,6 +16,28 @@ export type Scalars = {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export type UpdateManyUsersInput = {
|
||||||
|
role?: Maybe<Role>;
|
||||||
|
activated?: Maybe<Scalars['Boolean']>;
|
||||||
|
};
|
||||||
|
|
||||||
|
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 ProfessionList = {
|
||||||
|
total: Scalars['Int'];
|
||||||
|
items?: Maybe<Array<Profession>>;
|
||||||
|
};
|
||||||
|
|
||||||
export type QuestionInput = {
|
export type QuestionInput = {
|
||||||
content?: Maybe<Scalars['String']>;
|
content?: Maybe<Scalars['String']>;
|
||||||
from?: Maybe<Scalars['String']>;
|
from?: Maybe<Scalars['String']>;
|
||||||
|
@ -38,173 +60,6 @@ export type QuestionInput = {
|
||||||
deleteAnswerDImage?: Maybe<Scalars['Boolean']>;
|
deleteAnswerDImage?: Maybe<Scalars['Boolean']>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export type Profession = {
|
|
||||||
id: Scalars['ID'];
|
|
||||||
slug: Scalars['String'];
|
|
||||||
name: Scalars['String'];
|
|
||||||
description?: Maybe<Scalars['String']>;
|
|
||||||
createdAt: Scalars['Time'];
|
|
||||||
};
|
|
||||||
|
|
||||||
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']>;
|
|
||||||
createdAt?: Maybe<Scalars['Time']>;
|
|
||||||
createdAtGT?: Maybe<Scalars['Time']>;
|
|
||||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
|
||||||
createdAtLT?: Maybe<Scalars['Time']>;
|
|
||||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type Question = {
|
|
||||||
id: Scalars['ID'];
|
|
||||||
from?: Maybe<Scalars['String']>;
|
|
||||||
content: Scalars['String'];
|
|
||||||
explanation?: Maybe<Scalars['String']>;
|
|
||||||
correctAnswer: Answer;
|
|
||||||
image?: Maybe<Scalars['String']>;
|
|
||||||
answerA?: Maybe<Answer>;
|
|
||||||
answerAImage?: Maybe<Scalars['String']>;
|
|
||||||
answerB?: Maybe<Answer>;
|
|
||||||
answerBImage?: Maybe<Scalars['String']>;
|
|
||||||
answerC?: Maybe<Answer>;
|
|
||||||
answerCImage?: Maybe<Scalars['String']>;
|
|
||||||
answerD?: Maybe<Answer>;
|
|
||||||
answerDImage?: Maybe<Scalars['String']>;
|
|
||||||
qualification?: Maybe<Qualification>;
|
|
||||||
createdAt: Scalars['Time'];
|
|
||||||
updatedAt: Scalars['Time'];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
export type QualificationList = {
|
|
||||||
total: Scalars['Int'];
|
|
||||||
items?: Maybe<Array<Qualification>>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export enum Role {
|
|
||||||
Admin = 'admin',
|
|
||||||
User = 'user'
|
|
||||||
}
|
|
||||||
|
|
||||||
export type QualificationFilterOr = {
|
|
||||||
nameMatch?: Maybe<Scalars['String']>;
|
|
||||||
nameIEQ?: Maybe<Scalars['String']>;
|
|
||||||
codeMatch?: Maybe<Scalars['String']>;
|
|
||||||
codeIEQ?: Maybe<Scalars['String']>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type QualificationFilter = {
|
|
||||||
id?: Maybe<Array<Scalars['ID']>>;
|
|
||||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
|
||||||
slug?: Maybe<Array<Scalars['String']>>;
|
|
||||||
slugNEQ?: Maybe<Array<Scalars['String']>>;
|
|
||||||
formula?: Maybe<Array<Scalars['String']>>;
|
|
||||||
formulaNEQ?: Maybe<Array<Scalars['String']>>;
|
|
||||||
name?: Maybe<Array<Scalars['String']>>;
|
|
||||||
nameNEQ?: Maybe<Array<Scalars['String']>>;
|
|
||||||
nameIEQ?: Maybe<Scalars['String']>;
|
|
||||||
nameMATCH?: Maybe<Scalars['String']>;
|
|
||||||
code?: Maybe<Array<Scalars['String']>>;
|
|
||||||
codeNEQ?: Maybe<Array<Scalars['String']>>;
|
|
||||||
codeIEQ?: Maybe<Scalars['String']>;
|
|
||||||
codeMATCH?: Maybe<Scalars['String']>;
|
|
||||||
descriptionIEQ?: Maybe<Scalars['String']>;
|
|
||||||
descriptionMATCH?: Maybe<Scalars['String']>;
|
|
||||||
professionID?: Maybe<Array<Scalars['Int']>>;
|
|
||||||
createdAt?: Maybe<Scalars['Time']>;
|
|
||||||
createdAtGT?: Maybe<Scalars['Time']>;
|
|
||||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
|
||||||
createdAtLT?: Maybe<Scalars['Time']>;
|
|
||||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
|
||||||
or?: Maybe<QualificationFilterOr>;
|
|
||||||
};
|
|
||||||
|
|
||||||
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 UserFilterOr = {
|
|
||||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
|
||||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
|
||||||
emailIEQ?: Maybe<Scalars['String']>;
|
|
||||||
emailMATCH?: Maybe<Scalars['String']>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type UserList = {
|
|
||||||
total: Scalars['Int'];
|
|
||||||
items?: Maybe<Array<User>>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type UserInput = {
|
|
||||||
displayName?: Maybe<Scalars['String']>;
|
|
||||||
password?: Maybe<Scalars['String']>;
|
|
||||||
email?: Maybe<Scalars['String']>;
|
|
||||||
role?: Maybe<Role>;
|
|
||||||
activated?: Maybe<Scalars['Boolean']>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type ProfessionList = {
|
|
||||||
total: Scalars['Int'];
|
|
||||||
items?: Maybe<Array<Profession>>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export enum Answer {
|
|
||||||
A = 'a',
|
|
||||||
B = 'b',
|
|
||||||
C = 'c',
|
|
||||||
D = 'd'
|
|
||||||
}
|
|
||||||
|
|
||||||
export type QuestionList = {
|
|
||||||
total: Scalars['Int'];
|
|
||||||
items?: Maybe<Array<Question>>;
|
|
||||||
};
|
|
||||||
|
|
||||||
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 UserFilter = {
|
export type UserFilter = {
|
||||||
id?: Maybe<Array<Scalars['ID']>>;
|
id?: Maybe<Array<Scalars['ID']>>;
|
||||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||||
|
@ -227,11 +82,164 @@ export type UserFilter = {
|
||||||
or?: Maybe<UserFilterOr>;
|
or?: Maybe<UserFilterOr>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type Profession = {
|
||||||
|
id: Scalars['ID'];
|
||||||
|
slug: Scalars['String'];
|
||||||
|
name: Scalars['String'];
|
||||||
|
description?: Maybe<Scalars['String']>;
|
||||||
|
createdAt: Scalars['Time'];
|
||||||
|
};
|
||||||
|
|
||||||
|
export enum Answer {
|
||||||
|
A = 'a',
|
||||||
|
B = 'b',
|
||||||
|
C = 'c',
|
||||||
|
D = 'd'
|
||||||
|
}
|
||||||
|
|
||||||
|
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 UserFilterOr = {
|
||||||
|
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||||
|
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||||
|
emailIEQ?: Maybe<Scalars['String']>;
|
||||||
|
emailMATCH?: 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']>;
|
||||||
|
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 type Question = {
|
||||||
|
id: Scalars['ID'];
|
||||||
|
from?: Maybe<Scalars['String']>;
|
||||||
|
content: Scalars['String'];
|
||||||
|
explanation?: Maybe<Scalars['String']>;
|
||||||
|
correctAnswer: Answer;
|
||||||
|
image?: Maybe<Scalars['String']>;
|
||||||
|
answerA?: Maybe<Answer>;
|
||||||
|
answerAImage?: Maybe<Scalars['String']>;
|
||||||
|
answerB?: Maybe<Answer>;
|
||||||
|
answerBImage?: Maybe<Scalars['String']>;
|
||||||
|
answerC?: Maybe<Answer>;
|
||||||
|
answerCImage?: Maybe<Scalars['String']>;
|
||||||
|
answerD?: Maybe<Answer>;
|
||||||
|
answerDImage?: Maybe<Scalars['String']>;
|
||||||
|
qualification?: Maybe<Qualification>;
|
||||||
|
createdAt: Scalars['Time'];
|
||||||
|
updatedAt: Scalars['Time'];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type UserList = {
|
||||||
|
total: Scalars['Int'];
|
||||||
|
items?: Maybe<Array<User>>;
|
||||||
|
};
|
||||||
|
|
||||||
export type UserWithToken = {
|
export type UserWithToken = {
|
||||||
token: Scalars['String'];
|
token: Scalars['String'];
|
||||||
user: User;
|
user: User;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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 Mutation = {
|
export type Mutation = {
|
||||||
createProfession?: Maybe<Profession>;
|
createProfession?: Maybe<Profession>;
|
||||||
updateProfession?: Maybe<Profession>;
|
updateProfession?: Maybe<Profession>;
|
||||||
|
@ -326,6 +334,34 @@ export type MutationSignInArgs = {
|
||||||
staySignedIn?: Maybe<Scalars['Boolean']>;
|
staySignedIn?: Maybe<Scalars['Boolean']>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type ProfessionInput = {
|
||||||
|
name?: Maybe<Scalars['String']>;
|
||||||
|
description?: Maybe<Scalars['String']>;
|
||||||
|
};
|
||||||
|
|
||||||
|
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 enum Role {
|
||||||
|
Admin = 'admin',
|
||||||
|
User = 'user'
|
||||||
|
}
|
||||||
|
|
||||||
|
export type UserInput = {
|
||||||
|
displayName?: Maybe<Scalars['String']>;
|
||||||
|
password?: Maybe<Scalars['String']>;
|
||||||
|
email?: Maybe<Scalars['String']>;
|
||||||
|
role?: Maybe<Role>;
|
||||||
|
activated?: Maybe<Scalars['Boolean']>;
|
||||||
|
};
|
||||||
|
|
||||||
export type Qualification = {
|
export type Qualification = {
|
||||||
id: Scalars['ID'];
|
id: Scalars['ID'];
|
||||||
slug: Scalars['String'];
|
slug: Scalars['String'];
|
||||||
|
@ -336,74 +372,38 @@ export type Qualification = {
|
||||||
createdAt: Scalars['Time'];
|
createdAt: Scalars['Time'];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type UpdateManyUsersInput = {
|
export type QualificationFilter = {
|
||||||
role?: Maybe<Role>;
|
id?: Maybe<Array<Scalars['ID']>>;
|
||||||
activated?: Maybe<Scalars['Boolean']>;
|
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||||
};
|
slug?: Maybe<Array<Scalars['String']>>;
|
||||||
|
slugNEQ?: Maybe<Array<Scalars['String']>>;
|
||||||
export type Query = {
|
formula?: Maybe<Array<Scalars['String']>>;
|
||||||
professions: ProfessionList;
|
formulaNEQ?: Maybe<Array<Scalars['String']>>;
|
||||||
profession?: Maybe<Profession>;
|
name?: Maybe<Array<Scalars['String']>>;
|
||||||
qualifications: QualificationList;
|
nameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||||
qualification?: Maybe<Qualification>;
|
nameIEQ?: Maybe<Scalars['String']>;
|
||||||
questions: QuestionList;
|
nameMATCH?: Maybe<Scalars['String']>;
|
||||||
generateTest?: Maybe<Array<Question>>;
|
code?: Maybe<Array<Scalars['String']>>;
|
||||||
users: UserList;
|
codeNEQ?: Maybe<Array<Scalars['String']>>;
|
||||||
user?: Maybe<User>;
|
codeIEQ?: Maybe<Scalars['String']>;
|
||||||
me?: Maybe<User>;
|
codeMATCH?: Maybe<Scalars['String']>;
|
||||||
|
descriptionIEQ?: Maybe<Scalars['String']>;
|
||||||
|
descriptionMATCH?: Maybe<Scalars['String']>;
|
||||||
|
professionID?: Maybe<Array<Scalars['Int']>>;
|
||||||
|
createdAt?: Maybe<Scalars['Time']>;
|
||||||
|
createdAtGT?: Maybe<Scalars['Time']>;
|
||||||
|
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||||
|
createdAtLT?: Maybe<Scalars['Time']>;
|
||||||
|
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||||
|
or?: Maybe<QualificationFilterOr>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export type QueryProfessionsArgs = {
|
export type User = {
|
||||||
filter?: Maybe<ProfessionFilter>;
|
id: Scalars['ID'];
|
||||||
limit?: Maybe<Scalars['Int']>;
|
displayName: Scalars['String'];
|
||||||
offset?: Maybe<Scalars['Int']>;
|
role: Role;
|
||||||
sort?: Maybe<Array<Scalars['String']>>;
|
email: Scalars['String'];
|
||||||
};
|
activated: Scalars['Boolean'];
|
||||||
|
createdAt: Scalars['Time'];
|
||||||
|
|
||||||
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'];
|
|
||||||
};
|
};
|
||||||
|
|
Reference in New Issue
Block a user