From ea940a436bfd2978cc8814218e9e45c95be5f58c Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 6 Jun 2025 19:01:07 +0800 Subject: [PATCH] migrate: syzoj: clean invalid email --- packages/migrate/package.json | 2 +- packages/migrate/scripts/syzoj.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 4c0f06e66..cc7e0c673 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/migrate", - "version": "0.5.0-beta.1", + "version": "0.5.0-beta.2", "main": "index.ts", "repository": "git@github.com:hydro-dev/Hydro.git", "author": "undefined ", diff --git a/packages/migrate/scripts/syzoj.ts b/packages/migrate/scripts/syzoj.ts index 5f0966fa2..61967f8a7 100644 --- a/packages/migrate/scripts/syzoj.ts +++ b/packages/migrate/scripts/syzoj.ts @@ -115,7 +115,7 @@ export async function run({ const precheck = await UserModel.getMulti({ unameLower: { $in: udocs.map((u) => u.username.toLowerCase()) } }).toArray(); if (precheck.length) throw new Error(`Conflict username: ${precheck.map((u) => u.unameLower).join(', ')}`); for (const udoc of udocs) { - if (randomMail === 'always') delete udoc.email; + if (randomMail === 'always' || !udoc.email.includes('@')) delete udoc.email; let current = await UserModel.getByEmail(domainId, udoc.email || `${udoc.username}@syzoj.local`); current ||= await UserModel.getByUname(domainId, udoc.username); if (current && randomMail === 'needed') { @@ -147,6 +147,7 @@ export async function run({ displayName: udoc.nickname || '', nSubmit: udoc.submit_num, nAccept: udoc.ac_num, + join: true, }); } } @@ -359,7 +360,7 @@ export async function run({ } } } - if (rdoc.type) { + if (rdoc.type && rdoc.type_info && tidMap[rdoc.type_info]) { data.contest = new ObjectId(tidMap[rdoc.type_info]); await ContestModel.attend(domainId, data.contest, uidMap[rdoc.user_id]).catch(noop); }