remix-demo
react router (remix) demo
git clone https://9o.is/git/remix-demo.git
seed.ts
(3316B)
1 import { PrismaClient, Role } from "@prisma/client";
2
3 const prisma = new PrismaClient();
4
5 async function seed() {
6 const { USER, ADMIN } = Role;
7
8 const users = [
9 { role: USER, name: "Chester", email: "chester@example.com" },
10 { role: ADMIN, name: "Julio", email: "julio@example.com" },
11 { role: USER, name: "Serj", email: "serj@example.com" },
12 ];
13
14 for (const { name, role, email } of users) {
15 await prisma.user.delete({ where: { email } }).catch(() => {
16 /* ignore if does not exist */
17 });
18
19 await prisma.user.create({
20 data: {
21 name,
22 email,
23 role,
24 threshold: 2100,
25 },
26 });
27 }
28
29 const foodEntries = [
30 {
31 calories: 80,
32 consumed: new Date("2022-09-26T00:00"),
33 userName: "Chester",
34 name: "Apple",
35 },
36 {
37 calories: 110,
38 consumed: new Date("2022-09-26T00:00"),
39 userName: "Chester",
40 name: "Banana",
41 },
42 {
43 calories: 30,
44 consumed: new Date("2022-09-16T00:00"),
45 userName: "Chester",
46 name: "Carrot",
47 },
48 {
49 calories: 250,
50 consumed: new Date("2022-09-16T00:00"),
51 userName: "Chester",
52 name: "Pumpkin Soup",
53 },
54 {
55 calories: 400,
56 consumed: new Date("2022-09-27T00:00"),
57 userName: "Serj",
58 name: "French Fries",
59 },
60 {
61 calories: 1600,
62 consumed: new Date("2022-09-27T00:00"),
63 userName: "Serj",
64 name: "Big Mac",
65 },
66 {
67 calories: 1100,
68 consumed: new Date("2022-09-26T00:00"),
69 userName: "Serj",
70 name: "McNuggets 20pc",
71 },
72 {
73 calories: 300,
74 consumed: new Date("2022-09-26T00:00"),
75 userName: "Serj",
76 name: "Sundae",
77 },
78 {
79 calories: 400,
80 consumed: new Date("2022-09-25T00:00"),
81 userName: "Serj",
82 name: "Mocha Frappe",
83 },
84 {
85 calories: 200,
86 consumed: new Date("2022-09-25T00:00"),
87 userName: "Serj",
88 name: "Coca Cola",
89 },
90 {
91 calories: 1800,
92 consumed: new Date("2022-09-25T00:00"),
93 userName: "Serj",
94 name: "Double Quarter Pounder",
95 },
96 {
97 calories: 700,
98 consumed: new Date("2022-09-25T00:00"),
99 userName: "Serj",
100 name: "English Muffin Sandwich",
101 },
102 {
103 calories: 700,
104 consumed: new Date("2022-09-25T00:00"),
105 userName: "Serj",
106 name: "Large Chocolate Milkshake",
107 },
108 {
109 calories: 700,
110 consumed: new Date("2022-09-15T00:00"),
111 userName: "Serj",
112 name: "English Muffin Sandwich",
113 },
114 {
115 calories: 700,
116 consumed: new Date("2022-09-15T00:00"),
117 userName: "Serj",
118 name: "Large Chocolate Milkshake",
119 },
120 ];
121
122 await prisma.foodEntry.deleteMany();
123
124 const userIds = new Map(
125 (await prisma.user.findMany({ select: { id: true, name: true } })).map(
126 (user) => [user.name, user.id]
127 )
128 );
129
130 const data = foodEntries.map((entry) => ({
131 name: entry.name,
132 calories: entry.calories,
133 consumed: entry.consumed,
134 userId: userIds.get(entry.userName) || "",
135 }));
136
137 await prisma.foodEntry.createMany({ data });
138
139 console.log(`Database has been seeded. 🌱`);
140 }
141
142 seed()
143 .catch((e) => {
144 console.error(e);
145 process.exit(1);
146 })
147 .finally(async () => {
148 await prisma.$disconnect();
149 });