// @ts-check
/**
* @import {ExpressRequestAuthorized, ExpressResponse} from '../../types.js'
*/
import { sendOk, sendErrorFrom } from '../../utils/apiEnvelope.js';
import * as service from './service.js';
import * as registration from '../registration/service.js';
/**
* GET /api/runners
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
*/
export const listRunners = async (req, res) => {
try {
sendOk(res, await service.listRunners(req));
} catch (e) {
sendErrorFrom(res, e);
}
};
/**
* GET /api/runners/:UID
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
*/
export const getRunner = async (req, res) => {
try {
const result = await service.getRunner(req, req.params.UID);
sendOk(res, result.result);
} catch (e) {
sendErrorFrom(res, e);
}
};
/**
* POST /api/runners/:UID/revoke
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
*/
export const revokeRunner = async (req, res) => {
try {
const result = await service.revokeRunner(req, req.params.UID);
sendOk(res, result.result);
} catch (e) {
sendErrorFrom(res, e);
}
};
/**
* POST /api/runners/:UID/drain
*/
export const drainRunner = async (req, res) => {
try {
const result = await service.drainRunner(req, req.params.UID);
sendOk(res, result.result);
} catch (e) {
sendErrorFrom(res, e);
}
};
/**
* DELETE /api/runners/:UID
* Hard-delete a runner (cleanup; `revoke` is the soft path).
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
*/
export const deleteRunner = async (req, res) => {
try {
const result = await service.deleteRunner(req, req.params.UID);
sendOk(res, result.result);
} catch (e) {
sendErrorFrom(res, e);
}
};
/**
* GET /api/runners/registrations
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
*/
export const createRegistration = async (req, res) => {
try {
const result = await registration.createRegistration(req);
sendOk(res, result.result);
} catch (e) {
sendErrorFrom(res, e);
}
};
/**
* POST /api/runners/registrations/:code/approve
* @param {ExpressRequestAuthorized} req
* @param {ExpressResponse} res
*/
export const approveRegistration = async (req, res) => {
try {
const result = await registration.approveRegistration(req, req.params.code);
sendOk(res, result.result);
} catch (e) {
sendErrorFrom(res, e);
}
};