Refactor SQL queries into a dedicated module
- Moved SQL queries from multiple worker files into `src/worker/sql.rs` for better organization and maintainability. - Updated references in `stockage_manager.rs`, `transport.rs`, `underground.rs`, `user_character.rs`, and `value_recalculation.rs` to use the new centralized SQL queries. - Improved code readability by replacing `.get(0)` with `.first()` for better clarity when retrieving the first row from query results. - Cleaned up unnecessary comments and consolidated related SQL queries.
This commit is contained in:
@@ -8,49 +8,17 @@ use std::sync::Arc;
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
use super::base::{BaseWorker, Worker, WorkerState};
|
||||
use crate::worker::sql::{
|
||||
QUERY_GET_TOWNS,
|
||||
QUERY_INSERT_STOCK,
|
||||
QUERY_CLEANUP_STOCK,
|
||||
QUERY_GET_REGION_USERS,
|
||||
};
|
||||
|
||||
pub struct StockageManager {
|
||||
base: BaseWorker,
|
||||
}
|
||||
|
||||
// SQL-Queries analog zu `stockagemanager.h`
|
||||
const QUERY_GET_TOWNS: &str = 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';
|
||||
"#;
|
||||
|
||||
const QUERY_INSERT_STOCK: &str = 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
|
||||
);
|
||||
"#;
|
||||
|
||||
const QUERY_CLEANUP_STOCK: &str = r#"
|
||||
DELETE FROM falukant_data.buyable_stock
|
||||
WHERE quantity <= 0;
|
||||
"#;
|
||||
|
||||
const QUERY_GET_REGION_USERS: &str = r#"
|
||||
SELECT c.user_id
|
||||
FROM falukant_data.character c
|
||||
WHERE c.region_id = $1
|
||||
AND c.user_id IS NOT NULL;
|
||||
"#;
|
||||
|
||||
impl StockageManager {
|
||||
pub fn new(pool: ConnectionPool, broker: MessageBroker) -> Self {
|
||||
Self {
|
||||
|
||||
Reference in New Issue
Block a user