Give audit, IDs and unstorable text their shared homes - #313
Merged
Merged
Conversation
Audit recording and reads move out of store. writeaudit and adminaudit own the sources, validation, Resource, ErrInvalidSource and the read models; persistence/postgres/auditpg records rows inside the caller's business transaction (RecordWriteAudit, RecordAdminMutation, RecordDeploymentMutation) and serves the audit reads through auditpg.Store, wired in cmd/server as the new AdminAudit and WriteAudit dependencies. pgunit owns identifier parsing (ParseID, PathID, LookupCursor), unstorable text detection (IsUnstorableText) and pool-bound queries for single-statement reads. api passes malformed path IDs through and storage resolves them with pgunit.PathID. textvalue.ErrUnstorable and credentialcrypto.ErrUnavailable are the shared errors, each mapped by one api helper.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #1 (store layering), foundation PR 1d. Gives audit, identifier parsing and unstorable-text handling one home each, so domain adapters can use them inside their own transactions.
Audit
writeauditandadminauditown the sources, validation,ErrInvalidSourceand the read models:Reader,Filter,PageandErrInvalidQuery.persistence/postgres/auditpg:RecordWriteAudit,RecordAdminMutationandRecordDeploymentMutationrun on the caller's transaction queries and never begin or commit.auditpg.Storeserves the audit reads in one snapshot and runs retention.AdminAuditdependency.write_audit.go,admin_audit.go,admin_history.goandwrite_audit_queries.go.IDs
pgunitgetsErrInvalidID,ParseID,PathIDandLookupCursor.PathID.store.UnknownResourceID,parsePathIDandlookupCursorare deleted.Shared errors
textvalue.ErrUnstorableis paired withpgunit.IsUnstorableText.credentialcrypto.ErrUnavailablereplacesstore.ErrCredentialStorageUnavailable.writeTextValueError(400),writeCredentialUnavailableError(503) andwriteAuditSourceError(400).Also
pgunit.Pool.Queries()is added for single-statement pooled reads.cmd/serverbuilds oneunits := pgunit.NewPool(pool).IMPLEMENTATION.mdLayering names the new owners.HTTP responses are unchanged, and a new test checks the audit error bodies byte for byte. The OpenAPI schema names moved from
store.*towriteaudit.*/adminaudit.*; their shapes are identical.Checks
go build ./...,go vet ./services/core/...cmd/...auditpg(PostgreSQL)pgunitandpgtest(PostgreSQL)execution/...sandbox/providersmake openapiscripts/check-names.pyNeed help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.