1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-22 02:54:21 +00:00

Run "Optimize imports..." IDE feature

This commit is contained in:
Steffo 2024-08-19 07:38:04 +02:00
parent b476a77fad
commit 9337834797
Signed by: steffo
GPG key ID: 5ADA3868646C3FC0
35 changed files with 128 additions and 80 deletions

View file

@ -2,6 +2,7 @@ use anyhow::anyhow;
use diesel::migration::MigrationVersion; use diesel::migration::MigrationVersion;
use diesel::PgConnection; use diesel::PgConnection;
use diesel_migrations::{embed_migrations, EmbeddedMigrations, MigrationHarness}; use diesel_migrations::{embed_migrations, EmbeddedMigrations, MigrationHarness};
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;
const MIGRATIONS: EmbeddedMigrations = embed_migrations!(); const MIGRATIONS: EmbeddedMigrations = embed_migrations!();

View file

@ -1,3 +1,6 @@
pub use connect::connect;
pub use migrations::migrate;
pub mod schema; pub mod schema;
pub mod models; pub mod models;
pub mod query_prelude; pub mod query_prelude;
@ -6,5 +9,3 @@ mod migrations;
mod macros; mod macros;
mod connect; mod connect;
pub use connect::connect;
pub use migrations::migrate;

View file

