sendou.ink/scripts/mass-add-tournaments-to-org.ts
Kalle 9312fad90f
Tournament organization page (#1811)
* Initial

* Calendar initial

* Extract EventCalendar

* Events list initial

* Winners

* SQL fixes

* List events by series

* Leaderboards

* Series leaderboard

* Own entry peek

* Edit page skeleton

* RHF initial test

* RHF stuff

* Form etc. progress

* Fix tournament series description

* Fix tabs layout

* Fix socials insert

* Check for not removing admin

* Adding series

* TODOs

* Allow updating org with no series

* FormFieldset

* Allow series without events

* TextAreaFormfield accepting array syntax

* Input form array field

* ToggleFormField

* SelectFormField

* UserSearchFormField

* Fetch badgeOptions

* Badge editing

* Progress

* Use native preventScrollReset

* Rename func

* Fix sticky scroll

* Fix translation

* i18n errors

* handle,meta in edit

* Add ref to user search

* TODOs

* Done
2024-07-25 23:06:29 +03:00

44 lines
1.1 KiB
TypeScript

import "dotenv/config";
import { db } from "~/db/sql";
import invariant from "~/utils/invariant";
import { logger } from "~/utils/logger";
async function main() {
const name = process.argv[2]?.trim();
const orgIdRaw = process.argv[3]?.trim();
const orgId = Number(orgIdRaw);
invariant(name, "name of tournament is required (argument 1)");
invariant(orgIdRaw, "org id is required (argument 2)");
invariant(!Number.isNaN(orgId), "org id must be a number");
await db
.selectFrom("TournamentOrganization")
.select(["TournamentOrganization.id"])
.where("id", "=", orgId)
.executeTakeFirstOrThrow();
const allEvents = await db
.selectFrom("CalendarEvent")
.select(["CalendarEvent.name", "CalendarEvent.id"])
.execute();
const filtered = allEvents.filter((event) =>
event.name.toLowerCase().includes(name.toLowerCase()),
);
await db
.updateTable("CalendarEvent")
.set({ organizationId: orgId })
.where(
"id",
"in",
filtered.map((event) => event.id),
)
.execute();
logger.info(`Added ${filtered.length} tournaments to organization ${orgId}`);
}
main();