All files / prisma seed.ts

0% Statements 0/57
0% Branches 0/1
0% Functions 0/1
0% Lines 0/57

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67                                                                                                                                     
import { PrismaClient } from "@prisma/client";
 
const prisma = new PrismaClient();
 
async function ensureTrackTypes() {
  await prisma.trackType.upsert({
    where: { code: "ROAD" },
    create: { code: "ROAD", label: "Шоссе" },
    update: { label: "Шоссе" },
  });
  await prisma.trackType.upsert({
    where: { code: "MTB" },
    create: { code: "MTB", label: "МТБ" },
    update: { label: "МТБ" },
  });
}
 
async function ensureRouteLayouts() {
  await prisma.routeLayout.upsert({
    where: { code: "CIRCULAR" },
    create: { code: "CIRCULAR", label: "Круговой" },
    update: { label: "Круговой" },
  });
  await prisma.routeLayout.upsert({
    where: { code: "LINEAR" },
    create: { code: "LINEAR", label: "Линейный" },
    update: { label: "Линейный" },
  });
}
 
/** E2e autotest admin: Firebase uid + role=admin в user_profiles (только если задан SEED_E2E_ADMIN_UID). */
async function ensureE2eAdmin() {
  const uid = process.env.SEED_E2E_ADMIN_UID?.trim();
  if (!uid) return;
 
  const email = process.env.SEED_E2E_ADMIN_EMAIL?.trim() || null;
 
  await prisma.userProfile.upsert({
    where: { firebaseUid: uid },
    create: {
      firebaseUid: uid,
      ...(email ? { email } : {}),
      role: "admin",
    },
    update: {
      role: "admin",
      ...(email ? { email } : {}),
    },
  });
}
 
async function main() {
  await ensureTrackTypes();
  await ensureRouteLayouts();
  await ensureE2eAdmin();
}
 
void main()
  .then(async () => {
    await prisma.$disconnect();
  })
  .catch(async (err) => {
    console.error(err);
    await prisma.$disconnect();
    process.exit(1);
  });