feat: Add type to campaign
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "campaigns" ADD COLUMN "type" "TemplateType" NOT NULL DEFAULT 'MARKETING';
|
||||
@@ -291,6 +291,9 @@ model Campaign {
|
||||
fromName String?
|
||||
replyTo String?
|
||||
|
||||
// Campaign type
|
||||
type TemplateType @default(MARKETING)
|
||||
|
||||
// Audience selection
|
||||
audienceType CampaignAudienceType @default(ALL)
|
||||
audienceCondition Json? // For FILTERED: manual filter condition with AND/OR logic (same structure as Segment.condition)
|
||||
|
||||
@@ -349,6 +349,7 @@ export const CampaignSchemas = {
|
||||
from: email,
|
||||
fromName: z.string().max(100).nullish(),
|
||||
replyTo: email.nullish(),
|
||||
type: z.nativeEnum(TemplateType).default(TemplateType.MARKETING),
|
||||
audienceType: z.nativeEnum(CampaignAudienceType),
|
||||
audienceCondition: filterConditionSchema.optional(),
|
||||
segmentId: uuid.optional(),
|
||||
@@ -364,6 +365,7 @@ export const CampaignSchemas = {
|
||||
from: z.string().optional(),
|
||||
fromName: z.string().max(100).nullish(),
|
||||
replyTo: z.string().nullish(),
|
||||
type: z.nativeEnum(TemplateType).optional(),
|
||||
audienceType: z.nativeEnum(CampaignAudienceType).optional(),
|
||||
audienceCondition: filterConditionSchema.optional(),
|
||||
segmentId: z.string().optional(),
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* Campaign service types
|
||||
*/
|
||||
|
||||
import type {CampaignAudienceType} from '@plunk/db';
|
||||
import type {CampaignAudienceType, TemplateType} from '@plunk/db';
|
||||
import type {FilterCondition} from '../segments/index.js';
|
||||
|
||||
/**
|
||||
@@ -16,6 +16,7 @@ export interface CreateCampaignData {
|
||||
from: string;
|
||||
fromName?: string | null;
|
||||
replyTo?: string | null;
|
||||
type?: TemplateType;
|
||||
audienceType: CampaignAudienceType;
|
||||
audienceCondition?: FilterCondition;
|
||||
segmentId?: string;
|
||||
@@ -32,6 +33,7 @@ export interface UpdateCampaignData {
|
||||
from?: string;
|
||||
fromName?: string | null;
|
||||
replyTo?: string | null;
|
||||
type?: TemplateType;
|
||||
audienceType?: CampaignAudienceType;
|
||||
audienceCondition?: FilterCondition;
|
||||
segmentId?: string;
|
||||
|
||||
Reference in New Issue
Block a user