73 lines
2.5 KiB
C++
73 lines
2.5 KiB
C++
#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();
|
|
}
|