From fb9b4cc39df1608aa1a04286408f03e244f8f15f Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 13 Sep 2024 23:18:20 -0700 Subject: add default account if missing --- lib/migrate.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'lib/migrate.ts') diff --git a/lib/migrate.ts b/lib/migrate.ts index 8896f54b..2d7f83f7 100644 --- a/lib/migrate.ts +++ b/lib/migrate.ts @@ -14,13 +14,20 @@ async function migrate(id) { if (typeof user === "string") user = await g(`user:${user}`); if (user) { - let accounts = await db.lLen(`${user.id}:accounts`); - if (!accounts) { - await s(`account:${user.id}`, { id: user.id }); - await db.lPush(`${user.id}:accounts`, user.id); - } + let k = `lock:${user.id}:accounts`; + const lock = await db.set(k, "1", { NX: true, PX: 5000 }); + if (!lock) return user; + try { + let accounts = await db.lLen(`${user.id}:accounts`); - return user; + if (!accounts) { + await db.set(`account:${user.id}`, JSON.stringify({ id: user.id })); + await db.lPush(`${user.id}:accounts`, user.id); + } + return user; + } finally { + await db.del(k); + } } user = await ga(`user:${id}`); -- cgit v1.2.3