feat!: add telegram auth and async refactor

- Removed "/schedule/update-download-url" endpoint, this mechanism was replaced by Yandex Cloud FaaS. Ура :)
- Improved schedule caching mechanism.
- Added Telegram WebApp authentication support.
- Reworked endpoints responses and errors mechanism.
- Refactored application state management.
- Make synchronous database operations, middlewares and extractors to asynchronous.
- Made user password field optional to support multiple auth methods.
- Renamed users table column "version" to "android_version" and made it nullable.
This commit is contained in:
2025-06-08 01:29:21 +04:00
parent 6a106a366c
commit e64011ba16
66 changed files with 1842 additions and 1243 deletions

28
src/state/env/telegram.rs vendored Normal file
View File

@@ -0,0 +1,28 @@
use std::env;
#[derive(Clone)]
pub struct TelegramEnvData {
pub bot_id: i64,
pub mini_app_host: String,
pub test_dc: bool,
}
impl Default for TelegramEnvData {
fn default() -> Self {
let _self = Self {
bot_id: env::var("TELEGRAM_BOT_ID")
.expect("TELEGRAM_BOT_ID must be set")
.parse()
.expect("TELEGRAM_BOT_ID must be integer"),
mini_app_host: env::var("TELEGRAM_MINI_APP_HOST")
.expect("TELEGRAM_MINI_APP_HOST must be set"),
test_dc: env::var("TELEGRAM_TEST_DC").is_ok_and(|v| v.eq("1") || v.eq("true")),
};
if _self.test_dc {
log::warn!("Using test data-center of telegram!");
}
_self
}
}