53 lines
943 B
TypeScript
53 lines
943 B
TypeScript
|
|
export interface User {
|
||
|
|
id: number;
|
||
|
|
email: string;
|
||
|
|
name: string;
|
||
|
|
avatarUrl: string | null;
|
||
|
|
status: UserStatus;
|
||
|
|
isAdmin: boolean;
|
||
|
|
roles: Role[];
|
||
|
|
createdAt: string;
|
||
|
|
lastLoginAt: string | null;
|
||
|
|
}
|
||
|
|
|
||
|
|
export type UserStatus = 'PENDING' | 'ACTIVE' | 'REJECTED' | 'DISABLED';
|
||
|
|
|
||
|
|
export interface Role {
|
||
|
|
id: number;
|
||
|
|
name: string;
|
||
|
|
description: string;
|
||
|
|
urlPatterns: string[];
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface AuthResponse {
|
||
|
|
token: string;
|
||
|
|
user: User;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface NavItem {
|
||
|
|
path: string;
|
||
|
|
label: string;
|
||
|
|
icon?: string;
|
||
|
|
children?: NavItem[];
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface Issue {
|
||
|
|
id: number;
|
||
|
|
title: string;
|
||
|
|
body: string;
|
||
|
|
status: 'OPEN' | 'IN_PROGRESS' | 'CLOSED';
|
||
|
|
priority: 'LOW' | 'NORMAL' | 'HIGH' | 'URGENT';
|
||
|
|
author: User;
|
||
|
|
assignee: User | null;
|
||
|
|
comments: IssueComment[];
|
||
|
|
createdAt: string;
|
||
|
|
updatedAt: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface IssueComment {
|
||
|
|
id: number;
|
||
|
|
body: string;
|
||
|
|
author: User;
|
||
|
|
createdAt: string;
|
||
|
|
}
|