diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index a3208b698..d404c759a 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.29.18", + "version": "2.29.19", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/model/user.ts b/packages/hydrooj/src/model/user.ts index 6ac154f54..bfd1e5fc2 100644 --- a/packages/hydrooj/src/model/user.ts +++ b/packages/hydrooj/src/model/user.ts @@ -264,6 +264,19 @@ class UserModel { return uid; } + @ArgMethod + static async changeUsername(uid: number, uname: string) { + const udoc = await coll.findOne({ _id: uid }); + deleteUserCache(udoc); + const res = await coll.findOneAndUpdate( + { _id: uid }, + { $set: { uname, unameLower: uname.trim().toLowerCase() } }, + { returnDocument: 'after' }, + ); + deleteUserCache(res.value); + return res.value; + } + static getMulti(params: any = {}) { return coll.find(params); }