| 17 | } |
| 18 | |
| 19 | export function createLoginStatusDb(): LoginStatusDb { |
| 20 | return { |
| 21 | getCliSessionForAuth: async (fingerprintId, fingerprintHash) => { |
| 22 | const users = await db |
| 23 | .select({ |
| 24 | id: schema.user.id, |
| 25 | email: schema.user.email, |
| 26 | name: schema.user.name, |
| 27 | authToken: schema.session.sessionToken, |
| 28 | }) |
| 29 | .from(schema.session) |
| 30 | .innerJoin(schema.user, eq(schema.session.userId, schema.user.id)) |
| 31 | .where( |
| 32 | and( |
| 33 | eq(schema.session.fingerprint_id, fingerprintId), |
| 34 | eq(schema.session.cli_auth_hash, fingerprintHash), |
| 35 | eq(schema.session.type, 'cli'), |
| 36 | gt(schema.session.expires, new Date()), |
| 37 | ), |
| 38 | ) |
| 39 | .limit(1) |
| 40 | |
| 41 | return users[0] ?? null |
| 42 | }, |
| 43 | } |
| 44 | } |