import { betterAuth } from "better-auth"
import { openAPI } from "better-auth/plugins"
import { Pool } from "pg"
import { Redis } from "ioredis"
const redis = new Redis(process.env.REDIS_URL as string)
.on("error", (err) => {
console.error("Redis connection error:", err)
})
.on("connect", () => {
console.log("Redis connected")
})
.on("ready", () => {
console.log("Redis ready")
})
export const auth = betterAuth({
emailAndPassword: {
enabled: true,
},
plugins: [openAPI()],
database: new Pool({
connectionString: process.env.DATABASE_URL,
log: console.log
}),
secondaryStorage: {
get: async (key) => {
const value = await redis.get(key)
return value ? JSON.stringify(value) : null
},
set: async (key, value, ttl) => {
if (ttl) await redis.set(key, value, "EX", ttl)
else await redis.set(key, value)
},
delete: async (key) => {
await redis.del(key)
},
},
})
import { betterAuth } from "better-auth"
import { openAPI } from "better-auth/plugins"
import { Pool } from "pg"
import { Redis } from "ioredis"
const redis = new Redis(process.env.REDIS_URL as string)
.on("error", (err) => {
console.error("Redis connection error:", err)
})
.on("connect", () => {
console.log("Redis connected")
})
.on("ready", () => {
console.log("Redis ready")
})
export const auth = betterAuth({
emailAndPassword: {
enabled: true,
},
plugins: [openAPI()],
database: new Pool({
connectionString: process.env.DATABASE_URL,
log: console.log
}),
secondaryStorage: {
get: async (key) => {
const value = await redis.get(key)
return value ? JSON.stringify(value) : null
},
set: async (key, value, ttl) => {
if (ttl) await redis.set(key, value, "EX", ttl)
else await redis.set(key, value)
},
delete: async (key) => {
await redis.del(key)
},
},
})