fix: missing metadata preventing game import

when a metadata provider fails to import a game's developer / publisher, the import is no longer blocked. the imports usally fail because there isn't a page for these compaines
This commit is contained in:
Huskydog9988
2025-05-08 11:57:13 -04:00
parent f9f437dd85
commit 471e85d7c6
5 changed files with 40 additions and 20 deletions
+14 -8
View File
@@ -39,10 +39,10 @@ export abstract class MetadataProvider {
abstract fetchGame(params: _FetchGameMetadataParams): Promise<GameMetadata>;
abstract fetchPublisher(
params: _FetchPublisherMetadataParams,
): Promise<PublisherMetadata>;
): Promise<PublisherMetadata | undefined>;
abstract fetchDeveloper(
params: _FetchDeveloperMetadataParams,
): Promise<DeveloperMetadata>;
): Promise<DeveloperMetadata | undefined>;
}
export class MetadataHandler {
@@ -192,7 +192,7 @@ export class MetadataHandler {
query,
"fetchDeveloper",
"developer",
)) as Developer;
)) as Developer | undefined;
}
async fetchPublisher(query: string) {
@@ -200,7 +200,7 @@ export class MetadataHandler {
query,
"fetchPublisher",
"publisher",
)) as Publisher;
)) as Publisher | undefined;
}
// Careful with this function, it has no typechecking
@@ -226,9 +226,14 @@ export class MetadataHandler {
{},
["internal:read"],
);
let result: PublisherMetadata;
let result: PublisherMetadata | undefined;
try {
result = await provider[functionName]({ query, createObject });
if (result === undefined) {
throw new Error(
`${provider.source()} failed to find a ${databaseName} for "${query}`,
);
}
} catch (e) {
console.warn(e);
dumpObjects();
@@ -257,9 +262,10 @@ export class MetadataHandler {
return object;
}
throw new Error(
`No metadata provider found a ${databaseName} for "${query}"`,
);
// throw new Error(
// `No metadata provider found a ${databaseName} for "${query}"`,
// );
return undefined;
}
}