mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-07-30 15:53:59 -05:00
29 lines
928 B
TypeScript
29 lines
928 B
TypeScript
import { db } from "~/db/sql";
|
|
import invariant from "~/utils/invariant";
|
|
import { logger } from "~/utils/logger";
|
|
|
|
const code = process.argv[2]?.trim();
|
|
const displayName = process.argv[3]?.trim();
|
|
const rawHue = process.argv[4]?.trim();
|
|
const parsedHue = rawHue ? Number(rawHue) : undefined;
|
|
|
|
invariant(code, "code of badge is required (argument 1)");
|
|
invariant(code === code.toLocaleLowerCase(), "code of badge must be lowercase");
|
|
invariant(displayName, "display name of badge is required (argument 2)");
|
|
invariant(
|
|
displayName !== displayName.toLocaleLowerCase(),
|
|
"displayName of badge must have at least one uppercase letter",
|
|
);
|
|
invariant(
|
|
!parsedHue ||
|
|
(parsedHue >= -360 && parsedHue <= 360 && Number.isInteger(parsedHue)),
|
|
"hue must be between -360 and 360",
|
|
);
|
|
|
|
await db
|
|
.insertInto("Badge")
|
|
.values({ code, displayName, hue: parsedHue ?? null })
|
|
.execute();
|
|
|
|
logger.info(`Added new badge: ${displayName}`);
|