72 lines
1.3 KiB
TypeScript
72 lines
1.3 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 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;
|
|
} |