export class OrderCreationValidator {
validateParams (params: OrderCreationParams) {
this.validateAccountId(params)
this.validateSku(params)
}
private validateAccountId(params: OrderCreationParams) {
const accountId = normalizeString(params.accountId)
if (accountId == '') {
throw new ParameterInvalidError('accountId cannot be blank')
}
}
private validateSku(params: OrderCreationParams) {
const { sku, externalSku } = params
if (sku) {
validateStringLength('sku', sku, 30)
} else if (externalSku) {
validateStringLength('externalSku', externalSku, 100)
} else {
throw new ParameterInvalidError('sku or externalSku cannot be blank, at least one is required')
}
}
}
const validator = new OrderCreationValidator()
export interface OrderCreationValidator {
validateParams(params: OrderCreationParams): boolean
}
export function OrderCreationValidator() {
function validateParams(params: OrderCreationParams) {
validateAccountId(params)
validateSku(params)
}
const validateAccountId = function(params: OrderCreationParams) {
const accountId = normalizeString(params.accountId)
if (accountId == '') {
throw new ParameterInvalidError('accountId cannot be blank')
}
}
const validateSku = function(params: OrderCreationParams) {
const { sku, externalSku } = params
if (sku) {
validateStringLength('sku', sku, 30)
} else if (externalSku) {
validateStringLength('externalSku', externalSku, 100)
} else {
throw new ParameterInvalidError('sku or externalSku cannot be blank, at least one is required')
}
}
return {
validateParams,
}
}
const validator = OrderCreationValidator()