UNPKG

@zpg6-test-pkgs/better-auth

Version:

The most comprehensive authentication library for TypeScript.

110 lines (107 loc) 3.15 kB
'use strict'; const adapterRouter = (config) => { return (options) => { const fallbackAdapter = config.fallbackAdapter(options); const getAdapterForModel = async (model, operation, data) => { const routes = config.routes || []; for (let i = 0; i < routes.length; i++) { const routeCallback = routes[i]; const adapter = await routeCallback({ modelName: model, data, operation, fallbackAdapter }); if (adapter) { if (config.debugLogs) { console.log( `[AdapterRouter] Route ${i} matched for model "${model}": ${adapter.name}` ); } return adapter(options); } } if (config.debugLogs) { console.log( `[AdapterRouter] Using fallback adapter for model "${model}": ${fallbackAdapter.id}` ); } return fallbackAdapter; }; return { id: "adapter-router", create: async (data) => { const adapter = await getAdapterForModel( data.model, "create", data.data ); return await adapter.create(data); }, findOne: async (data) => { const adapter = await getAdapterForModel( data.model, "findOne", data.where ); return await adapter.findOne(data); }, findMany: async (data) => { const adapter = await getAdapterForModel( data.model, "findMany", data.where ); return await adapter.findMany(data); }, count: async (data) => { const adapter = await getAdapterForModel(data.model, "count"); return await adapter.count(data); }, update: async (data) => { const adapter = await getAdapterForModel(data.model, "update", { where: data.where, update: data.update }); return await adapter.update(data); }, updateMany: async (data) => { const adapter = await getAdapterForModel(data.model, "updateMany", { where: data.where, update: data.update }); return await adapter.updateMany(data); }, delete: async (data) => { const adapter = await getAdapterForModel( data.model, "delete", data.where ); return await adapter.delete(data); }, deleteMany: async (data) => { const adapter = await getAdapterForModel( data.model, "deleteMany", data.where ); return await adapter.deleteMany(data); }, createSchema: async (options2, file) => { if (fallbackAdapter.createSchema) { return await fallbackAdapter.createSchema(options2, file); } throw new Error( "[AdapterRouter] Fallback adapter does not support schema creation" ); }, options: { fallbackAdapter: config.fallbackAdapter, routes: config.routes, debugLogs: config.debugLogs } }; }; }; exports.adapterRouter = adapterRouter;