Ejemplo n.º 1
0
        /// <summary>
        /// Adds the Prisma service.
        /// </summary>
        /// <param name="services">The service collection.</param>
        /// <returns></returns>
        public static IServiceCollection AddPrisma(this IServiceCollection services)
        {
            // Validate

            if (services == null)
            {
                return(null);
            }

            // Gets the options

            services
            .AddOptions()
            .AddOptionsSnapshot <PrismaOptions>();

            services.AddLogging();

            PrismaOptions configuration = services.BuildServiceProvider().GetRequiredService <PrismaOptions>();

            // Adds the provider accordingly with the provided options

            switch (configuration.Provider)
            {
            case DbProvider.MongoDb:
                services.AddMongoDbProvider(configuration);
                break;

            case DbProvider.DynamoDb:
                services.AddDynamoDbProvider(configuration);
                break;

            case DbProvider.CosmosDb:
                services.AddCosmosDbProvider(configuration);
                break;

            default:
                break;
            }

            return(services);
        }
Ejemplo n.º 2
0
        private static IServiceCollection AddDynamoDbProvider(this IServiceCollection services, PrismaOptions configuration)
        {
            ConfigString dynamoDbConfig = new(configuration.ConnectionString);

            services.TryAddSingleton <IAmazonDynamoDB>(c =>
            {
                return(new AmazonDynamoDBClient(
                           new Amazon.Runtime.BasicAWSCredentials(
                               dynamoDbConfig.GetValueOrDefault("accesskey"),
                               dynamoDbConfig.GetValueOrDefault("secretkey")),
                           Amazon.RegionEndpoint.GetBySystemName(dynamoDbConfig.GetValueOrDefault("region"))));
            });

            services.TryAddTransient(typeof(IPrismaProvider <>), typeof(DynamoDbProvider <>));

            return(services);
        }
Ejemplo n.º 3
0
        private static IServiceCollection AddMongoDbProvider(this IServiceCollection services, PrismaOptions configuration)
        {
            services.TryAddSingleton <IMongoClient>(c =>
            {
                return(new MongoClient(configuration.ConnectionString));
            });

            services.TryAddTransient(typeof(IPrismaProvider <>), typeof(MongoDbProvider <>));

            return(services);
        }
Ejemplo n.º 4
0
        private static IServiceCollection AddCosmosDbProvider(this IServiceCollection services, PrismaOptions configuration)
        {
            ConfigString cosmosDbConfig = new(configuration.ConnectionString);

            services.TryAddSingleton <CosmosClient>(c =>
            {
                return(new CosmosClient($"AccountEndpoint={cosmosDbConfig.GetValueOrDefault("AccountEndpoint")};AccountKey={cosmosDbConfig.GetValueOrDefault("AccountKey")}",
                                        new CosmosClientOptions
                {
                    SerializerOptions = new CosmosSerializationOptions()
                    {
                        PropertyNamingPolicy = CosmosPropertyNamingPolicy.CamelCase
                    }
                }));
            });

            services.TryAddTransient(typeof(IPrismaProvider <>), typeof(CosmosDbProvider <>));

            return(services);
        }