From 61e5564c26f52a14d60e38caade25a0974519538 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Fri, 17 Jul 2026 20:55:56 -0400 Subject: [PATCH] feat(localdb): scaffold ZB.MOM.WW.LocalDb (core/contracts/replication + tests) Claude-Session: https://claude.ai/code/session_01BL2Vu1ESDQ9SCN4gVKkdts --- ZB.MOM.WW.LocalDb/Directory.Build.props | 24 ++++++++++++ ZB.MOM.WW.LocalDb/Directory.Packages.props | 32 ++++++++++++++++ ZB.MOM.WW.LocalDb/README.md | 8 ++++ ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.slnx | 10 +++++ .../Protos/localdb_sync.proto | 9 +++++ .../ZB.MOM.WW.LocalDb.Contracts.csproj | 31 +++++++++++++++ .../ZB.MOM.WW.LocalDb.Replication.csproj | 38 +++++++++++++++++++ .../ZB.MOM.WW.LocalDb.csproj | 32 ++++++++++++++++ .../ZB.MOM.WW.LocalDb.Tests.csproj | 35 +++++++++++++++++ 9 files changed, 219 insertions(+) create mode 100644 ZB.MOM.WW.LocalDb/Directory.Build.props create mode 100644 ZB.MOM.WW.LocalDb/Directory.Packages.props create mode 100644 ZB.MOM.WW.LocalDb/README.md create mode 100644 ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.slnx create mode 100644 ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Contracts/Protos/localdb_sync.proto create mode 100644 ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Contracts/ZB.MOM.WW.LocalDb.Contracts.csproj create mode 100644 ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Replication/ZB.MOM.WW.LocalDb.Replication.csproj create mode 100644 ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.csproj create mode 100644 ZB.MOM.WW.LocalDb/tests/ZB.MOM.WW.LocalDb.Tests/ZB.MOM.WW.LocalDb.Tests.csproj diff --git a/ZB.MOM.WW.LocalDb/Directory.Build.props b/ZB.MOM.WW.LocalDb/Directory.Build.props new file mode 100644 index 0000000..98cc6fa --- /dev/null +++ b/ZB.MOM.WW.LocalDb/Directory.Build.props @@ -0,0 +1,24 @@ + + + + net10.0 + enable + enable + latest + 0.1.0 + true + true + + $(NoWarn);NU1510 + README.md + + + + + + + + diff --git a/ZB.MOM.WW.LocalDb/Directory.Packages.props b/ZB.MOM.WW.LocalDb/Directory.Packages.props new file mode 100644 index 0000000..fa64b47 --- /dev/null +++ b/ZB.MOM.WW.LocalDb/Directory.Packages.props @@ -0,0 +1,32 @@ + + + true + + true + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ZB.MOM.WW.LocalDb/README.md b/ZB.MOM.WW.LocalDb/README.md new file mode 100644 index 0000000..6e847ab --- /dev/null +++ b/ZB.MOM.WW.LocalDb/README.md @@ -0,0 +1,8 @@ +# ZB.MOM.WW.LocalDb + +An embedded SQLite local cache with optional bidirectional async 2-node replication +over gRPC, for the ZB.MOM.WW SCADA / OT family. It gives an application a fast, +crash-safe local store that can optionally keep a second node in sync asynchronously, +without requiring a central database on the hot path. + +See the design doc: [`docs/plans/2026-07-17-localdb-design.md`](../docs/plans/2026-07-17-localdb-design.md). diff --git a/ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.slnx b/ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.slnx new file mode 100644 index 0000000..eccb24c --- /dev/null +++ b/ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.slnx @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Contracts/Protos/localdb_sync.proto b/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Contracts/Protos/localdb_sync.proto new file mode 100644 index 0000000..562e030 --- /dev/null +++ b/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Contracts/Protos/localdb_sync.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +package localdb_sync.v1; + +option csharp_namespace = "ZB.MOM.WW.LocalDb.Contracts"; + +// Placeholder service. The real replication contract is defined in a later task. +service LocalDbSync { +} diff --git a/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Contracts/ZB.MOM.WW.LocalDb.Contracts.csproj b/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Contracts/ZB.MOM.WW.LocalDb.Contracts.csproj new file mode 100644 index 0000000..bd1da0b --- /dev/null +++ b/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Contracts/ZB.MOM.WW.LocalDb.Contracts.csproj @@ -0,0 +1,31 @@ + + + + net10.0 + enable + enable + + + + true + ZB.MOM.WW.LocalDb.Contracts + ZB.MOM.WW + localdb_sync.v1 gRPC wire contract for ZB.MOM.WW.LocalDb replication. + https://gitea.dohertylan.com/dohertj2/zb-mom-ww-localdb + https://gitea.dohertylan.com/dohertj2/zb-mom-ww-localdb + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + diff --git a/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Replication/ZB.MOM.WW.LocalDb.Replication.csproj b/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Replication/ZB.MOM.WW.LocalDb.Replication.csproj new file mode 100644 index 0000000..f074e9e --- /dev/null +++ b/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb.Replication/ZB.MOM.WW.LocalDb.Replication.csproj @@ -0,0 +1,38 @@ + + + + net10.0 + enable + enable + + + + true + ZB.MOM.WW.LocalDb.Replication + ZB.MOM.WW + Bidirectional async 2-node gRPC sync engine for ZB.MOM.WW.LocalDb. + https://gitea.dohertylan.com/dohertj2/zb-mom-ww-localdb + https://gitea.dohertylan.com/dohertj2/zb-mom-ww-localdb + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.csproj b/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.csproj new file mode 100644 index 0000000..a16d144 --- /dev/null +++ b/ZB.MOM.WW.LocalDb/src/ZB.MOM.WW.LocalDb/ZB.MOM.WW.LocalDb.csproj @@ -0,0 +1,32 @@ + + + + net10.0 + enable + enable + + + + true + ZB.MOM.WW.LocalDb + ZB.MOM.WW + Embedded SQLite local cache with optional bidirectional async 2-node gRPC replication for the ZB.MOM.WW SCADA family. + https://gitea.dohertylan.com/dohertj2/zb-mom-ww-localdb + https://gitea.dohertylan.com/dohertj2/zb-mom-ww-localdb + + + + + + + + + + + + + + + + + diff --git a/ZB.MOM.WW.LocalDb/tests/ZB.MOM.WW.LocalDb.Tests/ZB.MOM.WW.LocalDb.Tests.csproj b/ZB.MOM.WW.LocalDb/tests/ZB.MOM.WW.LocalDb.Tests/ZB.MOM.WW.LocalDb.Tests.csproj new file mode 100644 index 0000000..f7dbf21 --- /dev/null +++ b/ZB.MOM.WW.LocalDb/tests/ZB.MOM.WW.LocalDb.Tests/ZB.MOM.WW.LocalDb.Tests.csproj @@ -0,0 +1,35 @@ + + + + net10.0 + enable + enable + false + + + + + + + + + + + + + + + + + + + + + + + + + + + +