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; }
protected DynamoContext(IDependencyResolver dependencyResolver) { this.dependencyResolver = dependencyResolver; this.options = this.dependencyResolver .GetDependency <IDynamoContextOptionsProvider>() .GetContextOptions(this.GetType()); this.Database = this.GetDatabaseFacadeInstance(); this.ListAllTablesByDbSets(); this.InstantiateAllSets(); }
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); }
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) { }
protected internal DynamoContextOptionsBuilderFake(IDynamoContextOptions options) : base(options) { }
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) { }
protected internal DynamoContextOptionsBuilder(IDynamoContextOptions options) { this.options = options; }