Initial push of Plunk Next

This commit is contained in:
Dries Augustyns
2025-12-01 09:56:56 +01:00
parent 07cea20262
commit ff1876d580
566 changed files with 89036 additions and 28423 deletions
+41
View File
@@ -0,0 +1,41 @@
import type {Prisma} from '@plunk/db';
/**
* Shared utility for building Prisma update objects
* Eliminates the repetitive field-by-field update pattern
*/
/**
* Build a Prisma update input object from partial data
* Only includes fields that are defined (not undefined)
*/
export function buildUpdateData<T extends Record<string, unknown>>(
data: Partial<T>,
excludeFields: string[] = [],
): Record<string, unknown> {
const updateData: Record<string, unknown> = {};
for (const [key, value] of Object.entries(data)) {
if (value !== undefined && !excludeFields.includes(key)) {
updateData[key] = value;
}
}
return updateData;
}
/**
* Build email-related fields update data
* Common pattern for Campaign and Template updates
*/
export function buildEmailFieldsUpdate(data: {
name?: string;
description?: string;
subject?: string;
body?: string;
from?: string;
fromName?: string;
replyTo?: string;
}): Prisma.CampaignUpdateInput | Prisma.TemplateUpdateInput {
return buildUpdateData(data) as Prisma.CampaignUpdateInput | Prisma.TemplateUpdateInput;
}