mirror of
https://github.com/lukevella/rallly.git
synced 2025-05-03 12:16:04 +02:00
110 lines
2.6 KiB
TypeScript
110 lines
2.6 KiB
TypeScript
import { prisma, VoteType } from "@rallly/database";
|
|
import dayjs from "dayjs";
|
|
|
|
import { nanoid } from "../../../utils/nanoid";
|
|
import { possiblyPublicProcedure, router } from "../../trpc";
|
|
|
|
const participantData: Array<{ name: string; votes: VoteType[] }> = [
|
|
{
|
|
name: "Reed",
|
|
votes: ["yes", "no", "yes", "no"],
|
|
},
|
|
{
|
|
name: "Susan",
|
|
votes: ["yes", "yes", "yes", "no"],
|
|
},
|
|
{
|
|
name: "Johnny",
|
|
votes: ["no", "no", "yes", "yes"],
|
|
},
|
|
{
|
|
name: "Ben",
|
|
votes: ["yes", "yes", "yes", "yes"],
|
|
},
|
|
];
|
|
|
|
const optionValues = ["2022-12-14", "2022-12-15", "2022-12-16", "2022-12-17"];
|
|
|
|
export const demo = router({
|
|
create: possiblyPublicProcedure.mutation(async () => {
|
|
const adminUrlId = nanoid();
|
|
const demoUser = { name: "John Example", email: "noreply@rallly.co" };
|
|
|
|
const options: Array<{ start: Date; id: string }> = [];
|
|
|
|
for (let i = 0; i < optionValues.length; i++) {
|
|
options.push({ id: await nanoid(), start: new Date(optionValues[i]) });
|
|
}
|
|
|
|
const participants: Array<{
|
|
name: string;
|
|
id: string;
|
|
userId: string;
|
|
createdAt: Date;
|
|
}> = [];
|
|
|
|
const votes: Array<{
|
|
optionId: string;
|
|
participantId: string;
|
|
type: VoteType;
|
|
}> = [];
|
|
|
|
for (let i = 0; i < participantData.length; i++) {
|
|
const { name, votes: participantVotes } = participantData[i];
|
|
const participantId = await nanoid();
|
|
participants.push({
|
|
id: participantId,
|
|
name,
|
|
userId: "user-demo",
|
|
createdAt: dayjs()
|
|
.add(i * -1, "minutes")
|
|
.toDate(),
|
|
});
|
|
|
|
options.forEach((option, index) => {
|
|
votes.push({
|
|
optionId: option.id,
|
|
participantId,
|
|
type: participantVotes[index],
|
|
});
|
|
});
|
|
}
|
|
|
|
await prisma.poll.create({
|
|
data: {
|
|
id: nanoid(),
|
|
title: "Lunch Meeting",
|
|
location: "Starbucks, 901 New York Avenue",
|
|
description: `Hey everyone, please choose the dates when you are available to meet for our monthly get together. Looking forward to see you all!`,
|
|
demo: true,
|
|
adminUrlId,
|
|
participantUrlId: nanoid(),
|
|
user: {
|
|
connectOrCreate: {
|
|
where: {
|
|
email: demoUser.email,
|
|
},
|
|
create: demoUser,
|
|
},
|
|
},
|
|
options: {
|
|
createMany: {
|
|
data: options,
|
|
},
|
|
},
|
|
participants: {
|
|
createMany: {
|
|
data: participants,
|
|
},
|
|
},
|
|
votes: {
|
|
createMany: {
|
|
data: votes,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
return adminUrlId;
|
|
}),
|
|
});
|