"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KyselySessionRepository = void 0; class KyselySessionRepository { constructor(db) { this.db = db; } async save(session) { await this.db .insertInto('auth_sessions') .values({ id: session.id, user_id: session.userId, token: session.token, expires_at: session.expiresAt.getTime(), created_at: session.createdAt.getTime(), }) .execute(); } async findByToken(token) { const row = await this.db .selectFrom('auth_sessions') .selectAll() .where('token', '=', token) .executeTakeFirst(); if (!row) return undefined; return { id: row.id, userId: row.user_id, token: row.token, expiresAt: new Date(row.expires_at), createdAt: new Date(row.created_at), }; } async findByUserId(userId) { const rows = await this.db .selectFrom('auth_sessions') .selectAll() .where('user_id', '=', userId) .where('expires_at', '>', Date.now()) .orderBy('created_at', 'desc') .execute(); return rows.map((row) => ({ id: row.id, userId: row.user_id, token: row.token, expiresAt: new Date(row.expires_at), createdAt: new Date(row.created_at), })); } async deleteByToken(token) { await this.db.deleteFrom('auth_sessions').where('token', '=', token).execute(); } async deleteById(id) { await this.db.deleteFrom('auth_sessions').where('id', '=', id).execute(); } async deleteExpired() { await this.db .deleteFrom('auth_sessions') .where('expires_at', '<', Date.now()) .execute(); } } exports.KyselySessionRepository = KyselySessionRepository;