feat: Activity log for uploading attachments (closes #354) (#366)

* feat: Activity log for uploading attachments (closes #354)

* chore: fix coding style

* revert: upload spinning icon patch

* refactor: add fallbacks, extended card_activity
This commit is contained in:
Matt
2026-02-15 16:53:01 -04:00
committed by GitHub
parent 53f6ada4d3
commit 8a1189d011
8 changed files with 3543 additions and 30 deletions

View File

@@ -33,6 +33,7 @@ export const create = async (
fromDueDate?: Date;
toDueDate?: Date;
sourceBoardId?: number;
attachmentId?: number;
},
) => {
const [result] = await db
@@ -58,6 +59,7 @@ export const create = async (
fromDueDate: activityInput.fromDueDate,
toDueDate: activityInput.toDueDate,
sourceBoardId: activityInput.sourceBoardId,
attachmentId: activityInput.attachmentId,
})
.returning({ id: cardActivities.id });
@@ -83,6 +85,7 @@ export const bulkCreate = async (
fromDueDate?: Date;
toDueDate?: Date;
sourceBoardId?: number;
attachmentId?: number;
}[],
) => {
const activitiesWithPublicIds = activityInputs.map((activity) => ({
@@ -191,6 +194,13 @@ export const getPaginatedActivities = async (
deletedAt: true,
},
},
attachment: {
columns: {
publicId: true,
filename: true,
originalFilename: true,
},
},
},
orderBy: asc(cardActivities.createdAt), // required for merging and pagination
limit: limit + 1, // fetch one extra to check if there are more

View File

@@ -147,6 +147,10 @@ export const cardActivities = pgTable("card_activity", {
() => boards.id,
{ onDelete: "set null" },
),
attachmentId: bigint("attachmentId", { mode: "number" }).references(
() => cardAttachments.id,
{ onDelete: "cascade" },
),
}).enableRLS();
export const cardActivitiesRelations = relations(cardActivities, ({ one }) => ({
@@ -190,6 +194,11 @@ export const cardActivitiesRelations = relations(cardActivities, ({ one }) => ({
references: [comments.id],
relationName: "cardActivitiesComment",
}),
attachment: one(cardAttachments, {
fields: [cardActivities.attachmentId],
references: [cardAttachments.id],
relationName: "cardActivitiesAttachment",
}),
}));
export const cardsToLabels = pgTable(