Move some events team stuff to prisma
This commit is contained in:
@@ -42,20 +42,16 @@ export async function loader({ context }: { context: RequestContext }) {
|
|||||||
status: 403,
|
status: 403,
|
||||||
});
|
});
|
||||||
|
|
||||||
const etData = await context.env.D1.prepare(
|
const etData = await context.data.prisma.etMember.findMany({
|
||||||
"SELECT id, name, points, roblox_id FROM et_members;",
|
select: {
|
||||||
).all();
|
id: true,
|
||||||
|
name: true,
|
||||||
|
points: true,
|
||||||
|
roblox_id: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
if (etData.error)
|
return { members: etData };
|
||||||
throw new Response(null, {
|
|
||||||
status: 500,
|
|
||||||
});
|
|
||||||
|
|
||||||
const members = etData.results as { [k: string]: any }[];
|
|
||||||
|
|
||||||
return { members } as {
|
|
||||||
members: { [k: string]: any }[];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function () {
|
export default function () {
|
||||||
|
|||||||
@@ -45,15 +45,15 @@ export async function loader({
|
|||||||
status: 403,
|
status: 403,
|
||||||
});
|
});
|
||||||
|
|
||||||
const strikeData = await context.env.D1.prepare(
|
const strikes = await context.data.prisma.etStrike.findMany({
|
||||||
"SELECT * FROM et_strikes WHERE user = ?;",
|
where: {
|
||||||
)
|
user: params.uid,
|
||||||
.bind(params.uid)
|
},
|
||||||
.all();
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
can_manage: Boolean([1 << 4, 1 << 12].find((p) => user.permissions & p)),
|
can_manage: Boolean([1 << 4, 1 << 12].find((p) => user.permissions & p)),
|
||||||
strikes: strikeData.results,
|
strikes,
|
||||||
user: params.uid,
|
user: params.uid,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import { useLoaderData } from "@remix-run/react";
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import calendarStyles from "react-big-calendar/lib/css/react-big-calendar.css";
|
import calendarStyles from "react-big-calendar/lib/css/react-big-calendar.css";
|
||||||
import { type LinksFunction } from "@remix-run/cloudflare";
|
import { type LinksFunction } from "@remix-run/cloudflare";
|
||||||
|
import { EtMember } from "../../generated/prisma/client.js";
|
||||||
|
|
||||||
export const links: LinksFunction = () => {
|
export const links: LinksFunction = () => {
|
||||||
return [{ href: calendarStyles, rel: "stylesheet" }];
|
return [{ href: calendarStyles, rel: "stylesheet" }];
|
||||||
@@ -51,34 +52,41 @@ export async function loader({ context }: { context: RequestContext }) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const monthEventList = await context.env.D1.prepare(
|
const { prisma } = context.data;
|
||||||
"SELECT answer, approved, created_by, day, details, id, month, pending, performed_at, reached_minimum_player_count, type, year FROM events WHERE month = ? AND year = ? ORDER BY day ASC;",
|
const monthEventList = await prisma.event.findMany({
|
||||||
)
|
orderBy: {
|
||||||
.bind(now.getUTCMonth() + 1, now.getUTCFullYear())
|
day: "asc",
|
||||||
.all();
|
},
|
||||||
|
select: {
|
||||||
|
answer: true,
|
||||||
|
approved: true,
|
||||||
|
created_by: true,
|
||||||
|
day: true,
|
||||||
|
details: true,
|
||||||
|
id: true,
|
||||||
|
month: true,
|
||||||
|
pending: true,
|
||||||
|
performed_at: true,
|
||||||
|
reached_minimum_player_count: true,
|
||||||
|
type: true,
|
||||||
|
year: true,
|
||||||
|
},
|
||||||
|
where: {
|
||||||
|
month: now.getUTCMonth() + 1,
|
||||||
|
year: now.getUTCFullYear(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
if (monthEventList.error)
|
const membersList = await prisma.$queryRaw<
|
||||||
throw new Response(null, {
|
EtMember[]
|
||||||
status: 500,
|
>`SELECT id, name FROM et_members WHERE id IN (SELECT created_by FROM events WHERE month = ${now.getUTCMonth() + 1} AND year = ${now.getUTCFullYear()});`;
|
||||||
});
|
|
||||||
|
|
||||||
const membersList = await context.env.D1.prepare(
|
|
||||||
"SELECT id, name FROM et_members WHERE id IN (SELECT created_by FROM events WHERE month = ? AND year = ?);",
|
|
||||||
)
|
|
||||||
.bind(now.getUTCMonth() + 1, now.getUTCFullYear())
|
|
||||||
.all();
|
|
||||||
|
|
||||||
if (membersList.error)
|
|
||||||
throw new Response(null, {
|
|
||||||
status: 500,
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
can_approve: Boolean(
|
can_approve: Boolean(
|
||||||
[1 << 4, 1 << 12].find((p) => context.data.current_user.permissions & p),
|
[1 << 4, 1 << 12].find((p) => context.data.current_user.permissions & p),
|
||||||
),
|
),
|
||||||
events: monthEventList.results,
|
events: monthEventList,
|
||||||
members: membersList.results as { id: string; name: string }[],
|
members: membersList,
|
||||||
user_id: context.data.current_user.id as string,
|
user_id: context.data.current_user.id as string,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user