Spike : QHttpServer + QtSql fonctionnels sur CM5 (routes /ping et /test-db)
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#include <QCoreApplication>
|
||||
#include <QHttpServer>
|
||||
#include <QTcpServer>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonDocument>
|
||||
#include <QDebug>
|
||||
|
||||
// ============================================================================
|
||||
// shipheart_api - SPIKE (Phase 1)
|
||||
// ----------------------------------------------------------------------------
|
||||
// Objectif unique de ce fichier : valider que QHttpServer + QtSql fonctionnent
|
||||
// bien ensemble sur le CM5, avant d'investir dans la conception des vrais
|
||||
// endpoints (cf synthèse, section 20). Pas de logique métier ici.
|
||||
// ============================================================================
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication app(argc, argv);
|
||||
|
||||
// --- Connexion MariaDB locale ---
|
||||
// TODO : remplacer par les vrais identifiants (mêmes que ceux utilisés par
|
||||
// shipheart_qt/shipheart_appli - cf BDD_USER_NAME/BDD_USER_PWD/BDD_BASE_NAME
|
||||
// dans shipheart.h du projet shipheart_qt).
|
||||
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
|
||||
db.setHostName("localhost");
|
||||
db.setUserName("koriolan");
|
||||
db.setPassword("Mp7Hgf12bV9zm");
|
||||
db.setDatabaseName("shipheart");
|
||||
|
||||
if (!db.open()) {
|
||||
qCritical() << "Connexion MariaDB échouée :" << db.lastError().text();
|
||||
return 1;
|
||||
}
|
||||
qInfo() << "Connexion MariaDB réussie.";
|
||||
|
||||
QHttpServer server;
|
||||
|
||||
// Route de test simple, sans BDD :
|
||||
server.route("/ping", []() {
|
||||
QJsonObject obj;
|
||||
obj["status"] = "ok";
|
||||
obj["message"] = "shipheart_api spike vivant";
|
||||
return QHttpServerResponse(QJsonDocument(obj).toJson());
|
||||
});
|
||||
|
||||
// Route de test avec une vraie requête MariaDB (nombre de circuits en base) :
|
||||
server.route("/test-db", []() {
|
||||
QSqlQuery query("SELECT COUNT(*) FROM TB_Circuits");
|
||||
QJsonObject obj;
|
||||
if (query.next()) {
|
||||
obj["nb_circuits"] = query.value(0).toInt();
|
||||
obj["status"] = "ok";
|
||||
} else {
|
||||
obj["status"] = "erreur";
|
||||
obj["message"] = query.lastError().text();
|
||||
}
|
||||
return QHttpServerResponse(QJsonDocument(obj).toJson());
|
||||
});
|
||||
|
||||
auto tcpServer = new QTcpServer();
|
||||
if (!tcpServer->listen(QHostAddress::Any, 8080) || !server.bind(tcpServer)) {
|
||||
qCritical() << "Impossible de démarrer le serveur HTTP sur le port 8080.";
|
||||
delete tcpServer;
|
||||
return 1;
|
||||
}
|
||||
qInfo() << "shipheart_api spike en écoute sur le port" << tcpServer->serverPort();
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
Reference in New Issue
Block a user