All files / src/lib sessions.ts

100% Statements 7/7
100% Branches 2/2
100% Functions 1/1
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27            7x           19x 19x 19x   19x           19x   19x    
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
import { db } from "../db/index.js";
import * as schema from "../db/schema.js";
import { signAccessToken } from "./jwt.js";
import { generateRefreshToken } from "./tokens.js";
 
const SESSION_TTL_DAYS = 30;
 
export async function createSession(
  userId: string,
  tx?: PostgresJsDatabase<typeof schema>,
) {
  const conn = tx ?? db;
  const refreshToken = generateRefreshToken();
  const expiresAt = new Date(Date.now() + SESSION_TTL_DAYS * 24 * 60 * 60 * 1000);
 
  await conn.insert(schema.sessions).values({
    userId,
    refreshToken,
    expiresAt,
  });
 
  const accessToken = signAccessToken(userId);
 
  return { accessToken, refreshToken };
}