diff options
| author | Adam Soltys <[email protected]> | 2024-09-13 23:18:20 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-09-13 23:18:20 -0700 |
| commit | fb9b4cc39df1608aa1a04286408f03e244f8f15f (patch) | |
| tree | 40fd6c4f4ba0a9b1237f90225be8f1c89cf4e49b /lib/migrate.ts | |
| parent | 183315347b3ce6d4057abe05861c39f5d4b1aa46 (diff) | |
| download | coinos-server-fb9b4cc39df1608aa1a04286408f03e244f8f15f.tar.gz coinos-server-fb9b4cc39df1608aa1a04286408f03e244f8f15f.zip | |
add default account if missing
Diffstat (limited to 'lib/migrate.ts')
| -rw-r--r-- | lib/migrate.ts | 19 |
1 files changed, 13 insertions, 6 deletions
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}`); |
