Initial push of Plunk Next
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user