Fix crashes in Postgres OAuth session adapter #5

merged
opened by danabra.mov targeting main from danabra.mov/slices: fix-postgres
Changed files
+11 -11
packages
session
src
adapters
+11 -11
packages/session/src/adapters/postgres.ts
···
user_id: string;
handle: string | null;
is_authenticated: boolean;
-
data: string | null;
-
created_at: Date;
-
expires_at: Date;
-
last_accessed_at: Date;
+
data: Record<string, unknown> | null;
+
created_at: number;
+
expires_at: number;
+
last_accessed_at: number;
}
export class PostgresAdapter implements SessionAdapter {
···
data.userId,
data.handle || null,
data.isAuthenticated,
-
data.data ? JSON.stringify(data.data) : null,
+
data.data || null,
data.createdAt,
data.expiresAt,
data.lastAccessedAt,
···
updates: Partial<SessionData>
): Promise<boolean> {
const setParts: string[] = [];
-
const values: (string | number | boolean | null)[] = [];
+
const values: (string | number | boolean | null | Record<string, unknown>)[] = [];
let paramIndex = 1;
if (updates.userId !== undefined) {
···
if (updates.data !== undefined) {
setParts.push(`data = $${paramIndex++}`);
-
values.push(updates.data ? JSON.stringify(updates.data) : null);
+
values.push(updates.data || null);
}
if (updates.expiresAt !== undefined) {
···
userId: row.user_id,
handle: row.handle || undefined,
isAuthenticated: row.is_authenticated,
-
data: row.data ? JSON.parse(row.data) : undefined,
-
createdAt: row.created_at.getTime(),
-
expiresAt: row.expires_at.getTime(),
-
lastAccessedAt: row.last_accessed_at.getTime(),
+
data: row.data || undefined,
+
createdAt: row.created_at,
+
expiresAt: row.expires_at,
+
lastAccessedAt: row.last_accessed_at,
};
}