📦 EqualifyEverything / equalify-v2-api

📄 checkSessionId.ts · 31 lines
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
28
29
30
31import { db, event, stripe } from '#src/utils';

export const checkSessionId = async () => {
    const session = await stripe.checkout.sessions.retrieve(event.body.session_id);
    if (new Date().getTime() < new Date(session?.expires_at * 1000).getTime()) {
        const customerId = session?.customer;
        await db.connect();
        const userSignedIn = (await db.query({
            text: `SELECT "signed_in_once" FROM "users" WHERE "customer_id"=$1`,
            values: [customerId],
        }))?.rows?.[0]?.signed_in_once;
        if (!userSignedIn) {
            await db.query({
                text: `UPDATE "users" SET "signed_in_once"=$1 WHERE "customer_id"=$2`,
                values: [true, customerId],
            });
            await db.clean();
            return {
                email: session?.customer_details?.email,
                password: session?.custom_fields?.[0]?.text?.value,
            };
        }
        else {
            await db.clean();
            return {
                email: session?.customer_details?.email,
                password: null,
            };
        }
    }
}