Refine workspaces and event publishing; harden uploads and email delivery

This commit is contained in:
2026-09-09 15:44:00 -04:00
parent f5702caaea
commit 574f29a68e
93 changed files with 2885 additions and 535 deletions
+13 -3
View File
@@ -1,4 +1,5 @@
import { auditEvents, type Database } from "@album/database";
import { auditEvents, user, guests, type Database } from "@album/database";
import { and, eq } from "drizzle-orm";
import { getDb } from "@album/database";
export async function writeAudit(
@@ -11,8 +12,17 @@ export async function writeAudit(
subjectId: string;
metadata?: Record<string, string | number | boolean | null>;
},
db: Database = getDb(),
db: Pick<Database, "insert" | "select"> = getDb(),
) {
const [actor] = input.actorUserId ? await db.select({ name: user.name }).from(user).where(eq(user.id, input.actorUserId)).limit(1) : [];
let subjectLabel = `${input.subjectType} ${input.subjectId}`;
if (input.subjectType === "user") {
const [subject] = await db.select({ name: user.name }).from(user).where(eq(user.id, input.subjectId)).limit(1);
if (subject) subjectLabel = subject.name;
} else if (input.subjectType === "guest" && input.eventId) {
const [subject] = await db.select({ name: guests.displayName }).from(guests).where(and(eq(guests.eventId, input.eventId), eq(guests.id, input.subjectId))).limit(1);
if (subject) subjectLabel = subject.name ?? "Anonymous guest";
}
await db.insert(auditEvents).values({
groupId: input.groupId ?? null,
eventId: input.eventId ?? null,
@@ -20,6 +30,6 @@ export async function writeAudit(
action: input.action,
subjectType: input.subjectType,
subjectId: input.subjectId,
metadata: input.metadata ?? {},
metadata: { ...input.metadata, subjectLabel, actorName: actor?.name ?? "System" },
});
}