using System; using System.Collections.Generic; using Luticate2.Auth.Auth.Business; using Luticate2.Auth.Auth.DataAccess; using Luticate2.Auth.Auth.DataAccess.Converters; using Luticate2.Auth.Auth.DataAccess.Models; using Luticate2.Auth.Auth.Dbo; using Luticate2.Auth.ConsoleSample.Commands; using Luticate2.Auth.Utils.Business.Converters; using Luticate2.Auth.Utils.Business.Utils; using Luticate2.Auth.Utils.Interfaces; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using NClap.Metadata; using NClap.Repl; namespace Luticate2.Auth.ConsoleSample { enum CommandsEnum { [Command(typeof(ListCommand), Description = "Lists Luticate2 items", LongName = "ls", ShortName = "l")] ListItems, [Command(typeof(CreateCommand), Description = "Creates Luticate2 items", LongName = "create", ShortName = "c")] CreateItems, [Command(typeof(ExitCommand), Description = "Exits the shell")] Exit } class Program { public static IServiceProvider ServiceProvider; static void Main(string[] args) { IServiceCollection services = new ServiceCollection(); services.AddLuObjectConverterDescriptors(); // DB Read services.AddSingleton, LuObjectsMetadataDboDescriptor>(); services.AddSingleton, LuGroupsDboDescriptor>(); // DB Write services.AddLuObjectConverters(); // DB read services.AddLuObjectConverterPoco(); services.AddLuObjectConverterPoco(); // DB Write // DB filter/orderBy services.AddSingleton(new LuConvertersTypeConverter(new Dictionary { {typeof(LuGroupDbo), typeof(LuGroups)} })); services.AddScoped(); services.AddLuOptions(); services.Configure(options => { options.ScriptOptions = options.ScriptOptions.AddReferences(typeof(Program).Assembly); }); services.AddDbContext(options => { options.UseNpgsql(@"Host=localhost;Database=luticate2;Username=dev;Password=dev"); options.UseInternalServiceProvider(new ServiceCollection() .AddEntityFrameworkNpgsql() .BuildServiceProvider()); }, ServiceLifetime.Transient); ServiceProvider = services.BuildServiceProvider(); var loop = new Loop(typeof(CommandsEnum)); loop.Execute(); } } }