private void MigrateDatabase(IContainer container) { var databaseMigrator = container.Resolve <IPostgreSqlDatabaseMigrator>(); EventFlowSnapshotStoresPostgreSql.MigrateDatabase(databaseMigrator); //EventFlowEventStoresPostgreSql.MigrateDatabase(databaseMigrator); databaseMigrator.MigrateDatabaseUsingScripts(new[] { new SqlScript( "本ReadModel", @"CREATE TABLE IF NOT EXISTS ""ReadModel-本""( 本のID Varchar(64), 本のタイトル Varchar(64), 利用者のID Varchar(64), 貸出期間自 Timestamp WITH TIME ZONE, 貸出期間至 Timestamp WITH TIME ZONE, -- ------------------------------------------------- Id bigint GENERATED BY DEFAULT AS IDENTITY, AggregateId Varchar(64) NOT NULL, CreateTime Timestamp WITH TIME ZONE NOT NULL, UpdatedTime Timestamp WITH TIME ZONE NOT NULL, LastAggregateSequenceNumber int NOT NULL, CONSTRAINT ""PK_ReadModel-本"" PRIMARY KEY ( Id ) ); CREATE INDEX IF NOT EXISTS ""IX_ReadModel-本_AggregateId"" ON ""ReadModel-本"" ( AggregateId ); "), new SqlScript( "利用者ReadModel", @"CREATE TABLE IF NOT EXISTS ""ReadModel-利用者""( 利用者のID Varchar(64), 氏名 Varchar(64), -- ------------------------------------------------- Id bigint GENERATED BY DEFAULT AS IDENTITY, AggregateId Varchar(64) NOT NULL, CreateTime Timestamp WITH TIME ZONE NOT NULL, UpdatedTime Timestamp WITH TIME ZONE NOT NULL, LastAggregateSequenceNumber int NOT NULL, CONSTRAINT ""PK_ReadModel-利用者"" PRIMARY KEY ( Id ) ); CREATE INDEX IF NOT EXISTS ""IX_ReadModel-利用者_AggregateId"" ON ""ReadModel-利用者"" ( AggregateId ); "), }); }
protected override IRootResolver CreateRootResolver(IEventFlowOptions eventFlowOptions) { _testDatabase = PostgreSqlHelpz.CreateDatabase("eventflow-snapshots"); var resolver = eventFlowOptions .ConfigurePostgreSql(PostgreSqlConfiguration.New.SetConnectionString(_testDatabase.ConnectionString.Value)) .UsePostgreSqlSnapshotStore() .CreateResolver(); var databaseMigrator = resolver.Resolve <IPostgreSqlDatabaseMigrator>(); EventFlowSnapshotStoresPostgreSql.MigrateDatabase(databaseMigrator); return(resolver); }