36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
const { docker } = require('../../../libs/docker')
|
|
const { execShellAsync } = require('../../../libs/common')
|
|
const ApplicationLog = require('../../../models/Logs/Application')
|
|
const Deployment = require('../../../models/Deployment')
|
|
|
|
module.exports = async function (fastify) {
|
|
fastify.post('/', async (request, reply) => {
|
|
const { organization, name, branch } = request.body
|
|
let found = false
|
|
try {
|
|
(await docker.engine.listServices()).filter(r => r.Spec.Labels.managedBy === 'coolify' && r.Spec.Labels.type === 'application').map(s => {
|
|
const running = JSON.parse(s.Spec.Labels.configuration)
|
|
if (running.repository.organization === organization &&
|
|
running.repository.name === name &&
|
|
running.repository.branch === branch) {
|
|
found = running
|
|
}
|
|
return null
|
|
})
|
|
if (found) {
|
|
const deploys = await Deployment.find({ organization, branch, name })
|
|
for (const deploy of deploys) {
|
|
await ApplicationLog.deleteMany({ deployId: deploy.deployId })
|
|
await Deployment.deleteMany({ deployId: deploy.deployId })
|
|
}
|
|
await execShellAsync(`docker stack rm ${found.build.container.name}`)
|
|
reply.code(200).send({ organization, name, branch })
|
|
} else {
|
|
reply.code(500).send({ message: 'Nothing to do.' })
|
|
}
|
|
} catch (error) {
|
|
reply.code(500).send({ message: 'Nothing to do.' })
|
|
}
|
|
})
|
|
}
|