Esempio n. 1
0
        public static ISqlMapper Create(CreateSmartSqlMapperOptions options)
        {
            SmartSqlConfigOptions smartSqlConfigOptions = new SmartSqlConfigOptions
            {
                Settings = new SmartSql.Configuration.Settings
                {
                    ParameterPrefix     = "$",
                    IgnoreParameterCase = true,
                    IsCacheEnabled      = false,
                },
                Database = new Database
                {
                    DbProvider = new SmartSql.DataSource.DbProvider {
                        Name = options.ProviderName
                    },
                    Write = options.DataSource,
                    Reads = new List <DataSource>()
                },
                SmartSqlMaps = new List <SqlMapSource>(),
                TypeHandlers = new List <TypeHandler>
                {
                    new TypeHandler
                    {
                        Name = "Json", Type = "SmartSql.TypeHandler.JsonTypeHandler,SmartSql.TypeHandler"
                    },
                    new TypeHandler
                    {
                        Name = "PGJson",
                        Type = "SmartSql.TypeHandler.PostgreSql.JsonTypeHandler,SmartSql.TypeHandler.PostgreSql"
                    },
                    new TypeHandler
                    {
                        Name       = "PGJsonb",
                        Type       = "SmartSql.TypeHandler.PostgreSql.JsonTypeHandler,SmartSql.TypeHandler.PostgreSql",
                        Properties = new Dictionary <string, object>
                        {
                            { "DataTypeName", "jsonb" }
                        }
                    }
                }
            };

            if (!String.IsNullOrEmpty(options.SqlMapPath))
            {
                smartSqlConfigOptions.SmartSqlMaps.Add(new SqlMapSource
                {
                    Path = options.SqlMapPath,
                    Type = ResourceType.Directory
                });
            }

            var optionConfigBuilder = new OptionConfigBuilder(smartSqlConfigOptions, options.LoggerFactory);

            return(new SmartSqlBuilder()
                   .UseLoggerFactory(options.LoggerFactory)
                   .UseConfigBuilder(optionConfigBuilder)
                   .UseAlias(options.Alias)
                   .Build().SqlMapper);
        }
Esempio n. 2
0
        public static SmartSqlBuilder UseOptions(this SmartSqlBuilder builder
                                                 , IServiceProvider serviceProvider)
        {
            var configOptions = serviceProvider
                                .GetRequiredService <IOptionsSnapshot <SmartSqlConfigOptions> >()
                                .Get(builder.Alias);
            var loggerFactory = serviceProvider.GetService <ILoggerFactory>();
            var configBuilder = new OptionConfigBuilder(configOptions, loggerFactory);

            builder.UseConfigBuilder(configBuilder);
            return(builder);
        }