@ -3,8 +3,10 @@ use diesel::{AsExpression, FromSqlRow, Identifiable, Insertable, PgConnection, Q
use diesel::deserialize::FromSql; use diesel::deserialize::FromSql;
use diesel::pg::{Pg, PgValue}; use diesel::pg::{Pg, PgValue};
use diesel::serialize::ToSql; use diesel::serialize::ToSql;
use crate::newtype_sql; use crate::newtype_sql;
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;
use super::super::schema::brooch_match; use super::super::schema::brooch_match;
#[derive(Debug, Clone, PartialEq, Identifiable, Queryable, Selectable, Insertable)] #[derive(Debug, Clone, PartialEq, Identifiable, Queryable, Selectable, Insertable)]

View file

@ -1,7 +1,9 @@
use diesel::{Identifiable, Insertable, Queryable, Selectable}; use diesel::{Identifiable, Insertable, Queryable, Selectable};
use diesel::pg::Pg; use diesel::pg::Pg;
use crate::interfaces::database::models::users::RoyalnetUserId; use crate::interfaces::database::models::users::RoyalnetUserId;
use crate::newtype_sql; use crate::newtype_sql;
use super::super::schema::diario; use super::super::schema::diario;
#[derive(Debug, Clone, PartialEq, Insertable)] #[derive(Debug, Clone, PartialEq, Insertable)]

View file

@ -1,6 +1,8 @@
use diesel::{Associations, Identifiable, Insertable, Queryable, Selectable}; use diesel::{Associations, Identifiable, Insertable, Queryable, Selectable};
use diesel::pg::Pg; use diesel::pg::Pg;
use crate::newtype_sql; use crate::newtype_sql;
use super::super::schema::discord; use super::super::schema::discord;
use super::users::{RoyalnetUser, RoyalnetUserId}; use super::users::{RoyalnetUser, RoyalnetUserId};

View file

@ -3,8 +3,10 @@ use diesel::{AsExpression, FromSqlRow, Identifiable, Insertable, PgConnection, Q
use diesel::deserialize::FromSql; use diesel::deserialize::FromSql;
use diesel::pg::{Pg, PgValue}; use diesel::pg::{Pg, PgValue};
use diesel::serialize::ToSql; use diesel::serialize::ToSql;
use crate::newtype_sql; use crate::newtype_sql;
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;
use super::super::schema::matchmaking_events; use super::super::schema::matchmaking_events;
#[derive(Debug, Clone, PartialEq, Identifiable, Queryable, Selectable, Insertable)] #[derive(Debug, Clone, PartialEq, Identifiable, Queryable, Selectable, Insertable)]
@ -19,8 +21,6 @@ pub struct MatchmakingEvent {
impl MatchmakingEvent { impl MatchmakingEvent {
/// Create a new [MatchmakingEvent]. /// Create a new [MatchmakingEvent].
pub fn create(database: &mut PgConnection, text: &str, starts_at: &chrono::DateTime<chrono::Local>) -> AnyResult<Self> { pub fn create(database: &mut PgConnection, text: &str, starts_at: &chrono::DateTime<chrono::Local>) -> AnyResult<Self> {
use crate::interfaces::database::query_prelude::*;
insert_into(matchmaking_events::table) insert_into(matchmaking_events::table)
.values(&( .values(&(
matchmaking_events::text.eq(text), matchmaking_events::text.eq(text),
@ -32,8 +32,6 @@ impl MatchmakingEvent {
/// Retrieve a [MatchmakingEvent] from the database, given its [MatchmakingId]. /// Retrieve a [MatchmakingEvent] from the database, given its [MatchmakingId].
pub fn get(database: &mut PgConnection, matchmaking_id: MatchmakingId) -> AnyResult<Self> { pub fn get(database: &mut PgConnection, matchmaking_id: MatchmakingId) -> AnyResult<Self> {
use crate::interfaces::database::query_prelude::*;
matchmaking_events::table matchmaking_events::table
.filter(matchmaking_events::id.eq(matchmaking_id.0)) .filter(matchmaking_events::id.eq(matchmaking_id.0))
.get_result::<Self>(database) .get_result::<Self>(database)

View file

@ -1,7 +1,9 @@
use diesel::{Associations, Identifiable, Insertable, Queryable, Selectable}; use diesel::{Associations, Identifiable, Insertable, Queryable, Selectable};
use diesel::pg::Pg; use diesel::pg::Pg;
use crate::interfaces::database::models::MatchmakingId; use crate::interfaces::database::models::MatchmakingId;
use crate::interfaces::database::models::telegram::{TelegramChatId, TelegramMessageId}; use crate::interfaces::database::models::telegram::{TelegramChatId, TelegramMessageId};
use super::matchmaking_events::MatchmakingEvent; use super::matchmaking_events::MatchmakingEvent;
use super::super::schema::matchmaking_messages_telegram; use super::super::schema::matchmaking_messages_telegram;
@ -20,20 +22,24 @@ pub struct MatchmakingMessageTelegram {
pub(crate) mod telegram_ext { pub(crate) mod telegram_ext {
use std::cmp::Ordering; use std::cmp::Ordering;
use std::str::FromStr; use std::str::FromStr;
use anyhow::Context; use anyhow::Context;
use chrono::DateTime; use chrono::DateTime;
use chrono::Local; use chrono::Local;
use matchmaking_messages_telegram::star;
use super::*;
use diesel::PgConnection; use diesel::PgConnection;
use teloxide::payloads::SendMessageSetters;
use teloxide::payloads::EditMessageTextSetters; use teloxide::payloads::EditMessageTextSetters;
use teloxide::payloads::SendMessageSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::ParseMode; use teloxide::types::ParseMode;
use matchmaking_messages_telegram::star;
use crate::interfaces::database::models::{MatchmakingChoice, MatchmakingId, MatchmakingReply, RoyalnetUser, TelegramUser}; use crate::interfaces::database::models::{MatchmakingChoice, MatchmakingId, MatchmakingReply, RoyalnetUser, TelegramUser};
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;
use crate::utils::telegram_string::TelegramEscape; use crate::utils::telegram_string::TelegramEscape;
use super::*;
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MatchmakingTelegramKeyboardCallback { pub enum MatchmakingTelegramKeyboardCallback {
Yes, Yes,

View file

@ -1,9 +1,12 @@
use std::ops::Add; use std::ops::Add;
use anyhow::Context; use anyhow::Context;
use diesel::{Associations, Identifiable, Insertable, PgConnection, Queryable, Selectable}; use diesel::{Associations, Identifiable, Insertable, PgConnection, Queryable, Selectable};
use diesel::pg::Pg; use diesel::pg::Pg;
use crate::interfaces::database::models::{MatchmakingId, RoyalnetUserId, TelegramUser}; use crate::interfaces::database::models::{MatchmakingId, RoyalnetUserId, TelegramUser};
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;
use super::matchmaking_choice::MatchmakingChoice; use super::matchmaking_choice::MatchmakingChoice;
use super::matchmaking_events::MatchmakingEvent; use super::matchmaking_events::MatchmakingEvent;
use super::super::schema::matchmaking_replies; use super::super::schema::matchmaking_replies;
@ -24,8 +27,7 @@ pub struct MatchmakingReply {
impl MatchmakingReply { impl MatchmakingReply {
pub fn get_all_telegram(database: &mut PgConnection, matchmaking_id: MatchmakingId) -> AnyResult<Vec<(Self, RoyalnetUser, TelegramUser)>> { pub fn get_all_telegram(database: &mut PgConnection, matchmaking_id: MatchmakingId) -> AnyResult<Vec<(Self, RoyalnetUser, TelegramUser)>> {
use crate::interfaces::database::query_prelude::*; use schema::{matchmaking_replies, telegram, users};
use schema::{matchmaking_replies, users, telegram};
matchmaking_replies::table matchmaking_replies::table
.filter(matchmaking_replies::matchmaking_id.eq(matchmaking_id)) .filter(matchmaking_replies::matchmaking_id.eq(matchmaking_id))
@ -36,7 +38,6 @@ impl MatchmakingReply {
} }
pub fn set(database: &mut PgConnection, matchmaking_id: MatchmakingId, user_id: RoyalnetUserId, choice: MatchmakingChoice) -> AnyResult<Self> { pub fn set(database: &mut PgConnection, matchmaking_id: MatchmakingId, user_id: RoyalnetUserId, choice: MatchmakingChoice) -> AnyResult<Self> {
use crate::interfaces::database::query_prelude::*;
use schema::matchmaking_replies; use schema::matchmaking_replies;
insert_into(matchmaking_replies::table) insert_into(matchmaking_replies::table)
@ -57,7 +58,6 @@ impl MatchmakingReply {
} }
pub fn add_late_minutes(database: &mut PgConnection, matchmaking_id: MatchmakingId, user_id: RoyalnetUserId, increase_by: i32) -> AnyResult<Self> { pub fn add_late_minutes(database: &mut PgConnection, matchmaking_id: MatchmakingId, user_id: RoyalnetUserId, increase_by: i32) -> AnyResult<Self> {
use crate::interfaces::database::query_prelude::*;
use schema::matchmaking_replies; use schema::matchmaking_replies;
insert_into(matchmaking_replies::table) insert_into(matchmaking_replies::table)

View file

@ -5,6 +5,17 @@ use std::io::Write;
use diesel::deserialize::FromSql; use diesel::deserialize::FromSql;
use diesel::serialize::ToSql; use diesel::serialize::ToSql;
pub use brooch_match::{BroochMatch, DotaMatchId};
pub use diario::{Diario, DiarioId};
pub use discord::DiscordUserId;
pub use matchmaking_choice::MatchmakingChoice;
pub use matchmaking_events::{MatchmakingEvent, MatchmakingId};
pub use matchmaking_messages_telegram::{MatchmakingMessageTelegram, telegram_ext::MatchmakingTelegramKeyboardCallback};
pub use matchmaking_replies::MatchmakingReply;
pub use steam::SteamId64;
pub use telegram::{TelegramChatId, TelegramMessageId, TelegramUser, TelegramUserId};
pub use users::{RoyalnetUser, RoyalnetUserId};
mod users; mod users;
mod telegram; mod telegram;
mod discord; mod discord;
@ -16,13 +27,3 @@ mod matchmaking_replies;
mod matchmaking_messages_telegram; mod matchmaking_messages_telegram;
mod matchmaking_choice; mod matchmaking_choice;
pub use users::{RoyalnetUser, RoyalnetUserId};
pub use telegram::{TelegramUser, TelegramChatId, TelegramMessageId, TelegramUserId};
pub use discord::{DiscordUser, DiscordUserId};
pub use steam::{SteamUser, SteamId64};
pub use brooch_match::{BroochMatch, DotaMatchId};
pub use diario::{Diario, DiarioId};
pub use matchmaking_events::{MatchmakingEvent, MatchmakingId};
pub use matchmaking_replies::MatchmakingReply;
pub use matchmaking_messages_telegram::{MatchmakingMessageTelegram, telegram_ext::MatchmakingTelegramKeyboardCallback};
pub use matchmaking_choice::MatchmakingChoice;

View file

@ -1,6 +1,8 @@
use diesel::{Associations, Identifiable, Insertable, Queryable, Selectable}; use diesel::{Associations, Identifiable, Insertable, Queryable, Selectable};
use diesel::pg::Pg; use diesel::pg::Pg;
use crate::newtype_sql; use crate::newtype_sql;
use super::super::schema::steam; use super::super::schema::steam;
use super::users::{RoyalnetUser, RoyalnetUserId}; use super::users::{RoyalnetUser, RoyalnetUserId};

View file

@ -1,6 +1,8 @@
use diesel::{Associations, Identifiable, Insertable, Queryable, Selectable}; use diesel::{Associations, Identifiable, Insertable, Queryable, Selectable};
use diesel::pg::Pg; use diesel::pg::Pg;
use crate::newtype_sql; use crate::newtype_sql;
use super::super::schema::telegram; use super::super::schema::telegram;
use super::users::{RoyalnetUser, RoyalnetUserId}; use super::users::{RoyalnetUser, RoyalnetUserId};

View file

@ -2,7 +2,9 @@ use diesel::{Identifiable, Insertable, Queryable, Selectable};
use diesel::deserialize::FromSql; use diesel::deserialize::FromSql;
use diesel::pg::Pg; use diesel::pg::Pg;
use diesel::serialize::ToSql; use diesel::serialize::ToSql;
use crate::newtype_sql; use crate::newtype_sql;
use super::super::schema::users; use super::super::schema::users;
#[derive(Debug, Clone, PartialEq, Identifiable, Queryable, Selectable, Insertable)] #[derive(Debug, Clone, PartialEq, Identifiable, Queryable, Selectable, Insertable)]

View file

@ -1,10 +1,9 @@
#![allow(unused_imports)] #![allow(unused_imports)]
pub use diesel::dsl::*; pub use diesel::dsl::*;
pub use diesel::query_dsl::*;
pub use diesel::upsert::*;
pub use diesel::OptionalExtension;
pub use diesel::ExpressionMethods; pub use diesel::ExpressionMethods;
pub use diesel::OptionalExtension;
pub use diesel::query_dsl::*;
pub use diesel::SelectableHelper; pub use diesel::SelectableHelper;
pub use super::schema; pub use diesel::upsert::*;
pub use super::models;

View file

@ -2,10 +2,22 @@
use graphql_client::GraphQLQuery; use graphql_client::GraphQLQuery;
use reqwest::Url; use reqwest::Url;
pub use super::Short;
pub use super::Long; pub use query::GameModeEnumType as GameMode;
pub use query::LobbyTypeEnum as LobbyType;
pub use query::MatchLaneType as Lane;
pub use query::MatchPlayerRoleType as Role;
pub use query::QueryGuild as Guild;
pub use query::QueryGuildMatches as Match;
pub use query::QueryGuildMatchesPlayers as Player;
pub use query::QueryGuildMatchesPlayersHero as Hero;
pub use query::QueryGuildMatchesPlayersStatsMatchPlayerBuffEvent as Buff;
pub use query::QueryGuildMatchesPlayersSteamAccount as Steam;
pub use super::Byte; pub use super::Byte;
pub use super::Long;
pub use super::QueryError as Error; pub use super::QueryError as Error;
pub use super::Short;
#[derive(graphql_client::GraphQLQuery)] #[derive(graphql_client::GraphQLQuery)]
#[graphql( #[graphql(
@ -18,17 +30,6 @@ struct Query;
pub type QueryResponse = graphql_client::Response<query::ResponseData>; pub type QueryResponse = graphql_client::Response<query::ResponseData>;
pub type QueryResult = Result<QueryResponse, Error>; pub type QueryResult = Result<QueryResponse, Error>;
pub use query::LobbyTypeEnum as LobbyType;
pub use query::GameModeEnumType as GameMode;
pub use query::MatchLaneType as Lane;
pub use query::MatchPlayerRoleType as Role;
pub use query::QueryGuild as Guild;
pub use query::QueryGuildMatches as Match;
pub use query::QueryGuildMatchesPlayers as Player;
pub use query::QueryGuildMatchesPlayersHero as Hero;
pub use query::QueryGuildMatchesPlayersSteamAccount as Steam;
pub use query::QueryGuildMatchesPlayersStatsMatchPlayerBuffEvent as Buff;
pub async fn query(client: &reqwest::Client, url: Url, guild_id: i64) -> QueryResult { pub async fn query(client: &reqwest::Client, url: Url, guild_id: i64) -> QueryResult {
log::debug!("Querying guild_matches of guild {guild_id}..."); log::debug!("Querying guild_matches of guild {guild_id}...");
log::trace!("Using client: {client:?}"); log::trace!("Using client: {client:?}");

View file

@ -1,20 +1,22 @@
use std::cmp::PartialEq; use std::cmp::PartialEq;
use std::time::Duration; use std::time::Duration;
use anyhow::Context; use anyhow::Context;
use chrono::{DateTime, Local, TimeDelta, TimeZone}; use chrono::{DateTime, Local, TimeDelta, TimeZone};
use diesel::{PgConnection}; use diesel::PgConnection;
use reqwest::Url; use reqwest::Url;
use teloxide::Bot; use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{ChatId, LinkPreviewOptions, Message}; use teloxide::types::{ChatId, LinkPreviewOptions, Message};
use tokio::time::sleep; use tokio::time::sleep;
use crate::interfaces::database; use crate::interfaces::database;
use crate::interfaces::database::models::{BroochMatch, DotaMatchId, TelegramUserId}; use crate::interfaces::database::models::{BroochMatch, DotaMatchId, TelegramUserId};
use crate::services::RoyalnetService;
use crate::utils::anyhow_result::AnyResult;
use crate::interfaces::stratz::{Byte, guild_matches, Short}; use crate::interfaces::stratz::{Byte, guild_matches, Short};
use crate::interfaces::stratz::guild_matches::{GameMode, Lane, LobbyType, Match, Player, Role, Steam}; use crate::interfaces::stratz::guild_matches::{GameMode, Lane, LobbyType, Match, Player, Role, Steam};
use crate::services::RoyalnetService;
use crate::utils::anyhow_result::AnyResult;
use crate::utils::telegram_string::TelegramEscape; use crate::utils::telegram_string::TelegramEscape;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -434,7 +436,7 @@ impl BroochService {
fn get_player_telegram_id(&self, database: &mut PgConnection, player_steam: Steam) -> AnyResult<Option<TelegramUserId>> { fn get_player_telegram_id(&self, database: &mut PgConnection, player_steam: Steam) -> AnyResult<Option<TelegramUserId>> {
use diesel::prelude::*; use diesel::prelude::*;
use diesel::{ExpressionMethods, QueryDsl}; use diesel::{ExpressionMethods, QueryDsl};
use crate::interfaces::database::schema::{steam, users, telegram}; use crate::interfaces::database::schema::{steam, telegram, users};
use crate::interfaces::database::models::TelegramUser; use crate::interfaces::database::models::TelegramUser;
log::trace!("Getting player's Steam name..."); log::trace!("Getting player's Steam name...");

View file

@ -1,5 +1,7 @@
use std::time::Duration; use std::time::Duration;
use tokio::time::sleep; use tokio::time::sleep;
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;
#[allow(dead_code)] #[allow(dead_code)]

View file

@ -1,11 +1,12 @@
use anyhow::{Context}; use anyhow::Context;
use rand::SeedableRng; use rand::SeedableRng;
use rand::seq::SliceRandom; use rand::seq::SliceRandom;
use teloxide::Bot; use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::prelude::{Message, Requester}; use teloxide::prelude::{Message, Requester};
use teloxide::types::ReplyParameters; use teloxide::types::ReplyParameters;
use crate::services::telegram::commands::{CommandResult};
use crate::services::telegram::commands::CommandResult;
// Cerchiamo di tenere bilanciate le tre colonne, o almeno le prime due. // Cerchiamo di tenere bilanciate le tre colonne, o almeno le prime due.
// Se avete un'idea ma metterebbe troppe opzioni in un'unica categoria, mettetela sotto commento. // Se avete un'idea ma metterebbe troppe opzioni in un'unica categoria, mettetela sotto commento.

View file

@ -1,12 +1,12 @@
use anyhow::Context; use anyhow::Context;
use reqwest::Url; use reqwest::Url;
use serde::Deserialize;
use teloxide::Bot; use teloxide::Bot;
use teloxide::payloads::SendPhotoSetters; use teloxide::payloads::SendPhotoSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{InputFile, Message, ReplyParameters}; use teloxide::types::{InputFile, Message, ReplyParameters};
use serde::Deserialize;
use super::{CommandResult};
use super::CommandResult;
const CAT_API_URL: &str = "https://api.thecatapi.com/v1/images/search"; const CAT_API_URL: &str = "https://api.thecatapi.com/v1/images/search";

View file

@ -1,5 +1,6 @@
use std::fmt::{Error, Write}; use std::fmt::{Error, Write};
use std::str::FromStr; use std::str::FromStr;
use anyhow::Context; use anyhow::Context;
use once_cell::sync::Lazy; use once_cell::sync::Lazy;
use regex::Regex; use regex::Regex;
@ -7,6 +8,7 @@ use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::prelude::Requester; use teloxide::prelude::Requester;
use teloxide::types::{Message, ParseMode, ReplyParameters}; use teloxide::types::{Message, ParseMode, ReplyParameters};
use crate::interfaces::database::models::Diario; use crate::interfaces::database::models::Diario;
use crate::interfaces::database::models::RoyalnetUser; use crate::interfaces::database::models::RoyalnetUser;
use crate::services::telegram::commands::CommandResult; use crate::services::telegram::commands::CommandResult;
@ -122,7 +124,6 @@ pub async fn handler(bot: &Bot, message: &Message, args: &DiarioArgs, database:
}; };
let entry = { let entry = {
use crate::interfaces::database::query_prelude::*;
use schema::diario; use schema::diario;
insert_into(diario::table) insert_into(diario::table)

View file

@ -1,12 +1,12 @@
use anyhow::Context; use anyhow::Context;
use reqwest::Url; use reqwest::Url;
use serde::Deserialize;
use teloxide::Bot; use teloxide::Bot;
use teloxide::payloads::SendPhotoSetters; use teloxide::payloads::SendPhotoSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{InputFile, Message, ReplyParameters}; use teloxide::types::{InputFile, Message, ReplyParameters};
use serde::Deserialize;
use super::{CommandResult};
use super::CommandResult;
const DOG_API_URL: &str = "https://dog.ceo/api/breeds/image/random"; const DOG_API_URL: &str = "https://dog.ceo/api/breeds/image/random";

View file

@ -3,7 +3,8 @@ use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{Message, ReplyParameters}; use teloxide::types::{Message, ReplyParameters};
use super::{CommandResult};
use super::CommandResult;
pub async fn handler(bot: &Bot, message: &Message, text: &str) -> CommandResult { pub async fn handler(bot: &Bot, message: &Message, text: &str) -> CommandResult {
let text = format!( let text = format!(

View file

@ -1,5 +1,6 @@
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};
use anyhow::{Context};
use anyhow::Context;
use chrono::Datelike; use chrono::Datelike;
use rand::SeedableRng; use rand::SeedableRng;
use rand::seq::SliceRandom; use rand::seq::SliceRandom;
@ -7,7 +8,8 @@ use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::prelude::{Message, Requester}; use teloxide::prelude::{Message, Requester};
use teloxide::types::ReplyParameters; use teloxide::types::ReplyParameters;
use crate::services::telegram::commands::{CommandResult};
use crate::services::telegram::commands::CommandResult;
// Tutte le fortune devono essere positive, o almeno neutrali, per poter essere aggiunte. // Tutte le fortune devono essere positive, o almeno neutrali, per poter essere aggiunte.
const FORTUNES: [&str; 164] = [ const FORTUNES: [&str; 164] = [

View file

@ -4,7 +4,8 @@ use teloxide::payloads::SendMessageSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{BotCommand, Message, ParseMode, ReplyParameters}; use teloxide::types::{BotCommand, Message, ParseMode, ReplyParameters};
use teloxide::utils::command::BotCommands; use teloxide::utils::command::BotCommands;
use super::{CommandResult};
use super::CommandResult;
pub async fn handler_all(bot: &Bot, message: &Message) -> CommandResult { pub async fn handler_all(bot: &Bot, message: &Message) -> CommandResult {
let descriptions = super::Command::descriptions().to_string(); let descriptions = super::Command::descriptions().to_string();

View file

@ -1,10 +1,12 @@
use std::str::FromStr; use std::str::FromStr;
use anyhow::Context; use anyhow::Context;
use once_cell::sync::Lazy; use once_cell::sync::Lazy;
use parse_datetime::parse_datetime_at_date; use parse_datetime::parse_datetime_at_date;
use regex::Regex; use regex::Regex;
use teloxide::Bot; use teloxide::Bot;
use teloxide::prelude::Message; use teloxide::prelude::Message;
use crate::interfaces::database::models::MatchmakingEvent; use crate::interfaces::database::models::MatchmakingEvent;
use crate::interfaces::database::models::MatchmakingMessageTelegram; use crate::interfaces::database::models::MatchmakingMessageTelegram;
use crate::services::telegram::commands::CommandResult; use crate::services::telegram::commands::CommandResult;

View file

@ -2,12 +2,14 @@
// https://github.com/teloxide/teloxide/blob/master/crates/teloxide/examples/dispatching_features.rs // https://github.com/teloxide/teloxide/blob/master/crates/teloxide/examples/dispatching_features.rs
use std::sync::Arc; use std::sync::Arc;
use anyhow::{Context, Error}; use anyhow::{Context, Error};
use teloxide::Bot; use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{Message, ReplyParameters}; use teloxide::types::{Message, ReplyParameters};
use teloxide::utils::command::BotCommands; use teloxide::utils::command::BotCommands;
use crate::services::telegram::dependencies::interface_database::DatabaseInterface; use crate::services::telegram::dependencies::interface_database::DatabaseInterface;
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;

View file

@ -1,16 +1,18 @@
use std::str::FromStr; use std::str::FromStr;
use anyhow::Context; use anyhow::Context;
use once_cell::sync::Lazy;
use parse_datetime::parse_datetime_at_date;
use regex::Regex;
use teloxide::Bot; use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{Message, ParseMode, ReplyParameters}; use teloxide::types::{Message, ParseMode, ReplyParameters};
use parse_datetime::parse_datetime_at_date;
use once_cell::sync::Lazy;
use regex::Regex;
use crate::utils::telegram_string::TelegramEscape; use crate::utils::telegram_string::TelegramEscape;
use crate::utils::time::sleep_chrono; use crate::utils::time::sleep_chrono;
use super::CommandResult;
use super::CommandResult;
#[derive(Debug, Clone, PartialEq, Eq)] #[derive(Debug, Clone, PartialEq, Eq)]
pub struct ReminderArgs { pub struct ReminderArgs {

View file

@ -1,12 +1,13 @@
use anyhow::{Context}; use anyhow::Context;
use rand::{Rng, SeedableRng}; use rand::{Rng, SeedableRng};
use regex::Regex;
use teloxide::Bot; use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::prelude::{Message, Requester}; use teloxide::prelude::{Message, Requester};
use crate::services::telegram::commands::{CommandResult};
use regex::Regex;
use teloxide::types::ReplyParameters; use teloxide::types::ReplyParameters;
use crate::services::telegram::commands::CommandResult;
pub async fn handler(bot: &Bot, message: &Message, roll: &str) -> CommandResult { pub async fn handler(bot: &Bot, message: &Message, roll: &str) -> CommandResult {
let mut rng = rand::rngs::SmallRng::from_entropy(); let mut rng = rand::rngs::SmallRng::from_entropy();

View file

@ -3,8 +3,8 @@ use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{Message, ReplyParameters}; use teloxide::types::{Message, ReplyParameters};
use super::{CommandResult};
use super::CommandResult;
pub async fn handler(bot: &Bot, message: &Message) -> CommandResult { pub async fn handler(bot: &Bot, message: &Message) -> CommandResult {
let author = message.from.as_ref() let author = message.from.as_ref()

View file

@ -3,9 +3,11 @@ use teloxide::Bot;
use teloxide::payloads::SendMessageSetters; use teloxide::payloads::SendMessageSetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::{Message, ParseMode, ReplyParameters}; use teloxide::types::{Message, ParseMode, ReplyParameters};
use crate::interfaces::database::models::RoyalnetUser; use crate::interfaces::database::models::RoyalnetUser;
use crate::services::telegram::dependencies::interface_database::DatabaseInterface; use crate::services::telegram::dependencies::interface_database::DatabaseInterface;
use crate::utils::telegram_string::TelegramEscape; use crate::utils::telegram_string::TelegramEscape;
use super::CommandResult; use super::CommandResult;
pub async fn handler(bot: &Bot, message: &Message, database: &DatabaseInterface) -> CommandResult { pub async fn handler(bot: &Bot, message: &Message, database: &DatabaseInterface) -> CommandResult {

View file

@ -1,5 +1,6 @@
use anyhow::Context; use anyhow::Context;
use diesel::PgConnection; use diesel::PgConnection;
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]

View file

@ -3,6 +3,7 @@ use teloxide::Bot;
use teloxide::payloads::AnswerCallbackQuerySetters; use teloxide::payloads::AnswerCallbackQuerySetters;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use teloxide::types::CallbackQuery; use teloxide::types::CallbackQuery;
use crate::interfaces::database::models::{MatchmakingChoice, MatchmakingId, MatchmakingMessageTelegram, MatchmakingReply, MatchmakingTelegramKeyboardCallback, RoyalnetUser}; use crate::interfaces::database::models::{MatchmakingChoice, MatchmakingId, MatchmakingMessageTelegram, MatchmakingReply, MatchmakingTelegramKeyboardCallback, RoyalnetUser};
use crate::services::telegram::dependencies::interface_database::DatabaseInterface; use crate::services::telegram::dependencies::interface_database::DatabaseInterface;
use crate::services::telegram::keyboard_callbacks::KeyboardCallbackResult; use crate::services::telegram::keyboard_callbacks::KeyboardCallbackResult;

View file

@ -1,15 +1,17 @@
mod matchmaking;
use std::str::FromStr; use std::str::FromStr;
use std::sync::Arc; use std::sync::Arc;
use anyhow::Context; use anyhow::Context;
use teloxide::Bot; use teloxide::Bot;
use teloxide::payloads::AnswerCallbackQuerySetters; use teloxide::payloads::AnswerCallbackQuerySetters;
use teloxide::prelude::CallbackQuery; use teloxide::prelude::CallbackQuery;
use teloxide::requests::Requester; use teloxide::requests::Requester;
use crate::interfaces::database::models::{MatchmakingId, MatchmakingTelegramKeyboardCallback}; use crate::interfaces::database::models::{MatchmakingId, MatchmakingTelegramKeyboardCallback};
use crate::services::telegram::dependencies::interface_database::DatabaseInterface; use crate::services::telegram::dependencies::interface_database::DatabaseInterface;
mod matchmaking;
#[derive(Debug, Clone, PartialEq, Eq)] #[derive(Debug, Clone, PartialEq, Eq)]
pub enum KeyboardCallback { pub enum KeyboardCallback {
Matchmaking(MatchmakingId, MatchmakingTelegramKeyboardCallback), Matchmaking(MatchmakingId, MatchmakingTelegramKeyboardCallback),

View file

@ -1,22 +1,26 @@
use std::sync::Arc;
use anyhow::Context;
use regex::Regex;
use teloxide::dispatching::DefaultKey;
use teloxide::dptree::entry;
use teloxide::prelude::*;
use teloxide::types::{Me, ParseMode};
use commands::Command;
use dependencies::interface_database::DatabaseInterface;
use keyboard_callbacks::KeyboardCallback;
use crate::utils::anyhow_result::{AnyError, AnyResult};
use crate::utils::telegram_string::TelegramEscape;
use super::RoyalnetService;
mod commands; mod commands;
mod dependencies; mod dependencies;
mod keyboard_callbacks; mod keyboard_callbacks;
mod utils; mod utils;
use std::sync::Arc;
use anyhow::Context;
use teloxide::prelude::*;
use teloxide::types::{Me, ParseMode};
use regex::Regex;
use teloxide::dispatching::DefaultKey;
use teloxide::dptree::entry;
use commands::Command;
use dependencies::interface_database::DatabaseInterface;
use keyboard_callbacks::KeyboardCallback;
use crate::utils::anyhow_result::{AnyError, AnyResult};
use crate::utils::telegram_string::TelegramEscape;
use super::RoyalnetService;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct TelegramService { pub struct TelegramService {
database_url: String, database_url: String,

View file

@ -1,6 +1,7 @@
use anyhow::Context; use anyhow::Context;
use diesel::PgConnection; use diesel::PgConnection;
use teloxide::types::UserId; use teloxide::types::UserId;
use crate::interfaces::database::models::RoyalnetUser; use crate::interfaces::database::models::RoyalnetUser;
use crate::utils::anyhow_result::AnyResult; use crate::utils::anyhow_result::AnyResult;

View file

@ -1 +1,2 @@
pub use anyhow::Result as AnyResult; pub use anyhow::Result as AnyResult;