feat(metadata): add preferences, provider priority, and cover updates

This commit is contained in:
neon
2026-02-26 11:42:47 -06:00
parent 6cbd6dd32d
commit f3aa1a05ad
47 changed files with 2391 additions and 206 deletions
+1
View File
@@ -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;
}