Skip to content

Commit

Permalink
Fix query; cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
3mcd committed May 23, 2024
1 parent ab8162c commit 44171e9
Show file tree
Hide file tree
Showing 11 changed files with 86 additions and 79 deletions.
4 changes: 0 additions & 4 deletions core/actions/_lib/runActionInstance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,6 @@ const _runActionInstance = async (
stageId: actionInstance.stageId,
});

revalidateTag(`community-stages_${pub.communityId}`);

return result;
} catch (error) {
captureException(error);
Expand Down Expand Up @@ -161,8 +159,6 @@ export async function runActionInstance(args: RunActionInstanceArgs) {
})
.execute();

revalidateTag(`action_runs_${pubResult.value.communityId}`);

return result;
}

Expand Down
26 changes: 0 additions & 26 deletions core/actions/_lib/runActionInstanceServerAction.ts

This file was deleted.

1 change: 0 additions & 1 deletion core/actions/api/server.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
export { runActionInstance, runInstancesForEvent } from "../_lib/runActionInstance";
export { runActionInstanceServerAction } from "../_lib/runActionInstanceServerAction";
47 changes: 47 additions & 0 deletions core/actions/api/serverAction.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"use server";

import { revalidateTag } from "next/cache";

import { db } from "~/kysely/database";
import { UsersId } from "~/kysely/types/public/Users";
import { getLoginData } from "~/lib/auth/loginData";
import {
ActionInstanceRunResult,
RunActionInstanceArgs,
runActionInstance as runActionInstanceInner,
} from "../_lib/runActionInstance";

export const runActionInstance = async function runActionInstance(
args: Omit<RunActionInstanceArgs, "userId" | "event">
): Promise<ActionInstanceRunResult> {
const user = await getLoginData();

if (!user) {
return {
error: "Not logged in",
};
}

// Retrieve the pub's community id in order to revalidate the next server
// cache after the action is run.
const pub = await db
.selectFrom("pubs")
.select(["community_id as communityId"])
.where("id", "=", args.pubId)
.executeTakeFirst();

const result = await runActionInstanceInner({
...args,
userId: user.id as UsersId,
});

if (pub !== undefined) {
// Because an action can move a pub to a different stage, we need to
// revalidate the community stage cache.
revalidateTag(`community-stages_${pub.communityId}`);
// Revalidate the community action runs cache for the action activity table.
revalidateTag(`community-action-runs_${pub.communityId}`);
}

return result;
};
21 changes: 8 additions & 13 deletions core/app/c/[communitySlug]/SideNav.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Button } from "ui/button";
import { Menu } from "ui/icon";
import { Activity, Menu } from "ui/icon";
import { Sheet, SheetContent, SheetTrigger } from "ui/sheet";

import type { CommunityData } from "./layout";
Expand Down Expand Up @@ -47,18 +47,13 @@ const Links = ({
icon={<img src="/icons/members.svg" alt="" />}
/>
)}

{/* <NavLink
href={`${prefix}/search`}
text={"Search"}
icon={<img src="/icons/search.svg" />}
/>
<NavLink
href={`${prefix}/`}
text={"Dashboard"}
icon={<img src="/icons/dashboard.svg" />}
count={8}
/> */}
{isAdmin && (
<NavLink
href={`${prefix}/activity/actions`}
text="Activity"
icon={<Activity className="w-4" />}
/>
)}
</>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,5 @@ import { ActionRun, getActionRunsTableColumns } from "./getActionRunsTableColumn

export const ActionRunsTable = ({ actionRuns }: { actionRuns: ActionRun[] }) => {
const actionRunsColumns = getActionRunsTableColumns();
return (
<DataTable columns={actionRunsColumns} data={actionRuns} searchBy="actionInstance.name" />
);
return <DataTable columns={actionRunsColumns} data={actionRuns} />;
};
23 changes: 10 additions & 13 deletions core/app/c/[communitySlug]/activity/actions/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,10 @@ import { ActionRun } from "./getActionRunsTableColumns";

