@fox-hound-tools/refine-library
Version:
Refine sdk library
65 lines • 2.57 kB
JavaScript
/**
* Create a provider that communicates with the wrapper.
*/
export const createBffDataProvider = (supabase, sdk, supabaseProvider, sdkProvider, settings, options = {}) => {
/**
* Get the provider for the resource.
*/
async function executeProvider(type, params) {
const onbeforeParams = settings[params.resource]?.onBeforeParams ?? ((params) => params);
const resource = params.resource;
// Check if the resource has a override.
if (settings[resource] && settings[resource][type] && typeof settings[resource][type] === 'function') {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const method = settings[resource][type];
return await method({ supabase, sdk, params });
}
let provider = options.defaultProvider === 'sdk' ? sdkProvider : supabaseProvider;
if (settings[resource] && settings[resource][type]) {
if (settings[resource][type] === 'sdk') {
provider = sdkProvider;
}
else {
provider = supabaseProvider;
}
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return await provider[type](onbeforeParams(params));
}
return {
getList: async (params) => {
return await executeProvider('getList', params);
},
getMany: async (params) => {
return await executeProvider('getMany', params);
},
getOne: async (params) => {
return await executeProvider('getOne', params);
},
create: async (params) => {
return await executeProvider('create', params);
},
createMany: async (params) => {
return await executeProvider('createMany', params);
},
update: async (params) => {
return await executeProvider('update', params);
},
updateMany: async (params) => {
return await executeProvider('updateMany', params);
},
deleteOne: async (params) => {
return await executeProvider('deleteOne', params);
},
deleteMany: async (params) => {
return await executeProvider('deleteMany', params);
},
getApiUrl: () => {
throw Error('Not implemented on refine-supabase data provider.');
},
custom: () => {
throw Error('Not implemented on refine-supabase data provider.');
},
};
};
//# sourceMappingURL=bff-data-provider.js.map