mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 00:11:37 -06:00
feat(metadata): add preferences, provider priority, and cover updates
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
export * from "./auth";
|
||||
export * from "./metadata-preferences";
|
||||
export * from "./dashboard";
|
||||
export * from "./book";
|
||||
export * from "./upload";
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
import { MetadataProviderKey } from './metadata-fetch';
|
||||
|
||||
export type MetadataField =
|
||||
| 'title'
|
||||
| 'subtitle'
|
||||
| 'description'
|
||||
| 'cover'
|
||||
| 'authors'
|
||||
| 'publisher'
|
||||
| 'publishedYear'
|
||||
| 'language'
|
||||
| 'pageCount'
|
||||
| 'seriesName'
|
||||
| 'seriesIndex'
|
||||
| 'genres';
|
||||
|
||||
export const ALL_METADATA_FIELDS: MetadataField[] = [
|
||||
'title',
|
||||
'subtitle',
|
||||
'description',
|
||||
'cover',
|
||||
'authors',
|
||||
'publisher',
|
||||
'publishedYear',
|
||||
'language',
|
||||
'pageCount',
|
||||
'seriesName',
|
||||
'seriesIndex',
|
||||
'genres',
|
||||
];
|
||||
|
||||
export type MergeStrategy = 'fillMissing' | 'overwrite' | 'overwriteIfProvided';
|
||||
|
||||
export interface FieldPreference {
|
||||
enabled: boolean;
|
||||
providers: MetadataProviderKey[];
|
||||
mergeStrategy: MergeStrategy;
|
||||
}
|
||||
|
||||
export type FieldPreferenceOverrides = Partial<Record<MetadataField, FieldPreference>>;
|
||||
|
||||
export interface MetadataFetchPreferences {
|
||||
fields: Record<MetadataField, FieldPreference>;
|
||||
}
|
||||
|
||||
export interface LibraryMetadataPreferences {
|
||||
libraryId: number;
|
||||
overrides: FieldPreferenceOverrides | null;
|
||||
effective: MetadataFetchPreferences;
|
||||
}
|
||||
|
||||
export interface GoogleProviderConfig {
|
||||
enabled: boolean;
|
||||
apiKey: string;
|
||||
}
|
||||
|
||||
export interface HardcoverProviderConfig {
|
||||
enabled: boolean;
|
||||
apiKey: string;
|
||||
}
|
||||
|
||||
export interface AmazonProviderConfig {
|
||||
enabled: boolean;
|
||||
domain: string;
|
||||
cookie: string;
|
||||
}
|
||||
|
||||
export interface SimpleProviderConfig {
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
export interface ProviderConfigurations {
|
||||
google: GoogleProviderConfig;
|
||||
amazon: AmazonProviderConfig;
|
||||
goodreads: SimpleProviderConfig;
|
||||
hardcover: HardcoverProviderConfig;
|
||||
openLibrary: SimpleProviderConfig;
|
||||
}
|
||||
|
||||
export interface ProviderStatus {
|
||||
key: MetadataProviderKey;
|
||||
label: string;
|
||||
configured: boolean;
|
||||
enabled: boolean;
|
||||
hint?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user