diff --git a/document/api-docs.yml b/document/api-docs.yml index d612fed..2dfe27f 100644 --- a/document/api-docs.yml +++ b/document/api-docs.yml @@ -198,6 +198,10 @@ components: createdAt: type: string format: date-time + domain: + type: string + protocol: + type: boolean Preset: type: object properties: @@ -211,9 +215,6 @@ components: PullSetting: type: object properties: - pullUrl: - type: string - example: 'https://demo.com' allowedOrigins: type: array items: @@ -598,6 +599,15 @@ paths: provider: type: string example: cloudfront + domain: + type: string + protocol: + type: string + required: + - domain + - name + - provider + - protocol responses: '201': description: CREATED diff --git a/src/functions/project/create.js b/src/functions/project/create.js index 80de432..b34afea 100644 --- a/src/functions/project/create.js +++ b/src/functions/project/create.js @@ -6,8 +6,13 @@ import projectService from 'services/project' import authorize from 'middlewares/authorize' import config from 'infrastructure/config' +//use url regex on this site: https://regexr.com/3au3g +const DOMAIN_REGEX = /^(?:[a-z\d](?:[a-z\d-]{0,63}[a-z\d])?\.)+[a-z\d][a-z\d-]{0,63}[a-z\d]$/i + const SCHEMA = joi.object().keys({ name: joi.string().max(50).trim().required(), + domain: joi.string().required().regex(DOMAIN_REGEX), + protocol: joi.string().valid([ 'http', 'https' ]).required(), provider: joi.any().valid('cloudfront').required() }) diff --git a/src/functions/project/pull-setting/replace.js b/src/functions/project/pull-setting/replace.js index c1f02cb..10e2671 100644 --- a/src/functions/project/pull-setting/replace.js +++ b/src/functions/project/pull-setting/replace.js @@ -7,7 +7,6 @@ import authorize from 'middlewares/authorize' import config from 'infrastructure/config' const SCHEMA = joi.object().keys({ - pullUrl: joi.string().allow('').trim(), allowedOrigins: joi.array().items( joi.string().trim() ), diff --git a/src/models/project.js b/src/models/project.js index 4163d3c..384c057 100644 --- a/src/models/project.js +++ b/src/models/project.js @@ -1,6 +1,14 @@ import mongoose, { register } from 'infrastructure/mongoose' const schema = mongoose.Schema({ + domain: { + type: String, + required: true + }, + protocol: { + type: String, + required: true + }, name: { type: String, required: true diff --git a/src/models/pull-setting.js b/src/models/pull-setting.js index 9650b45..a6642eb 100644 --- a/src/models/pull-setting.js +++ b/src/models/pull-setting.js @@ -10,9 +10,6 @@ const schema = mongoose.Schema({ name: String, value: String } ], - pullUrl: { - type: String - }, allowedOrigins: [ String ] }, { collection: 'pullSettings', diff --git a/src/services/project/project.js b/src/services/project/project.js index 37f8b54..0bf8d4b 100644 --- a/src/services/project/project.js +++ b/src/services/project/project.js @@ -32,14 +32,22 @@ const generateUniqueIdentifier = async (retry) => { return await generateUniqueIdentifier(retry - 1) } -const create = async ({ name, provider, owner }) => { +const create = async ({ + domain, + owner, + name, + protocol, + provider +}) => { const identifier = await generateUniqueIdentifier(10) const Project = await createProjectModel() const project = await new Project({ - name, + domain, identifier, + name, + protocol, status: 'INITIALIZING' }).save() diff --git a/src/transformers/project.js b/src/transformers/project.js index d1a0f04..ebe7d35 100644 --- a/src/transformers/project.js +++ b/src/transformers/project.js @@ -4,5 +4,7 @@ export default (project) => ({ status: project.status, isActive: project.isActive, isDeleted: project.isDeleted, - createdAt: project.createdAt + createdAt: project.createdAt, + domain: project.domain, + protocol: project.protocol }) diff --git a/src/transformers/pull-setting.js b/src/transformers/pull-setting.js index 43f5a4f..8e64be1 100644 --- a/src/transformers/pull-setting.js +++ b/src/transformers/pull-setting.js @@ -1,5 +1,4 @@ export default (pullSetting) => ({ - pullUrl: pullSetting.pullUrl, allowedOrigins: pullSetting.allowedOrigins, headers: pullSetting.headers.map( (header) => ({