import { prisma } from "@formbricks/database"; import { DatabaseError } from "@formbricks/errors"; import { TSession } from "@formbricks/types/v1/sessions"; import { Prisma } from "@prisma/client"; const select = { id: true, createdAt: true, updatedAt: true, expiresAt: true, personId: true, }; const oneHour = 1000 * 60 * 60; export const getSession = async (sessionId: string): Promise => { try { const session = await prisma.session.findUnique({ where: { id: sessionId, }, select, }); return session; } catch (error) { if (error instanceof Prisma.PrismaClientKnownRequestError) { throw new DatabaseError("Database operation failed"); } throw error; } }; export const createSession = async (personId: string): Promise => { try { const session = await prisma.session.create({ data: { person: { connect: { id: personId, }, }, expiresAt: new Date(Date.now() + oneHour), }, select, }); return session; } catch (error) { if (error instanceof Prisma.PrismaClientKnownRequestError) { throw new DatabaseError("Database operation failed"); } throw error; } }; export const extendSession = async (sessionId: string): Promise => { try { const session = await prisma.session.update({ where: { id: sessionId, }, data: { expiresAt: new Date(Date.now() + oneHour), }, select, }); return session; } catch (error) { if (error instanceof Prisma.PrismaClientKnownRequestError) { throw new DatabaseError("Database operation failed"); } throw error; } };