diff --git a/JetHerald/ChatCommandRouter.cs b/JetHerald/ChatCommandRouter.cs index 63afa74..cd6533c 100644 --- a/JetHerald/ChatCommandRouter.cs +++ b/JetHerald/ChatCommandRouter.cs @@ -8,7 +8,7 @@ namespace JetHerald { public interface IChatCommand { - Task Execute(CommandString cmd, MessageEventArgs messageEventArgs); + string Execute(CommandString cmd, MessageEventArgs messageEventArgs); } public class ChatCommandRouter @@ -22,7 +22,7 @@ namespace JetHerald Username = username; } - public async Task Execute(object sender, MessageEventArgs args) + public string Execute(object sender, MessageEventArgs args) { var text = args.Message.Text; if (CommandString.TryParse(text, out var cmd)) @@ -37,7 +37,7 @@ namespace JetHerald try { Log.LogDebug($"Handling message via {commands[cmd.Command].GetType().Name}"); - return await commands[cmd.Command].Execute(cmd, args); + return commands[cmd.Command].Execute(cmd, args); } catch (Exception e) { diff --git a/JetHerald/Commands/CreateTopicCommand.cs b/JetHerald/Commands/CreateTopicCommand.cs index cb8d7e3..fbcc4aa 100644 --- a/JetHerald/Commands/CreateTopicCommand.cs +++ b/JetHerald/Commands/CreateTopicCommand.cs @@ -15,7 +15,7 @@ namespace JetHerald.Commands this.db = db; } - public async Task Execute(CommandString cmd, MessageEventArgs messageEventArgs) + public string Execute(CommandString cmd, MessageEventArgs messageEventArgs) { if (cmd.Parameters.Length < 1) return null; @@ -32,7 +32,7 @@ namespace JetHerald.Commands try { - var topic = await db.CreateTopic(msg.From.Id, name, descr); + var topic = db.CreateTopic(msg.From.Id, name, descr); return $"created {topic.Name}\n" + $"readToken\n{topic.ReadToken}\n" + $"writeToken\n{topic.WriteToken}\n" + diff --git a/JetHerald/Commands/DeleteTopicCommand.cs b/JetHerald/Commands/DeleteTopicCommand.cs index dd9275c..62ba7f5 100644 --- a/JetHerald/Commands/DeleteTopicCommand.cs +++ b/JetHerald/Commands/DeleteTopicCommand.cs @@ -13,7 +13,7 @@ namespace JetHerald.Commands this.db = db; } - public async Task Execute(CommandString cmd, MessageEventArgs messageEventArgs) + public string Execute(CommandString cmd, MessageEventArgs messageEventArgs) { if (cmd.Parameters.Length < 2) return null; @@ -26,7 +26,7 @@ namespace JetHerald.Commands string name = cmd.Parameters[0]; string adminToken = cmd.Parameters[1]; - var topic = await db.DeleteTopic(name, adminToken); + var topic = db.DeleteTopic(name, adminToken); return $"deleted {name} and all its subscriptions"; } } diff --git a/JetHerald/Commands/ListCommand.cs b/JetHerald/Commands/ListCommand.cs index b2f89dc..433cdf3 100644 --- a/JetHerald/Commands/ListCommand.cs +++ b/JetHerald/Commands/ListCommand.cs @@ -13,11 +13,11 @@ namespace JetHerald this.db = db; } - public async Task Execute(CommandString cmd, MessageEventArgs messageEventArgs) + public string Execute(CommandString cmd, MessageEventArgs messageEventArgs) { var msg = messageEventArgs.Message; var chatid = msg.Chat.Id; - var topics = await db.GetTopicsForChat(chatid); + var topics = db.GetTopicsForChat(chatid); return topics.Any() ? "Topics:\n" + string.Join("\n", topics.Select(GetTopicListing)) diff --git a/JetHerald/Commands/SubscribeCommand.cs b/JetHerald/Commands/SubscribeCommand.cs index 46b3dcd..290c851 100644 --- a/JetHerald/Commands/SubscribeCommand.cs +++ b/JetHerald/Commands/SubscribeCommand.cs @@ -12,7 +12,7 @@ namespace JetHerald this.db = db; } - public async Task Execute(CommandString cmd, MessageEventArgs args) + public string Execute(CommandString cmd, MessageEventArgs args) { if (cmd.Parameters.Length < 1) return null; @@ -20,7 +20,7 @@ namespace JetHerald var chatid = args.Message.Chat.Id; var token = cmd.Parameters[0]; - var topic = await db.GetTopic(token, chatid); + var topic = db.GetTopic(token, chatid); if (topic == null) return "topic not found"; @@ -30,7 +30,7 @@ namespace JetHerald return "token mismatch"; else { - await db.CreateSubscription(topic.TopicId, chatid); + db.CreateSubscription(topic.TopicId, chatid); return $"subscribed to {topic.Name}"; } } diff --git a/JetHerald/Commands/UnsubscribeCommand.cs b/JetHerald/Commands/UnsubscribeCommand.cs index 6ada499..d9bc3d4 100644 --- a/JetHerald/Commands/UnsubscribeCommand.cs +++ b/JetHerald/Commands/UnsubscribeCommand.cs @@ -12,7 +12,7 @@ namespace JetHerald this.db = db; } - public async Task Execute(CommandString cmd, MessageEventArgs messageEventArgs) + public string Execute(CommandString cmd, MessageEventArgs messageEventArgs) { if (cmd.Parameters.Length < 1) return null; @@ -20,7 +20,7 @@ namespace JetHerald var msg = messageEventArgs.Message; var chatid = msg.Chat.Id; var topicName = cmd.Parameters[0]; - int affected = await db.RemoveSubscription(topicName, chatid); + int affected = db.RemoveSubscription(topicName, chatid); if (affected >= 1) return $"unsubscribed from {topicName}"; else diff --git a/JetHerald/Controllers/EchoController.cs b/JetHerald/Controllers/EchoController.cs index e9a3015..27b112f 100644 --- a/JetHerald/Controllers/EchoController.cs +++ b/JetHerald/Controllers/EchoController.cs @@ -8,9 +8,9 @@ namespace JetHerald.Controllers public class EchoController : ControllerBase { [HttpGet] - public async Task Get(string msg) + public IActionResult Get(string msg) { - await Task.Delay(100); + Task.Delay(100); return Ok(msg); } diff --git a/JetHerald/Controllers/ReportController.cs b/JetHerald/Controllers/ReportController.cs index c129978..4d0db7c 100644 --- a/JetHerald/Controllers/ReportController.cs +++ b/JetHerald/Controllers/ReportController.cs @@ -19,15 +19,15 @@ namespace JetHerald.Controllers } [HttpPost] - public async Task Post([FromBody] ReportArgs args) + public IActionResult Post([FromBody] ReportArgs args) { - var t = await Db.GetTopic(args.Topic); + var t = Db.GetTopic(args.Topic); if (t == null) return new NotFoundResult(); else if (!t.WriteToken.Equals(args.WriteToken, StringComparison.OrdinalIgnoreCase)) return StatusCode(403); - await Herald.PublishMessage(t, args.Message); + Herald.PublishMessage(t, args.Message); return new OkResult(); } diff --git a/JetHerald/Db.cs b/JetHerald/Db.cs index fb1e206..02629f4 100644 --- a/JetHerald/Db.cs +++ b/JetHerald/Db.cs @@ -5,7 +5,6 @@ using Dapper; using Microsoft.Extensions.Options; using System; using System.Security.Cryptography; -using System.Transactions; namespace JetHerald { @@ -36,30 +35,30 @@ namespace JetHerald public long? ChatId { get; set; } } - public async Task DeleteTopic(string name, string adminToken) + public int DeleteTopic(string name, string adminToken) { using (var c = GetConnection()) { - return await c.ExecuteAsync("DELETE FROM topic WHERE Name = @name AND AdminToken = @adminToken", new { name, adminToken }); + return c.Execute("DELETE FROM topic WHERE Name = @name AND AdminToken = @adminToken", new { name, adminToken }); } } - public async Task GetTopic(string name) + public Topic GetTopic(string name) { using (var c = GetConnection()) - return await c.QuerySingleOrDefaultAsync("SELECT * FROM topic WHERE Name = @name", new { name }); + return c.QuerySingleOrDefault("SELECT * FROM topic WHERE Name = @name", new { name }); } - public async Task GetTopic(string token, long chatId) + public Topic GetTopic(string token, long chatId) { using (var c = GetConnection()) - return await c.QuerySingleOrDefaultAsync( + return c.QuerySingleOrDefault( "SELECT t.*, tc.ChatId " + "FROM topic t LEFT JOIN topic_chat tc ON t.TopicId = tc.TopicId AND tc.ChatId = @chatId " + "WHERE ReadToken = @token", new { token, chatId}); } - public async Task CreateTopic(long userId, string name, string descr) + public Topic CreateTopic(long userId, string name, string descr) { var t = new Topic { @@ -72,7 +71,7 @@ namespace JetHerald }; using (var c = GetConnection()) { - return await c.QuerySingleOrDefaultAsync( + return c.QuerySingleOrDefault( " INSERT INTO herald.topic " + " (TopicId, CreatorId, Name, Description, ReadToken, WriteToken, AdminToken) " + " VALUES " + @@ -81,28 +80,28 @@ namespace JetHerald t); } } - public async Task> GetChatIdsForTopic(uint topicid) + public IEnumerable GetChatIdsForTopic(uint topicid) { using (var c = GetConnection()) - return await c.QueryAsync("SELECT ChatId FROM topic_chat WHERE TopicId = @topicid", new { topicid }); + return c.Query("SELECT ChatId FROM topic_chat WHERE TopicId = @topicid", new { topicid }); } - public async Task> GetTopicsForChat(long chatid) + public IEnumerable GetTopicsForChat(long chatid) { using (var c = GetConnection()) - return await c.QueryAsync("SELECT t.* FROM topic_chat ct JOIN topic t on t.TopicId = ct.TopicId WHERE ct.ChatId = @chatid", new { chatid }); + return c.Query("SELECT t.* FROM topic_chat ct JOIN topic t on t.TopicId = ct.TopicId WHERE ct.ChatId = @chatid", new { chatid }); } - public async Task CreateSubscription(uint topicId, long chatId) + public void CreateSubscription(uint topicId, long chatId) { using (var c = GetConnection()) - await c.ExecuteAsync("INSERT INTO topic_chat (ChatId, TopicId ) VALUES (@chatId, @topicId)", new { topicId, chatId }); + c.Execute("INSERT INTO topic_chat (ChatId, TopicId ) VALUES (@chatId, @topicId)", new { topicId, chatId }); } - public async Task RemoveSubscription(string topicName, long chatId) + public int RemoveSubscription(string topicName, long chatId) { using (var c = GetConnection()) - return await c.ExecuteAsync( + return c.Execute( "DELETE tc " + "FROM topic_chat tc JOIN topic t ON tc.TopicId = t.TopicId " + "WHERE t.Name = @topicName AND tc.ChatId = @chatId;", diff --git a/JetHerald/JetHeraldBot.cs b/JetHerald/JetHeraldBot.cs index dfa4411..0edd802 100644 --- a/JetHerald/JetHeraldBot.cs +++ b/JetHerald/JetHeraldBot.cs @@ -53,15 +53,15 @@ namespace JetHerald Client.StartReceiving(); } - public async Task PublishMessage(Db.Topic topic, string message) + public void PublishMessage(Db.Topic topic, string message) { - var chatIds = await Db.GetChatIdsForTopic(topic.TopicId); + var chatIds = Db.GetChatIdsForTopic(topic.TopicId); var formatted = $"|{topic.Description}|:\n{message}"; foreach (var c in chatIds) - await Client.SendTextMessageAsync(c, formatted); + _ = Client.SendTextMessageAsync(c, formatted); } - async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs) + void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs) { var msg = messageEventArgs.Message; if (msg == null || msg.Type != MessageType.Text) @@ -69,9 +69,9 @@ namespace JetHerald try { - var reply = await Commands.Execute(sender, messageEventArgs); + var reply = Commands.Execute(sender, messageEventArgs); if (reply != null) - await Client.SendTextMessageAsync( + _ = Client.SendTextMessageAsync( chatId: msg.Chat.Id, text: reply, replyToMessageId: msg.MessageId);