1#include "controllerdepartmentemployees.h"
2#include "httprequest.h"
4#include <QRegularExpression>
10ControllerDepartmentEmployees::ControllerDepartmentEmployees(HobrasoftHttpd::HttpConnection *parent)
15 static const QRegularExpression re(
"^/api/v1/departments/(\\d+)/employees(?:/(\\d+))?/?$");
16 auto m = re.match(
request->path());
18 serviceError(
request, response, 405,
"bad-request",
"Invalid request");
22 int department = m.captured(1).toInt();
23 int employee = m.captured(2).isEmpty() ? -1 : m.captured(2).toInt();
25 if (
request->method() ==
"GET") {
26 serviceGet(
request, response, department, employee);
30 if (
request->method() ==
"PUT") {
34 serviceError(
request, response, 400,
"bad-request",
"Could not parse JSON data");
37 servicePut(
request, response, department, data);
41 if (
request->method() ==
"DELETE") {
43 serviceError(
request, response, 400,
"bad-request",
"Employee id required");
46 serviceDelete(
request, response, department, employee);
50 serviceError(
request, response, 405,
"bad-request",
"Invalid request");
53void ControllerDepartmentEmployees::serviceGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int department,
int employee)
56 filter.department = department;
57 filter.employee = employee > 0 ? employee : 0;
58 auto list = db()->departmentHasMember(filter);
61 serviceError(
request, response, 404,
"not-found",
"NotFound");
70void ControllerDepartmentEmployees::servicePut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int department,
const QVariantMap &data)
73 d[
"department"] = department;
74 db()->save(Dbt::DepartmentHasMember::fromMap(d));
78void ControllerDepartmentEmployees::serviceDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int department,
int employee)
80 db()->remove(Dbt::DepartmentHasMember(department, employee));
Virtuální třída pro vyřizování unifikovaných Http požadavků na server API.
virtual void serviceOK(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data=QVariant())
Pošle odpověď 200 OK.
HobrasoftHttpd::HttpRequest * request() const
Vrací ukazatel na aktuální request.
void service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) Q_DECL_OVERRIDE
Obsluha požadavku.
static QVariant data(const QByteArray &json)
Converts json to data.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.