lasthourcloud/src/routes/api/v1/services/[serviceName].ts
2021-05-16 21:54:44 +02:00

52 lines
1.1 KiB
TypeScript

import { execShellAsync } from '$lib/api/common';
import { docker } from '$lib/api/docker';
import type { Request } from '@sveltejs/kit';
export async function get(request: Request) {
const { serviceName } = request.params;
try {
const service = (await docker.engine.listServices()).find(
(r) =>
r.Spec.Labels.managedBy === 'coolify' &&
r.Spec.Labels.type === 'service' &&
r.Spec.Labels.serviceName === serviceName &&
r.Spec.Name === `${serviceName}_${serviceName}`
);
if (service) {
const payload = {
config: JSON.parse(service.Spec.Labels.configuration)
};
return {
status: 200,
body: {
success: true,
...payload
}
};
} else {
return {
status: 200,
body: {
success: false,
showToast: false,
message: 'Not found'
}
};
}
} catch (error) {
return {
status: 500,
body: {
success: false,
error: error.message || error
}
};
}
}
export async function del(request: Request) {
const { serviceName } = request.params;
await execShellAsync(`docker stack rm ${serviceName}`);
return { status: 200, body: {} };
}