export default async function Page({
params: { communitySlug },
searchParams,
}: {
params: {
communitySlug: string;
};
searchParams: {
page?: string;
};
}) {
const community = await findCommunityBySlug(communitySlug);

Expand All @@ -37,16 +33,14 @@ export default async function Page({
return null;
}

const page = searchParams.page ? parseInt(searchParams.page, 10) : 1;
const limit = 20;
const actionRuns = (await unstable_cache(
() =>
db
.selectFrom("stages")
.where("stages.community_id", "=", community.id)
.innerJoin("action_instances", "stages.id", "action_instances.stage_id")
.innerJoin("action_runs", "action_instances.id", "action_runs.action_instance_id")
.innerJoin("users", "action_runs.user_id", "users.id")
.leftJoin("users", "action_runs.user_id", "users.id")
.select((eb) => [
"action_runs.id",
"action_runs.config",
Expand Down Expand Up @@ -81,14 +75,17 @@ export default async function Page({
).as("user"),
])
.orderBy("action_runs.created_at", "desc")
.limit(limit)
.offset(page * limit - limit)
.execute(),
[community.id],
{ tags: [`action_runs_${community.id}`] }
{ tags: [`community-action-runs_${community.id}`] }
)()) as ActionRun[];

logger.info("Action runs", actionRuns);

return <ActionRunsTable actionRuns={actionRuns} />;
return (
<>
<div className="mb-16 flex items-center justify-between">
<h1 className="text-xl font-bold">Action Activity</h1>
</div>
<ActionRunsTable actionRuns={actionRuns} />
</>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { toast } from "ui/use-toast";
import type { ActionInstances, ActionInstancesId } from "~/kysely/types/public/ActionInstances";
import type { PubsId } from "~/kysely/types/public/Pubs";
import { getActionByName } from "~/actions/api";
import { runActionInstanceServerAction } from "~/actions/api/server";
import { runActionInstance } from "~/actions/api/serverAction";
import { useServerAction } from "~/lib/serverActions";

export const StagePanelPubsRunActionButton = ({
Expand All @@ -24,7 +24,7 @@ export const StagePanelPubsRunActionButton = ({
actionInstance: ActionInstances;
pub: Pub;
}) => {
const runAction = useServerAction(runActionInstanceServerAction);
const runAction = useServerAction(runActionInstance);

const [isPending, startTransition] = useTransition();

Expand Down
32 changes: 17 additions & 15 deletions core/app/components/DataTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "u
interface DataTableProps<TData, TValue> {
columns: ColumnDef<TData, TValue>[];
data: TData[];
searchBy: string;
searchBy?: string;
}

export function DataTable<TData, TValue>({
Expand Down Expand Up @@ -51,20 +51,22 @@ export function DataTable<TData, TValue>({

return (
<div>
<div className="flex flex-col items-start gap-y-2 py-4">
<Label htmlFor="email-filter" className="flex items-center gap-x-1">
<Search className="h-4 w-4" /> Search by {searchBy}
</Label>
<Input
name={`${searchBy}-filter`}
placeholder={`Search table by ${searchBy}`}
value={(table.getColumn(`${searchBy}`)?.getFilterValue() as string) ?? ""}
onChange={(event) =>
table.getColumn(`${searchBy}`)?.setFilterValue(event.target.value)
}
className="max-w-sm"
/>
</div>
{searchBy && (
<div className="flex flex-col items-start gap-y-2 py-4">
<Label htmlFor="email-filter" className="flex items-center gap-x-1">
<Search className="h-4 w-4" /> Search by {searchBy}
</Label>
<Input
name={`${searchBy}-filter`}
placeholder={`Search table by ${searchBy}`}
value={(table.getColumn(`${searchBy}`)?.getFilterValue() as string) ?? ""}
onChange={(event) =>
table.getColumn(`${searchBy}`)?.setFilterValue(event.target.value)
}
className="max-w-sm"
/>
</div>
)}
<div className="mb-2 rounded-md border">
<Table>
<TableHeader>
Expand Down
2 changes: 0 additions & 2 deletions core/pages/api/v0/[...ts-rest].ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,13 @@ import { compareAPIKeys, getBearerToken } from "~/lib/auth/api";
import { env } from "~/lib/env/env.mjs";
import {
_getPubType,
BadRequestError,
createPub,
deletePub,
generateSignedAssetUploadUrl,
getIntegrationInstanceConfig,
getIntegrationInstanceState,
getMembers,
getPub,
getPubType,
getSuggestedMembers,
setIntegrationInstanceConfig,
setIntegrationInstanceState,
Expand Down
1 change: 1 addition & 0 deletions packages/ui/src/icon.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export {
Activity,
Calendar,
BadgeCheck,
Check,
Expand Down

0 comments on commit 44171e9

Please sign in to comment.