// app/sessions.server.ts
import { createSessionStorage } from "react-router";
import { db } from "~/db.server";
export const { getSession, commitSession, destroySession } =
createSessionStorage({
cookie: {
name: "__session",
secrets: [process.env.SESSION_SECRET],
sameSite: "lax",
httpOnly: true,
secure: process.env.NODE_ENV === "production",
},
async createData(data, expires) {
const session = await db.session.create({
data: {
data: JSON.stringify(data),
expiresAt: expires,
},
});
return session.id;
},
async readData(id) {
const session = await db.session.findUnique({ where: { id } });
if (!session || session.expiresAt < new Date()) {
return null;
}
return JSON.parse(session.data);
},
async updateData(id, data, expires) {
await db.session.update({
where: { id },
data: {
data: JSON.stringify(data),
expiresAt: expires,
},
});
},
async deleteData(id) {
await db.session.delete({ where: { id } });
},
});