diff --git a/README.md b/README.md index 9ce4aa1e2..787d5d76d 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,12 @@ npm run add-badge -- sundae "4v4 Sundaes" npm run rename-badge -- 10 "New 4v4 Sundaes" ``` +### Add many badge owners + +```bash +npm run add-badge-winners -- 10 "750705955909664791,79237403620945920" +``` + ### Convert many .png files to .avif While in the folder with the images: diff --git a/package.json b/package.json index 1e41d6221..3471d6a08 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "migrate:reset": "node scripts/delete-db-files.mjs && npm run migrate && npm run seed", "add-badge": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/add-badge.ts", "rename-badge": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/rename-badge.ts", + "add-badge-winners": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/add-badge-winners.ts", "create-gear-json": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/create-gear-json.ts", "create-object-dmg-json": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/create-object-dmg-json.ts", "create-misc-json": "node --experimental-specifier-resolution=node --loader ts-node/esm -r tsconfig-paths/register scripts/create-misc-json.ts", diff --git a/scripts/add-badge-winners.ts b/scripts/add-badge-winners.ts new file mode 100644 index 000000000..a5c2e5596 --- /dev/null +++ b/scripts/add-badge-winners.ts @@ -0,0 +1,26 @@ +/* eslint-disable no-console */ +import "dotenv/config"; +import invariant from "tiny-invariant"; +import { sql } from "~/db/sql"; + +const badgeId = process.argv[2]?.trim(); +const discordIds = process.argv[3]?.trim(); + +invariant(discordIds, "id list of discord ids required (argument 1)"); +invariant(badgeId, "display name of badge is required (argument 2)"); +invariant( + discordIds.includes(","), + "discordIds must be a comma separated list of discord ids" +); + +const stm = sql.prepare( + /* sql */ `insert into "TournamentBadgeOwner" ("badgeId", "userId") values (@badgeId, (select "id" from "User" where "discordId" = @userId))` +); + +const users = discordIds.split(","); + +for (const userId of users) { + stm.run({ badgeId: Number(badgeId), userId }); +} + +console.log(`Added ${users.length} owners to the badge`);