fix: upsert fs_users before inserting fs_projects to satisfy FK constraint
Made-with: Cursor
This commit is contained in:
@@ -21,17 +21,33 @@ export async function POST(request: Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const email = session.user.email;
|
const email = session.user.email;
|
||||||
|
const workspace = email.split('@')[0].toLowerCase().replace(/[^a-z0-9]+/g, '-') + '-account';
|
||||||
|
|
||||||
// Resolve user record from fs_users
|
// Upsert user into fs_users — guarantees the FK target exists
|
||||||
|
await query(`
|
||||||
|
INSERT INTO fs_users (id, user_id, data)
|
||||||
|
VALUES (gen_random_uuid()::text, $1, $2::jsonb)
|
||||||
|
ON CONFLICT ((data->>'email')) DO UPDATE
|
||||||
|
SET user_id = EXCLUDED.user_id,
|
||||||
|
data = fs_users.data || EXCLUDED.data,
|
||||||
|
updated_at = NOW()
|
||||||
|
`, [
|
||||||
|
session.user.id,
|
||||||
|
JSON.stringify({
|
||||||
|
email,
|
||||||
|
name: session.user.name,
|
||||||
|
image: session.user.image,
|
||||||
|
workspace,
|
||||||
|
}),
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Fetch the canonical fs_users row (now guaranteed to exist)
|
||||||
const users = await query<{ id: string; data: any }>(`
|
const users = await query<{ id: string; data: any }>(`
|
||||||
SELECT id, data FROM fs_users WHERE data->>'email' = $1 LIMIT 1
|
SELECT id, data FROM fs_users WHERE data->>'email' = $1 LIMIT 1
|
||||||
`, [email]);
|
`, [email]);
|
||||||
|
|
||||||
const firebaseUserId = users[0]?.id || session.user.id || randomUUID();
|
const firebaseUserId = users[0]!.id;
|
||||||
const userData = users[0]?.data || {};
|
const userData = users[0]!.data || {};
|
||||||
const workspace =
|
|
||||||
userData.workspace ||
|
|
||||||
email.split('@')[0].toLowerCase().replace(/[^a-z0-9]+/g, '-') + '-account';
|
|
||||||
|
|
||||||
const body = await request.json();
|
const body = await request.json();
|
||||||
const {
|
const {
|
||||||
|
|||||||
Reference in New Issue
Block a user