import { z } from 'zod'; import { SUBSCRIPTION_ACTION, SUBSCRIPTION_TYPE } from '../constants'; import { SubscriptionFeatureSchema } from './subscription-feature.schema'; export const SubscriptionSchema = z.object({ uuid: z.string().uuid(), mainSubscriptionId: z.nullable(z.string().uuid()), description: z.string(), name: z.string(), price: z.number(), type: z.nativeEnum(SUBSCRIPTION_TYPE), discount: z.number(), period: z.number(), tokens: z.number(), action: z.nativeEnum(SUBSCRIPTION_ACTION).optional().nullable(), features: z.array(SubscriptionFeatureSchema), createdAt: z.date(), updatedAt: z.date(), }); export const SubscriptionWithActionSchema = z.intersection( SubscriptionSchema, z.object({ action: z.nativeEnum(SUBSCRIPTION_ACTION), }), ); export const SubscriptionWithSubTypesSchema = z.intersection( SubscriptionSchema, z.object({ subTypes: z.array(SubscriptionSchema), }), ); export const SubscriptionWithFeaturesSchema = SubscriptionSchema.extend({ features: z.array(SubscriptionFeatureSchema), });