stabilized app

This commit is contained in:
Torsten Schulz
2025-07-21 14:59:43 +02:00
committed by Torsten (PC)
parent 51fd9fcd13
commit 1451225978
25 changed files with 3590 additions and 228 deletions

59
src/stockagemanager.h Normal file
View File

@@ -0,0 +1,59 @@
#pragma once
#include "worker.h"
#include <thread>
#include <atomic>
class StockageManager : public Worker {
public:
explicit StockageManager(ConnectionPool &pool, MessageBroker &broker);
~StockageManager() override;
protected:
void run() override;
private:
void addLocalStocks();
std::vector<int> getTownIds();
void addStockForTown(int townId);
std::atomic<bool> addStocksRunning{true};
std::thread addStocksThread;
static constexpr const char *QUERY_GET_TOWNS = R"(
SELECT fdr.id
from falukant_data.region fdr
join falukant_type.region ftr
on ftr.id = fdr.region_type_id
where ftr.label_tr = 'city'
)";
static constexpr const char *QUERY_INSERT_STOCK = R"(
INSERT INTO falukant_data.buyable_stock (region_id, stock_type_id, quantity)
SELECT
$1 AS region_id,
s.id AS stock_type_id,
GREATEST(1, ROUND(RANDOM() * 5 * COUNT(br.id))) AS quantity
FROM
falukant_data.branch AS br
CROSS JOIN
falukant_type.stock AS s
WHERE
br.region_id = $1
GROUP BY
s.id
ORDER BY
RANDOM()
LIMIT
GREATEST(
ROUND(RANDOM() * (SELECT COUNT(id) FROM falukant_type.stock)),
1
);
)";
static constexpr const char *QUERY_CLEANUP_STOCK = R"(
delete from falukant_data.buyable_stock
where quantity <= 0
)";
void cleanupBuyableSotck();
};