Beispiel #1
0
 public DynamoDbSet(
     IIndexExtractor indexExtractor,
     ITableNameExtractor tableNameExtractor,
     IPrimaryKeyExtractor primaryKeyExtractor,
     IEntityValidator validator,
     IDynamoContextOptionsProvider optionsProvider,
     IEntityConfigurationProvider entityConfigurationProvider,
     Type contextType)
 {
     this.contextOptions      = optionsProvider.GetContextOptions(contextType);
     this.Client              = this.contextOptions.AwsOptions.CreateServiceClient <IAmazonDynamoDB>();
     this.Base                = new DynamoDBContext(this.Client);
     this.indexExtractor      = indexExtractor;
     this.tableNameExtractor  = tableNameExtractor;
     this.primaryKeyExtractor = primaryKeyExtractor;
     this.validator           = validator;
     this.table               = this.Base.TryGetTargetTable <TEntity>(this.operationConfig);
     this.entityConfig        = entityConfigurationProvider.GetEntityConfiguration(
         this.contextOptions.ContextType, typeof(TEntity)) as IEntityConfiguration <TEntity>;
     this.operationConfig = new DynamoDBOperationConfig
     {
         OverrideTableName = this.tableNameExtractor.ExtractTableName(
             this.contextOptions, this.entityConfig, this.table),
         Conversion = this.contextOptions.Conversion ?? DynamoDBEntryConversion.V1
     };
 }
 protected internal EntityTypeBuilder(
     EntityConfiguration <TContext, TEntity> entityConfig,
     IDynamoContextOptions contextOptions)
 {
     this.entityConfig   = entityConfig;
     this.contextOptions = contextOptions;
 }
Beispiel #3
0
 protected DynamoContext(IDependencyResolver dependencyResolver)
 {
     this.dependencyResolver = dependencyResolver;
     this.options            = this.dependencyResolver
                               .GetDependency <IDynamoContextOptionsProvider>()
                               .GetContextOptions(this.GetType());
     this.Database = this.GetDatabaseFacadeInstance();
     this.ListAllTablesByDbSets();
     this.InstantiateAllSets();
 }
Beispiel #4
0
 public DatabaseFacade(
     ITableNameExtractor tableNameExtractor,
     ITableCreator tableCreator,
     ITableDropper tableDropper,
     IDynamoContextOptionsProvider optionsProvider,
     Type contextType)
 {
     this.options            = optionsProvider.GetContextOptions(contextType);
     this.tableNameExtractor = tableNameExtractor;
     this.tableCreator       = tableCreator;
     this.tableDropper       = tableDropper;
 }
        private static void BuildConfiguration <TContext>(
            TContext contextInstance,
            IConfiguration configuration,
            IDynamoContextOptions contextOptions)
            where TContext : DynamoContext
        {
            var dynamoOptionsBuilder = new DynamoContextOptionsBuilder(contextOptions);
            var configuringMethod    = typeof(TContext)
                                       .GetMethod("OnConfiguring", BindingFlags.Instance | BindingFlags.NonPublic);

            configuringMethod.Invoke(
                contextInstance, new object[] { dynamoOptionsBuilder, configuration });
        }
        private static void AddDynamoCloudClient(
            IServiceCollection services,
            IDynamoContextOptions contextOptions,
            AWSOptions awsOptions)
        {
            awsOptions.Profile = awsOptions?.Profile ?? contextOptions.Profile;
            awsOptions.Region  = awsOptions?.Region ?? contextOptions.RegionEndpoint;

            contextOptions.AwsOptions = awsOptions;

            //contextOptions.ValidateCloudMode();

            services.AddAWSService <IAmazonDynamoDB>(awsOptions);
        }
        private static void BuildModels <TContext>(
            this IServiceCollection services,
            TContext contextInstance,
            IConfiguration configuration,
            IDynamoContextOptions contextOptions)
            where TContext : DynamoContext
        {
            var modelBuilder        = new ModelBuilder(contextOptions);
            var modelCreatingMethod = typeof(TContext)
                                      .GetMethod("OnModelCreating", BindingFlags.Instance | BindingFlags.NonPublic);

            modelCreatingMethod.Invoke(contextInstance, new object[] { modelBuilder, configuration });

            modelBuilder.EntityConfigurations
            .Values
            .ToList()
            .ForEach(config => services.AddSingleton(config));
        }
        private static void AddDynamoLocalClient(
            IServiceCollection services,
            IDynamoContextOptions options)
        {
            options.AwsOptions.Credentials = AWSCredentialsFactory.GetAWSCredentials(
                new CredentialProfile(options.Profile, new CredentialProfileOptions
            {
                AccessKey = options.AccessKeyId,
                SecretKey = options.SecretAccessKey
            }),
                new CredentialProfileStoreChain());

            options.AwsOptions.DefaultClientConfig.ServiceURL = options.ServiceUrl;

            //options.ValidateLocalMode();

            services.AddAWSService <IAmazonDynamoDB>(options.AwsOptions);
        }
Beispiel #9
0
        public string ExtractTableName <TEntity>(
            IDynamoContextOptions options,
            IEntityConfiguration <TEntity> entityConfiguration,
            Table tableInfo = null)
            where TEntity : class, new()
        {
            var fromTableInfo           = tableInfo?.TableName;
            var fromEntityConfig        = entityConfiguration.TableName;
            var tableNamesByEntityTypes = options.TableNameByEntityTypes;
            var fromContextConfig       = tableNamesByEntityTypes.ContainsKey(typeof(TEntity))
                ? tableNamesByEntityTypes[typeof(TEntity)]
                : default(string);

            return(fromEntityConfig
                   ?? fromContextConfig
                   ?? fromTableInfo
                   ?? typeof(TEntity).Name);
        }
        private static IServiceCollection AddDynamoClient(
            this IServiceCollection services,
            AWSOptions awsOptions,
            IDynamoContextOptions options)
        {
            var awsCredentials = awsOptions?.Credentials?.GetCredentials();

            options.Profile         = options.Profile ?? awsOptions?.Profile;
            options.AccessKeyId     = options.AccessKeyId ?? awsCredentials?.AccessKey;
            options.SecretAccessKey = options.SecretAccessKey ?? awsCredentials?.SecretKey;

            if (options.LocalMode)
            {
                AddDynamoLocalClient(services, options);

                return(services);;
            }

            options.RegionEndpoint = options.RegionEndpoint ?? awsOptions?.Region;

            AddDynamoCloudClient(services, options, awsOptions);

            return(services);
        }
 protected internal ModelBuilderFake(IDynamoContextOptions contextOptions)
     : base(contextOptions)
 {
 }
Beispiel #12
0
 protected internal DynamoContextOptionsBuilderFake(IDynamoContextOptions options)
     : base(options)
 {
 }
Beispiel #13
0
 protected internal ModelBuilder(IDynamoContextOptions contextOptions)
 {
     this.contextOptions             = contextOptions;
     this.entityBuildersByEntityType = new Dictionary <Type, object>();
     this.EntityConfigurations       = new Dictionary <Type, IEntityConfiguration>();
 }
 protected internal EntityTypeBuilderFake(
     EntityConfiguration <FakeDynamoContext, FakeEntity> entityConfig,
     IDynamoContextOptions contextOptions) : base(entityConfig, contextOptions)
 {
 }
Beispiel #15
0
 protected internal DynamoContextOptionsBuilder(IDynamoContextOptions options)
 {
     this.options = options;
 }