| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | using System;
using Luticate2.Auth.Auth.Business;
using Luticate2.Auth.Auth.DataAccess;
using Luticate2.Auth.Auth.DataAccess.Models;
using Luticate2.Auth.Auth.Dbo;
using Luticate2.Auth.ConsoleSample.Commands;
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;
//        protected static void AddILuExpressionConverter<TTypeFrom, TTypeTo, TTypeImpl>(IServiceCollection services)
//            where TTypeImpl : class, ILuExpressionConverter<TTypeFrom, TTypeTo>
//        {
//            services.AddSingleton<ILuExpressionConverter<TTypeFrom, TTypeTo>, TTypeImpl>();
//            services.TryAddSingleton<ILuExpressionConverter<TTypeFrom>, TTypeImpl>();
//        }
        
        static void Main(string[] args)
        {
            IServiceCollection services = new ServiceCollection();
            
            services.AddScoped<LuGroupsBusiness>();
//            services.AddSingleton<ILuDboModelExpressionConverter<TestDbo1, TestModel1>, LuDMECTest1>();
//            AddILuExpressionConverter<LuGroupDbo, LuGroups, LuDMECGroupsToModel>(services);
//            AddILuExpressionConverter<string, string, LuExpressionConverterIdentity<string>>(services);
//            AddILuExpressionConverter<Guid, Guid, LuExpressionConverterIdentity<Guid>>(services);
//            AddILuExpressionConverter<bool, bool, LuExpressionConverterIdentity<bool>>(services);
//            services.AddSingleton<ILuFieldsExpressions<LuObjectsMetadataDbo, LuObjectsMetadata>, LuFieldsExpressionsLuMetadataDboLuMetadata>();
//            services.AddSingleton<ILuFieldsExpressions<LuGroupDbo, LuGroups>, LuFieldsExpressionsLuGroupDboLuGroups>();
//
//            services.AddSingleton<ILuFieldsExpressions<string, string>, LuFieldsExpressionsString>();
//            services.AddSingleton<ILuFieldsExpressions<int, int>, LuFieldsExpressions<int, int>>();
//            services.AddSingleton<ILuFieldsExpressions<Guid, Guid>, LuFieldsExpressions<Guid, Guid>>();
//
//            services.AddSingleton<ILuFieldsExpressions<DateTime, DateTime>, LuFieldsExpressions<DateTime, DateTime>>();
//            services.AddSingleton<ILuFieldsExpressions<DateTimeOffset, DateTimeOffset>, LuFieldsExpressions<DateTimeOffset, DateTimeOffset>>();
//            services.AddSingleton<ILuFieldsExpressions<DateTime, DateTimeOffset>, LuFieldsExpressions<DateTime, DateTimeOffset>>();
//            services.AddSingleton<ILuFieldsExpressions<DateTimeOffset, DateTime>, LuFieldsExpressions<DateTimeOffset, DateTime>>();
//
//            services.AddSingleton<ILuFieldsExpressions<DateTime?, DateTime?>, LuFieldsExpressions<DateTime?, DateTime?>>();
//            services.AddSingleton<ILuFieldsExpressions<DateTimeOffset?, DateTimeOffset?>, LuFieldsExpressions<DateTimeOffset?, DateTimeOffset?>>();
//            services.AddSingleton<ILuFieldsExpressions<DateTime?, DateTimeOffset?>, LuFieldsExpressions<DateTime?, DateTimeOffset?>>();
//            services.AddSingleton<ILuFieldsExpressions<DateTimeOffset?, DateTime?>, LuFieldsExpressions<DateTimeOffset?, DateTime?>>();
            services.AddDbContext<Luticate2DbContext>(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();
        }
    }
}
 |