Seed admin acccount and generalize login/auth routes

This commit is contained in:
Dominic Ferrando
2026-08-21 10:10:22 -04:00
parent 5432610090
commit 4dbcccdef7
8 changed files with 54 additions and 51 deletions
+10 -28
View File
@@ -1,11 +1,11 @@
import {
StandardsConfigSchema,
} from "@blade-and-brawn/calculator";
import { Gender } from "@blade-and-brawn/domain";
import { Value } from "@sinclair/typebox/value";
import { db } from "./db";
import { DEFAULT_NAME, env, log } from "../util";
import standardsConfig from "./seed-data/standards-config.json" with {type: "json"};
import type { AccountRole } from "../services/accounts";
Value.Assert(StandardsConfigSchema, standardsConfig);
@@ -69,44 +69,26 @@ async function seedCalculator(standardsConfigId: string): Promise<void> {
log.info({ id: result.id }, "seeded default calculator");
}
async function seedAccounts(): Promise<void> {
const ACCOUNT_NAME = "Xominus";
async function seedAdminAccount(): Promise<void> {
const existing = await db.selectFrom("accounts")
.select(["id"])
.where("name", "=", ACCOUNT_NAME)
.where("email", "=", env.PUBLIC_ADMIN_EMAIL)
.executeTakeFirst();
if (existing) {
log.info({ id: existing.id }, "default account already seeded, skipping");
log.info({ id: existing.id }, "admin account already seeded, skipping");
return;
}
const account = await db.insertInto("accounts")
.values({
name: ACCOUNT_NAME,
discord_id: "1325552430942916731",
email: "xominus@bladeandbrawn.com"
name: "Admin",
email: env.PUBLIC_ADMIN_EMAIL,
role: "admin" satisfies AccountRole,
password_hash: env.ADMIN_PASSWORD_HASH
})
.returning("id")
.executeTakeFirstOrThrow();
log.info({ id: account.id }, "seeded default account");
await db.insertInto("assessments")
.values({
account_id: account.id,
name: ACCOUNT_NAME,
gender: Gender.Male,
age: 25,
weight: 80,
perf_back_squat: 72.57472,
perf_deadlift: 127.00576,
perf_bench_press: 102.0582,
perf_run: 446000,
perf_broad_jump: 185.42000000000002,
perf_cone_drill: 9870,
})
.execute();
log.info({ accountId: account.id }, "seeded placeholder assessment");
log.info({ id: account.id }, "seeded admin account");
}
(async () => {
@@ -121,7 +103,7 @@ async function seedAccounts(): Promise<void> {
const datasetId = await seedStandardsDataset();
const standardsConfigId = await seedStandardsConfig(datasetId);
await seedCalculator(standardsConfigId);
await seedAccounts();
await seedAdminAccount();
log.info("seed finished");
}
catch (err) {