#ifndef HOUSEWORKER_H #define HOUSEWORKER_H #include "worker.h" class HouseWorker : public Worker { public: HouseWorker(ConnectionPool &pool, MessageBroker &broker); ~HouseWorker() override; protected: void run() override; private: void performTask(); void performHouseStateChange(); static constexpr const char *QUERY_GET_NEW_HOUSE_DATA = R"( SELECT h.id AS house_id FROM falukant_type.house AS h WHERE random() < 0.0001 and "label_tr" != 'under_bridge'; )"; static constexpr const char *QUERY_ADD_NEW_BUYABLE_HOUSE = R"( insert into falukant_data.buyable_house (house_type_id) values ($1); )"; static constexpr const char *QUERY_UPDATE_BUYABLE_HOUSE_STATE = R"( update falukant_data.buyable_house set roof_condition = round(roof_condition - random() * (3 + 0 * id)), floor_condition = round(floor_condition - random() * (3 + 0 * id)), wall_condition = round(wall_condition - random() * (3 + 0 * id)), window_condition = round(wall_condition - random() * (3 + 0 * id)) )"; static constexpr const char *QUERY_UPDATE_USER_HOUSE_STATE = R"( update falukant_data.user_house set roof_condition = round(roof_condition - random() * (3 + 0 * id)), floor_condition = round(floor_condition - random() * (3 + 0 * id)), wall_condition = round(wall_condition - random() * (3 + 0 * id)), window_condition = round(window_condition - random() * (3 + 0 * id)) where house_type_id not in ( select id from falukant_type.house h where h.label_tr = 'under_bridge' ) )"; }; #endif // HOUSEWORKER_H