From e1a1de80c5ef16879314e3791645b160c13a1999 Mon Sep 17 00:00:00 2001 From: Lachezar Lechev Date: Tue, 10 Aug 2021 11:56:03 +0300 Subject: [PATCH] schemas - createCampaign, Campaign & ChannelV5 --- routes/schemas.js | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/routes/schemas.js b/routes/schemas.js index d4c47419..d56e459f 100644 --- a/routes/schemas.js +++ b/routes/schemas.js @@ -79,6 +79,61 @@ const sentryValidatorMessage = Joi.object({ const targetingRules = Joi.array().items(Joi.object()) +const channelV5 = { + leader: Joi.string().required(), + follower: Joi.string().required(), + guardian: Joi.string().required(), + token: Joi.string().required(), + nonce: Joi.string() +} + +const createCampaign = { + channel: Joi.object(channelV5).required(), + creator: Joi.string().required(), + budget: numericString.required(), + validators: Joi.array() + .items( + Joi.object({ + id: Joi.string().required(), + feeAddr: Joi.string(), + url: Joi.string() + .uri({ + scheme: ['http', 'https'] + }) + .required(), + fee: numericString.required() + }) + ) + .required() + .length(2), + title: Joi.string() + .min(3) + .max(120) + .allow(''), + pricingBounds: Joi.object() + .keys() + .pattern( + /^(IMPRESSION|CLICK)$/, + Joi.object({ min: numericString.required(), max: numericString.required() }) + ), + eventSubmission: Joi.object({ allow: Joi.array().items(Joi.object()) }), + adUnits: Joi.array().items(Joi.object()), + targetingRules, + created: Joi.number(), + // UNIX timestamp; we're not using Jai.date() cause + // we want it to be stored in MongoDB as a number + activeFrom: Joi.number().integer(), + activeTo: Joi.number() + .integer() + .required() +} + +// Campaign consists of all the fields of the create campaign but with the randomly generate id +const campaign = { + id: Joi.string().required(), + ...createCampaign +} + module.exports = { createChannel: { id: Joi.string().required(), @@ -132,6 +187,9 @@ module.exports = { targetingRules }).required() }, + channelV5, + campaign, + createCampaign, validatorMessage: { messages: Joi.array().items(validatorMessage) },