You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.1 KiB
32 lines
1.1 KiB
import type { InternalProvider } from '../../../types';
|
|
import { normalizeRawInternalData } from './converters';
|
|
import { createStorageClient } from './storage';
|
|
|
|
export const createInternalProvider = (): InternalProvider => {
|
|
const storageClient = createStorageClient();
|
|
|
|
return {
|
|
getMetadataByInternalId: async (internalId) => {
|
|
const rawInternalData =
|
|
await storageClient.getMetadataByInternalId(internalId);
|
|
if (!rawInternalData) {
|
|
return undefined;
|
|
}
|
|
|
|
return normalizeRawInternalData(rawInternalData);
|
|
},
|
|
getMetadataByImdbId: async (imdbId) => {
|
|
const rawInternalData =
|
|
await storageClient.getMetadataByImdbId(imdbId);
|
|
if (!rawInternalData) {
|
|
return undefined;
|
|
}
|
|
|
|
return normalizeRawInternalData(rawInternalData);
|
|
},
|
|
getAllMetadata: async () => {
|
|
const rawInternalData = await storageClient.getAllMetadata();
|
|
return rawInternalData.map(normalizeRawInternalData);
|
|
},
|
|
};
|
|
};
|
|
|