Pds: provide a persistent store package (ATProtoNet.Pds.EntityFrameworkCore) for IAccountStore/IRepoStore #38
Labels
No labels
breaking-change
bug
documentation
duplicate
enhancement
good first issue
help wanted
performance
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/ATProto.NET#38
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ATProtoNet.Pdsships onlyInMemoryAccountStore/InMemoryRepoStore— fine for development, but every production consumer has to hand-roll persistentIAccountStore/IRepoStoreimplementations.For Updraft we wrote Postgres-backed stores over EF Core (
DbAccountStore,DbRepoStorein https://git.grandiras.net/Grandiras/Updraft, src/Updraft.Pds/Stores) — entities mirroringPdsAccount/RepoRecord/RepoBlob, cursor pagination on rkey, content-addressed blob dedup.Suggestion: an
ATProtoNet.Pds.EntityFrameworkCorepackage (parallel to the existingATProtoNet.Server.EntityFrameworkCoretoken store): aPdsDbContext(or model-configuration hook for an existing context), EF-backed store implementations, and anAddAtProtoPdsEfCoreStores<TContext>()registration. Our implementation can serve as a starting point.One design note from our build: if columns like handle/email are encrypted at rest with a non-deterministic scheme, equality lookups (
GetByHandleAsync) must happen in memory — worth keeping the store contract documented as "implementations may load-and-filter".