Files
stripstream/src/types/komga.ts

149 lines
2.8 KiB
TypeScript

// Types liés à la configuration
export interface User {
id: string;
email: string;
}
export interface KomgaConfigData {
url: string;
username: string;
password?: string | null;
authHeader: string;
}
export interface KomgaConfig extends KomgaConfigData {
userId: number;
}
export interface TTLConfigData {
defaultTTL: number;
homeTTL: number;
librariesTTL: number;
seriesTTL: number;
booksTTL: number;
imagesTTL: number;
imageCacheMaxAge: number; // en secondes
}
export interface TTLConfig extends TTLConfigData {
userId: number;
}
// Types liés à l'API Komga
export interface KomgaUser {
id: string;
email: string;
roles: KomgaRole[];
sharedAllLibraries: boolean;
sharedLibrariesIds: string[];
authenticated: boolean;
authorities: string[];
}
export type KomgaRole = "ROLE_ADMIN" | "ROLE_USER";
export interface KomgaLibrary {
id: string;
name: string;
root: string;
importLastModified: string;
lastModified: string;
unavailable: boolean;
booksCount: number;
booksReadCount: number;
}
export interface KomgaSeries {
id: string;
libraryId: string;
name: string;
url: string;
created: string;
lastModified: string;
fileLastModified: string;
booksCount: number;
booksReadCount: number;
booksUnreadCount: number;
booksInProgressCount: number;
metadata: SeriesMetadata;
booksMetadata: BooksMetadata;
deleted: boolean;
oneshot: boolean;
favorite: boolean;
}
export interface SeriesMetadata {
status: "ENDED" | "ONGOING" | "ABANDONED" | "HIATUS";
title: string;
titleSort: string;
summary: string;
publisher: string;
readingDirection: "LEFT_TO_RIGHT" | "RIGHT_TO_LEFT" | "VERTICAL" | "WEBTOON";
ageRating: number | null;
language: string;
genres: string[];
tags: string[];
}
export interface BooksMetadata {
created: string;
lastModified: string;
authors: Author[];
}
export interface Author {
name: string;
role: string;
}
export interface ReadProgress {
page: number;
completed: boolean;
readDate: string | null;
created: string;
lastModified: string;
deviceId?: string;
deviceName?: string;
}
export interface KomgaBook {
id: string;
seriesId: string;
seriesTitle: string;
libraryId: string;
name: string;
url: string;
number: number;
created: string;
lastModified: string;
fileLastModified: string;
sizeBytes: number;
size: string;
media: BookMedia;
metadata: BookMetadata;
readProgress: ReadProgress | null;
deleted: boolean;
}
export interface BookMedia {
status: "READY" | "UNKNOWN" | "ERROR";
mediaType: string;
pagesCount: number;
}
export interface BookMetadata {
title: string;
titleSort: string;
summary: string;
number: string;
authors: Author[];
tags: string[];
releaseDate: string;
isbn: string;
}
export interface KomgaBookWithPages {
book: KomgaBook;
pages: number[];
}