in packages/better-auth/src/db/internal-adapter.ts [346:411]
findSessions: async (sessionTokens: string[]) => {
if (secondaryStorage) {
const sessions: {
session: Session;
user: User;
}[] = [];
for (const sessionToken of sessionTokens) {
const sessionStringified = await secondaryStorage.get(sessionToken);
if (sessionStringified) {
const s = JSON.parse(sessionStringified);
const session = {
session: {
...s.session,
expiresAt: new Date(s.session.expiresAt),
},
user: {
...s.user,
createdAt: new Date(s.user.createdAt),
updatedAt: new Date(s.user.updatedAt),
},
} as {
session: Session;
user: User;
};
sessions.push(session);
}
}
return sessions;
}
const sessions = await adapter.findMany<Session>({
model: "session",
where: [
{
field: "token",
value: sessionTokens,
operator: "in",
},
],
});
const userIds = sessions.map((session) => {
return session.userId;
});
if (!userIds.length) return [];
const users = await adapter.findMany<User>({
model: "user",
where: [
{
field: "id",
value: userIds,
operator: "in",
},
],
});
return sessions.map((session) => {
const user = users.find((u) => u.id === session.userId);
if (!user) return null;
return {
session,
user,
};
}) as {
session: Session;
user: User;
}[];
},