125 lines
2.1 KiB
TypeScript
125 lines
2.1 KiB
TypeScript
export interface Pagination<T> {
|
|
data: T[];
|
|
links: {
|
|
first: string;
|
|
last: string;
|
|
};
|
|
meta: {
|
|
current_page: number;
|
|
from: number;
|
|
last_page: number;
|
|
per_page: number;
|
|
to: number;
|
|
total: number;
|
|
}
|
|
}
|
|
export interface QuestionVariant {
|
|
id: number;
|
|
text: string;
|
|
}
|
|
export enum QuestionTypes {
|
|
Single = "single",
|
|
Multiple = "multiple",
|
|
Text = "text"
|
|
}
|
|
export interface QuestionResponse {
|
|
id: number;
|
|
title: string;
|
|
description: string;
|
|
type: QuestionTypes;
|
|
difficulty: number;
|
|
|
|
variants?: QuestionVariant[];
|
|
correct_answers: number[]|string[];
|
|
|
|
category_id: number;
|
|
category: CategoryResponse;
|
|
|
|
author_id: number;
|
|
author: UserResponse;
|
|
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
export interface CategoryResponse {
|
|
id: number;
|
|
name: string;
|
|
|
|
questions_count: number;
|
|
user_tests_count: number;
|
|
|
|
created_at: string;
|
|
}
|
|
export interface TestResponse {
|
|
id: number;
|
|
|
|
title: string;
|
|
description: string;
|
|
|
|
category_id: number;
|
|
category: CategoryResponse;
|
|
|
|
is_available: boolean;
|
|
|
|
author_id: number;
|
|
author: UserResponse;
|
|
questions: QuestionResponse[];
|
|
|
|
closed_at: string;
|
|
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
export interface AnswerResponse {
|
|
id: number;
|
|
question_id: number;
|
|
user_test_id: number;
|
|
|
|
question: QuestionResponse;
|
|
answer?: number[] | string[];
|
|
|
|
user_id: number;
|
|
|
|
is_correct: boolean;
|
|
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
export interface UserTestResponse {
|
|
id: number;
|
|
test_id: number;
|
|
user_id: number;
|
|
user: UserResponse;
|
|
closed_at: string;
|
|
is_completed: boolean;
|
|
score: number;
|
|
is_available: boolean;
|
|
|
|
answers: AnswerResponse[];
|
|
|
|
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
export enum UserTypes {
|
|
Admin = "admin",
|
|
Creator = "creator",
|
|
User = "user",
|
|
Banned = "banned"
|
|
}
|
|
export interface UserResponse {
|
|
id: number;
|
|
username: string;
|
|
email: string;
|
|
email_verified_at: string;
|
|
type: UserTypes;
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
export interface AuthLoginResponse {
|
|
access_token: string;
|
|
token_type: string;
|
|
user: UserResponse;
|
|
} |