Making sure deployment object is used everywhere to hide all underlying deployment properties.

This commit is contained in:
mike12345567 2020-12-01 16:51:17 +00:00
parent 364eb3c433
commit a381463c33
2 changed files with 30 additions and 20 deletions

View File

@ -1,13 +1,14 @@
const { getAppQuota } = require("./quota")
const env = require("../../../environment")
const newid = require("../../../db/newid")
/**
* This is used to pass around information about the deployment that is occurring
*/
class Deployment {
constructor(id, appId) {
this._id = id
constructor(appId, id = null) {
this.appId = appId
this._id = id || newid()
}
// purely so that we can do quota stuff outside the main deployment context
@ -30,6 +31,9 @@ class Deployment {
}
setVerification(verification) {
if (this.verification.quota) {
this.quota = this.verification.quota
}
this.verification = verification
}
@ -44,6 +48,18 @@ class Deployment {
}
}
fromJSON(json) {
if (json.verification) {
this.setVerification(json.verification)
}
if (json.quota) {
this.setQuota(json.quota)
}
if (json.status) {
this.setStatus(json.status, json.err)
}
}
getJSON() {
const obj = {
_id: this._id,
@ -56,8 +72,8 @@ class Deployment {
if (this.verification && this.verification.cfDistribution) {
obj.cfDistribution = this.verification.cfDistribution
}
if (this.verification && this.verification.quota) {
obj.quota = this.verification.quota
if (this.quota) {
obj.quota = this.quota
}
return obj
}

View File

@ -1,6 +1,6 @@
const CouchDB = require("pouchdb")
const PouchDB = require("../../../db")
const newid = require("../../../db/newid")
const env = require("../../../environment")
const deployment = env.SELF_HOSTED
? require("./selfDeploy")
@ -69,7 +69,7 @@ async function storeLocalDeploymentHistory(deployment) {
deploymentDoc = { _id: "_local/deployments", history: {} }
}
const deploymentId = deploymentJSON._id || newid()
const deploymentId = deploymentJSON._id
// first time deployment
if (!deploymentDoc.history[deploymentId])
@ -82,14 +82,12 @@ async function storeLocalDeploymentHistory(deployment) {
}
await db.put(deploymentDoc)
return {
_id: deploymentId,
...deploymentDoc.history[deploymentId],
}
deployment.fromJSON(deploymentDoc.history[deploymentId])
return deployment
}
async function deployApp({ appId, deploymentId }) {
const deployment = new Deployment(deploymentId, appId)
async function deployApp(deployment) {
const appId = deployment.getAppId()
try {
await deployment.init()
deployment.setVerification(await preDeployment(deployment))
@ -144,15 +142,11 @@ exports.deploymentProgress = async function(ctx) {
}
exports.deployApp = async function(ctx) {
const deployment = await storeLocalDeploymentHistory({
appId: ctx.user.appId,
status: DeploymentStatus.PENDING,
})
let deployment = new Deployment(ctx.user.appId)
deployment.setStatus(DeploymentStatus.PENDING)
deployment = await storeLocalDeploymentHistory(deployment)
await deployApp({
...ctx.user,
deploymentId: deployment._id,
})
await deployApp(deployment)
ctx.body = deployment
}