Files
History-admin/src/interface/project.ts
T

88 lines
1.8 KiB
TypeScript

export interface CommitSimpleResponse {
id: string;
edit_summary: string;
}
export interface MemberSimpleResponse {
user_id: string;
role: string;
display_name: string;
avatar_url: string;
}
export interface SubmissionSimpleResponse {
id: string;
status: string;
}
export interface UserSimpleResponse {
id: string;
email: string;
display_name: string;
avatar_url: string;
}
export interface Project {
id: string;
title: string;
description: string;
latest_commit_id?: string | null;
project_status: "PRIVATE" | "PUBLIC" | "ARCHIVE" | string;
locked_by?: string | null;
is_deleted: boolean;
user_id: string;
created_at?: string | null;
updated_at?: string | null;
user?: UserSimpleResponse | null;
commits: CommitSimpleResponse[];
submissions: SubmissionSimpleResponse[];
members: MemberSimpleResponse[];
}
export interface ProjectsResponse<T = Project> {
status: boolean;
message: string;
data: T[];
pagination: {
current_page: number;
page_size: number;
total_records: number;
total_pages: number;
};
}
export interface UpdateProjectPayload {
title: string;
description: string;
status: "PRIVATE" | "PUBLIC" | "ARCHIVE";
}
export interface ChangeOwnerPayload {
new_owner_id: string;
}
export interface ProjectMemberPayload {
user_id?: string;
role: "EDITOR" | "VIEWER" | "ADMIN";
}
export interface GetProjectsParams {
page?: number;
limit?: number;
search?: string;
sort?: "created_at" | "updated_at" | "title";
order?: "asc" | "desc";
statuses?: string; // comma-separated
user_ids?: string; // comma-separated
created_from?: string; // ISO date string
created_to?: string; // ISO date string
}
export interface CreateCommitPayload {
edit_summary: string;
snapshot_json: number[];
}
export interface RestoreCommitPayload {
commit_id: string;
}