From 8d0a612238ec3be2fc56d28a18512da1bc189ec8 Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Sun, 11 Apr 2021 02:15:13 -0400 Subject: [PATCH] added boostrapper --- .gitignore | 1 + src/BSLManager/BSLManager.csproj | 9 +++++ src/BSLManager/Bootstrapper.cs | 62 ++++++++++++++++++++++++++++++++ src/BSLManager/Program.cs | 54 +++++++++++++++++++++++----- 4 files changed, 117 insertions(+), 9 deletions(-) create mode 100644 src/BSLManager/Bootstrapper.cs diff --git a/.gitignore b/.gitignore index 086c047..a6584fc 100644 --- a/.gitignore +++ b/.gitignore @@ -351,3 +351,4 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ +/src/BSLManager/Properties/launchSettings.json diff --git a/src/BSLManager/BSLManager.csproj b/src/BSLManager/BSLManager.csproj index fafc29d..28c8e18 100644 --- a/src/BSLManager/BSLManager.csproj +++ b/src/BSLManager/BSLManager.csproj @@ -6,7 +6,16 @@ + + + + + + + + + diff --git a/src/BSLManager/Bootstrapper.cs b/src/BSLManager/Bootstrapper.cs new file mode 100644 index 0000000..f450665 --- /dev/null +++ b/src/BSLManager/Bootstrapper.cs @@ -0,0 +1,62 @@ +using System; +using BirdsiteLive.Common.Settings; +using BirdsiteLive.Common.Structs; +using BirdsiteLive.DAL.Contracts; +using BirdsiteLive.DAL.Postgres.DataAccessLayers; +using BirdsiteLive.DAL.Postgres.Settings; +using Lamar; + +namespace BSLManager +{ + public class Bootstrapper + { + private readonly DbSettings _settings; + + #region Ctor + public Bootstrapper(DbSettings settings) + { + _settings = settings; + } + #endregion + + public Container Init() + { + var container = new Container(x => + { + if (string.Equals(_settings.Type, DbTypes.Postgres, StringComparison.OrdinalIgnoreCase)) + { + var connString = $"Host={_settings.Host};Username={_settings.User};Password={_settings.Password};Database={_settings.Name}"; + var postgresSettings = new PostgresSettings + { + ConnString = connString + }; + x.For().Use(x => postgresSettings); + + x.For().Use().Singleton(); + x.For().Use().Singleton(); + x.For().Use().Singleton(); + } + else + { + throw new NotImplementedException($"{_settings.Type} is not supported"); + } + + x.Scan(_ => + { + //_.Assembly("BirdsiteLive.Twitter"); + //_.Assembly("BirdsiteLive.Domain"); + _.Assembly("BirdsiteLive.DAL"); + _.Assembly("BirdsiteLive.DAL.Postgres"); + //_.Assembly("BirdsiteLive.Moderation"); + //_.Assembly("BirdsiteLive.Pipeline"); + _.TheCallingAssembly(); + + _.WithDefaultConventions(); + + _.LookForRegistries(); + }); + }); + return container; + } + } +} \ No newline at end of file diff --git a/src/BSLManager/Program.cs b/src/BSLManager/Program.cs index ff1a8bd..2f90e8d 100644 --- a/src/BSLManager/Program.cs +++ b/src/BSLManager/Program.cs @@ -1,7 +1,12 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Reflection; using System.Text; +using System.Threading.Tasks; +using BirdsiteLive.Common.Settings; +using BirdsiteLive.DAL.Contracts; +using Microsoft.Extensions.Configuration; using NStack; using Terminal.Gui; @@ -9,10 +14,35 @@ namespace BSLManager { class Program { - static void Main(string[] args) + static async Task Main(string[] args) { Console.OutputEncoding = Encoding.Default; + var settings = GetSettings(); + + var bootstrapper = new Bootstrapper(settings); + var container = bootstrapper.Init(); + + var followersDal = container.GetInstance(); + + await LaunchAppAsync(followersDal); + } + + private static DbSettings GetSettings() + { + var builder = new ConfigurationBuilder() + .AddEnvironmentVariables(); + var configuration = builder.Build(); + + var dbSettings = configuration.GetSection("Db").Get(); + return dbSettings; + } + + private static async Task LaunchAppAsync(IFollowersDal followersDal) + { + var followers = await followersDal.GetAllFollowersAsync(); + var orderedFollowers = followers.OrderByDescending(x => x.Followings.Count).ToList(); + Application.Init(); var top = Application.Top; @@ -30,9 +60,14 @@ namespace BSLManager top.Add(win); // Creates a menubar, the item "New" has a help menu. - var menu = new MenuBar(new MenuBarItem[] { - new MenuBarItem ("_File", new MenuItem [] { - new MenuItem ("_Quit", "", () => { if (Quit ()) top.Running = false; }) + var menu = new MenuBar(new MenuBarItem[] + { + new MenuBarItem("_File", new MenuItem[] + { + new MenuItem("_Quit", "", () => + { + if (Quit()) top.Running = false; + }) }), //new MenuBarItem ("_Edit", new MenuItem [] { // new MenuItem ("_Copy", "", null), @@ -47,11 +82,11 @@ namespace BSLManager var n = MessageBox.Query(50, 7, "Quit BSL Manager", "Are you sure you want to quit?", "Yes", "No"); return n == 0; } - + var listData = new List(); - for (var i = 0; i < 100; i++) + foreach (var follower in orderedFollowers) { - listData.Add($"@User{i}@Instance.tld {i*3}"); + listData.Add($"@{follower.Acct}@{follower.Host} {follower.Followings.Count}"); } var list = new ListView(listData) @@ -102,7 +137,8 @@ namespace BSLManager if (okpressed) { listData.RemoveAt(el); - typeof(Application).GetMethod("TerminalResized", BindingFlags.Static | BindingFlags.NonPublic).Invoke(null, null); + typeof(Application).GetMethod("TerminalResized", BindingFlags.Static | BindingFlags.NonPublic) + .Invoke(null, null); } } }; @@ -114,6 +150,6 @@ namespace BSLManager ); Application.Run(); - } + } } }