UNPKG

svelte-guardian

Version:

Batteries included authentication for SvelteKit applications.

71 lines (70 loc) 2.65 kB
import { optionalImport } from './utils'; // Adapter creation utility export const createDatabaseAdapter = async (config) => { if (!config) return null; switch (config.type) { case 'prisma': { const { PrismaAdapter } = await optionalImport('@auth/prisma-adapter'); return PrismaAdapter(config.client); } case 'custom': return config.adapter; case 'drizzle': { const { DrizzleAdapter } = await optionalImport('@auth/drizzle-adapter'); return DrizzleAdapter(config.client, config.schema); } case 'mongodb': { const { MongoDBAdapter } = await optionalImport('@auth/mongodb-adapter'); return MongoDBAdapter(config.client, { databaseName: config.databaseName }); } case 'postgres': { const { PostgresAdapter } = await optionalImport('@auth/pg-adapter'); return PostgresAdapter(config.client); } case 'mysql': { const { MySQLAdapter } = await optionalImport('@auth/mysql-adapter'); return MySQLAdapter(config.client); } case 'sqlite': { const { SQLiteAdapter } = await optionalImport('@auth/sqlite-adapter'); return SQLiteAdapter(config.client); } case 'supabase': { const { SupabaseAdapter } = await optionalImport('@auth/supabase-adapter'); return SupabaseAdapter(config.url, config.secret); } default: throw new Error(`Unsupported database adapter: ${config.type}`); } }; // TODO Implement Database connection utility export const getUserByCustomIdentifier = async (config, customField, identifier) => { if (!config) throw new Error('Database configuration is required'); if (!identifier) return null; let user = {}; switch (config.type) { case 'prisma': user = await config.client.user.findUnique({ where: { [customField]: identifier } }); console.log(user); return user; //For now, user has to supply getUserByCustomIdentifier function. case 'custom': user = await config.getUserByCustomIdentifier?.(identifier); console.log(user); return user; //TODO Implement for these adapters // case 'drizzle': // case 'mongodb': // case 'postgres': // case 'mysql': // case 'sqlite': // case 'supabase': default: throw new Error(`Unsupported database adapter: ${config.type}`); } };