62 lines
2 KiB
TypeScript
62 lines
2 KiB
TypeScript
import { updateServiceLabels } from '$lib/api/applications/configuration';
|
|
import { execShellAsync } from '$lib/api/common';
|
|
import { docker } from '$lib/api/docker';
|
|
import ApplicationLog from '$models/ApplicationLog';
|
|
import Configuration from '$models/Configuration';
|
|
import Deployment from '$models/Deployment';
|
|
import type { Request } from '@sveltejs/kit';
|
|
|
|
export async function post(request: Request) {
|
|
const { name, organization, branch, isPreviewDeploymentEnabled }: any = request.body || {};
|
|
if (name && organization && branch) {
|
|
const configuration = await Configuration.findOneAndUpdate({
|
|
'repository.name': name,
|
|
'repository.organization': organization,
|
|
'repository.branch': branch
|
|
}, { $set: { 'general.isPreviewDeploymentEnabled': isPreviewDeploymentEnabled, 'general.pullRequest': 0 } }, { new: true }).select('-_id -__v -createdAt -updatedAt')
|
|
if (!isPreviewDeploymentEnabled) {
|
|
const found = await Configuration.find({
|
|
'repository.name': name,
|
|
'repository.organization': organization,
|
|
'repository.branch': branch,
|
|
'general.pullRequest': { '$ne': 0 }
|
|
})
|
|
for (const prDeployment of found) {
|
|
await Configuration.findOneAndRemove({
|
|
'repository.name': name,
|
|
'repository.organization': organization,
|
|
'repository.branch': branch,
|
|
'publish.domain': prDeployment.publish.domain
|
|
})
|
|
const deploys = await Deployment.find({ organization, branch, name, domain: prDeployment.publish.domain });
|
|
for (const deploy of deploys) {
|
|
await ApplicationLog.deleteMany({ deployId: deploy.deployId });
|
|
await Deployment.deleteMany({ deployId: deploy.deployId });
|
|
}
|
|
await execShellAsync(`docker stack rm ${prDeployment.build.container.name}`);
|
|
}
|
|
return {
|
|
status: 200,
|
|
body: {
|
|
organization,
|
|
name,
|
|
branch
|
|
}
|
|
};
|
|
}
|
|
updateServiceLabels(configuration);
|
|
return {
|
|
status: 200,
|
|
body: {
|
|
success: true
|
|
}
|
|
};
|
|
|
|
}
|
|
return {
|
|
status: 500,
|
|
body: {
|
|
error: 'Cannot save.'
|
|
}
|
|
};
|
|
}
|