Files
umami/src/queries/sql/sessions/createSession.ts

50 lines
890 B
TypeScript

import { Prisma } from '@prisma/client';
import prisma from '@/lib/prisma';
export async function createSession(
data: Prisma.SessionCreateInput,
options = { skipDuplicates: false },
) {
const {
id,
websiteId,
browser,
os,
device,
screen,
language,
country,
region,
city,
distinctId,
} = data;
try {
return await prisma.client.session.create({
data: {
id,
websiteId,
browser,
os,
device,
screen,
language,
country,
region,
city,
distinctId,
},
});
} catch (e: any) {
// With skipDuplicates flag: ignore unique constraint error and return null
if (
options.skipDuplicates &&
e instanceof Prisma.PrismaClientKnownRequestError &&
e.code === 'P2002'
) {
return null;
}
throw e;
}
}