Skip to content

Commit c5d796a

Browse files
committed
fixing live execution of data model
1 parent b329e8d commit c5d796a

8 files changed

+44
-22
lines changed

src/cqrs/cqrs-sqlserver/CqrsSqlServer.Backend/Actors/ProductProjectorActor.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
using Akka.Event;
99
using Akka.Persistence;
1010
using Akka.Persistence.Query;
11-
using Akka.Persistence.Query.Sql;
11+
using Akka.Persistence.Sql.Query;
1212
using Akka.Streams;
1313
using Akka.Streams.Dsl;
1414
using CqrsSqlServer.DataModel;
@@ -51,9 +51,11 @@ public sealed class ProductProjectorActor : ReceivePersistentActor
5151
public ProductProjectorActor(IServiceProvider serviceProvider)
5252
{
5353
_serviceProvider = serviceProvider;
54+
CurrentState = new MaterializedViewState(Offset.NoOffset());
5455
PersistenceId = "product-projector";
5556

5657
Recovers();
58+
Commands();
5759
}
5860

5961
private void Recovers()

src/cqrs/cqrs-sqlserver/CqrsSqlServer.Backend/CqrsSqlServer.Backend.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
</ItemGroup>
1414

1515
<ItemGroup>
16-
<PackageReference Include="Akka.Persistence.SqlServer.Hosting" Version="1.5.15"/>
16+
<PackageReference Include="Akka.Persistence.Sql.Hosting" Version="1.5.13" />
1717
<PackageReference Include="Petabridge.Cmd.Cluster" Version="$(PbmVersion)"/>
1818
<PackageReference Include="Petabridge.Cmd.Cluster.Sharding" Version="$(PbmVersion)"/>
1919
<PackageReference Include="Petabridge.Cmd.Host" Version="$(PbmVersion)"/>

src/cqrs/cqrs-sqlserver/CqrsSqlServer.Backend/Program.cs

+24-9
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
using Akka.Actor;
22
using Akka.Hosting;
3-
using Akka.Persistence.SqlServer.Hosting;
3+
using Akka.Persistence.Sql.Config;
44
using CqrsSqlServer.Backend.Actors;
55
using CqrsSqlServer.DataModel;
66
using CqrsSqlServer.Shared;
7+
using CqrsSqlServer.Shared.Events;
78
using CqrsSqlServer.Shared.Serialization;
89
using CqrsSqlServer.Shared.Sharding;
910
using Microsoft.EntityFrameworkCore;
1011
using Microsoft.Extensions.Configuration;
1112
using Microsoft.Extensions.DependencyInjection;
1213
using Microsoft.Extensions.Hosting;
13-
using Petabridge.Cmd.Cluster;
14-
using Petabridge.Cmd.Cluster.Sharding;
14+
using Akka.Persistence.Sql.Hosting;
15+
using LinqToDB;
1516
using Petabridge.Cmd.Host;
1617

1718
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Development";
@@ -40,24 +41,38 @@
4041
{
4142
builder
4243
.AddAppSerialization()
43-
.WithSqlServerPersistence(connectionString)
44+
.WithSqlPersistence(connectionString: connectionString,
45+
providerName: ProviderName.SqlServer2019,
46+
databaseMapping: DatabaseMapping.SqlServer,
47+
tagStorageMode: TagMode.TagTable,
48+
journalBuilder: journalBuilder =>
49+
{
50+
journalBuilder.AddWriteEventAdapter<MessageTagger>("product-tagger",
51+
new[] { typeof(IProductEvent) });
52+
})
4453
.WithActors((system, registry, resolver) =>
4554
{
55+
// in a real world scenario, this actor would be an Akka.Cluster.Sharding ShardRegion
4656
var parentActor =
4757
system.ActorOf(
4858
Props.Create(() => new GenericChildPerEntityParent(new ProductMessageRouter(),
4959
ProductTotalsActor.GetProps)), "productTotals");
50-
60+
5161
registry.Register<ProductMarker>(parentActor);
5262
})
53-
.AddPetabridgeCmd(cmd =>
63+
.WithActors((system, registry, resolver) =>
5464
{
55-
65+
// in a real-world scenario, this projector would be a cluster singleton or would run in its own process
66+
var projectionsActor = system.ActorOf(resolver.Props<ProductProjectorActor>(), "projections");
5667
})
68+
.AddPetabridgeCmd(cmd => { })
5769
.AddStartup((system, registry) =>
5870
{
59-
new FakeDataGenerator().Generate(system, registry, 100);
60-
});;
71+
var seedDb = hostContext.Configuration.GetValue<bool>("SeedDb");
72+
if (seedDb)
73+
new FakeDataGenerator().Generate(system, registry, 100);
74+
});
75+
;
6176
});
6277
});
6378

src/cqrs/cqrs-sqlserver/CqrsSqlServer.Backend/appsettings.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
"System": "Information",
66
"Microsoft": "Information"
77
}
8-
}
8+
},
9+
"SeedDb": false
910
}

src/cqrs/cqrs-sqlserver/CqrsSqlServer.DataModel/CqrsSqlServer.DataModel.csproj

+4
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,8 @@
2222
</Content>
2323
</ItemGroup>
2424

25+
<ItemGroup>
26+
<Folder Include="Migrations\" />
27+
</ItemGroup>
28+
2529
</Project>

src/cqrs/cqrs-sqlserver/CqrsSqlServer.DataModel/Migrations/20240325192428_InitialCreat.Designer.cs src/cqrs/cqrs-sqlserver/CqrsSqlServer.DataModel/Migrations/20240326010601_InitialCreate.Designer.cs

+5-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cqrs/cqrs-sqlserver/CqrsSqlServer.DataModel/Migrations/20240325192428_InitialCreat.cs src/cqrs/cqrs-sqlserver/CqrsSqlServer.DataModel/Migrations/20240326010601_InitialCreate.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
namespace CqrsSqlServer.DataModel.Migrations
77
{
88
/// <inheritdoc />
9-
public partial class InitialCreat : Migration
9+
public partial class InitialCreate : Migration
1010
{
1111
/// <inheritdoc />
1212
protected override void Up(MigrationBuilder migrationBuilder)
@@ -18,7 +18,7 @@ protected override void Up(MigrationBuilder migrationBuilder)
1818
ProductId = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
1919
ProductName = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
2020
Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
21-
RemainingInventory = table.Column<int>(type: "int", nullable: false),
21+
AllInventory = table.Column<int>(type: "int", nullable: false),
2222
SoldUnits = table.Column<int>(type: "int", nullable: false),
2323
TotalRevenue = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
2424
Created = table.Column<DateTime>(type: "datetime2", nullable: false),

src/cqrs/cqrs-sqlserver/CqrsSqlServer.DataModel/Migrations/CqrsSqlServerContextModelSnapshot.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ protected override void BuildModel(ModelBuilder modelBuilder)
2828
.HasMaxLength(128)
2929
.HasColumnType("nvarchar(128)");
3030

31+
b.Property<int>("AllInventory")
32+
.HasColumnType("int");
33+
3134
b.Property<DateTime>("Created")
3235
.HasColumnType("datetime2");
3336

@@ -42,9 +45,6 @@ protected override void BuildModel(ModelBuilder modelBuilder)
4245
.HasMaxLength(256)
4346
.HasColumnType("nvarchar(256)");
4447

45-
b.Property<int>("AllInventory")
46-
.HasColumnType("int");
47-
4848
b.Property<int>("SoldUnits")
4949
.HasColumnType("int");
5050

0 commit comments

Comments
 (0)