feat(rg): parallelize
Build and Push Image / build-backend (push) Successful in 36s
Build and Push Image / build-frontend (push) Failing after 1m42s
Build and Push Image / push (push) Skipped

This commit is contained in:
2026-09-30 19:01:09 +07:00 Unverified
parent 257bdd194b
commit 50629b9085
2 changed files with 29 additions and 10 deletions
+14 -10
View File
@@ -72,6 +72,7 @@ import { EndgameFormWrapper } from "./form";
import { RulesDialog } from "./rules"; import { RulesDialog } from "./rules";
import { ActionButton } from "@/components/action-button"; import { ActionButton } from "@/components/action-button";
import { generateQrcode } from "../donate/api"; import { generateQrcode } from "../donate/api";
import { Conditional } from "@/components/conditional";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "รับกรรมแทนทางบ้าน", title: "รับกรรมแทนทางบ้าน",
@@ -88,11 +89,12 @@ export default async function EndgamePage({
const cookie = await cookies(); const cookie = await cookies();
const sid = cookie.get("rsid"); const sid = cookie.get("rsid");
const promiseCfg = getEndgameConfig();
const session = await getDiscordSession(); const session = await getDiscordSession();
const [q] = const [[q], userSubs, { count, ...config }] = await Promise.all([
!isNew && sid?.value !isNew && sid?.value
? await db ? db
.select({ .select({
// Using endgame.submissions.queue here because // Using endgame.submissions.queue here because
// ${endgameSubmissions.queue} does not work // ${endgameSubmissions.queue} does not work
@@ -121,11 +123,12 @@ export default async function EndgamePage({
not(endgameSubmissions.deleted), not(endgameSubmissions.deleted),
), ),
) )
: []; : [],
const userSubs = session ? await getUserSubmissions(session.uid) : []; session ? getUserSubmissions(session.uid) : [],
const { count, ...config } = await getEndgameConfig(); promiseCfg,
const [canExpire] = q ]);
? await db const canExpire: Promise<number> = q
? db
.select({ queue: endgameSubmissions.queue }) .select({ queue: endgameSubmissions.queue })
.from(endgameSubmissions) .from(endgameSubmissions)
.where( .where(
@@ -134,7 +137,8 @@ export default async function EndgamePage({
lt(endgameSubmissions.queue, q.queue), lt(endgameSubmissions.queue, q.queue),
), ),
) )
: []; .then((e) => e.length)
: 0;
const qrcode = await generateQrcode(q.price); const qrcode = await generateQrcode(q.price);
@@ -150,14 +154,14 @@ export default async function EndgamePage({
<div className="flex flex-col items-center gap-1"> <div className="flex flex-col items-center gap-1">
<span className="text-3xl font-bold">คิวของคุณคือหมายเลข</span> <span className="text-3xl font-bold">คิวของคุณคือหมายเลข</span>
<span className="text-5xl font-bold">{q.queue}</span> <span className="text-5xl font-bold">{q.queue}</span>
{canExpire && ( <Conditional c={canExpire}>
<span className="flex items-center gap-1 text-muted-foreground"> <span className="flex items-center gap-1 text-muted-foreground">
<SimpleTooltip text="มีบางคิวก่อนหน้าของคุณยังไม่ได้ชำระเงิน"> <SimpleTooltip text="มีบางคิวก่อนหน้าของคุณยังไม่ได้ชำระเงิน">
<AlertCircle size={16} /> <AlertCircle size={16} />
</SimpleTooltip> </SimpleTooltip>
เลขคิวของคุณอาจมีการเปลื่ยนแปลง เลขคิวของคุณอาจมีการเปลื่ยนแปลง
</span> </span>
)} </Conditional>
</div> </div>
<div className="absolute right-0 bottom-0 m-2 flex gap-2"> <div className="absolute right-0 bottom-0 m-2 flex gap-2">
<SubmissionListModal subs={userSubs}> <SubmissionListModal subs={userSubs}>
+15
View File
@@ -0,0 +1,15 @@
"use client";
import type { MaybePromise } from "bun";
import { use, type ReactNode } from "react";
export function Conditional({
children,
c,
}: {
children: ReactNode;
c: MaybePromise<any>;
}) {
const val = use(c);
return !!val && children;
}