https://github.com/stackus/edat-pgx
Postgres stores
https://github.com/stackus/edat-pgx
Last synced: 5 days ago
JSON representation
Postgres stores
- Host: GitHub
- URL: https://github.com/stackus/edat-pgx
- Owner: stackus
- License: mit
- Created: 2021-01-07T01:22:42.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2021-09-02T02:57:10.000Z (over 4 years ago)
- Last Synced: 2024-06-20T05:07:32.043Z (over 1 year ago)
- Language: Go
- Size: 24.4 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# edat-pgx - Postgres stores for edat
## Installation
go get -u github.com/stackus/edat-pgx
## Usage Example
import "github.com/stack/edat-pgx"
conn, _ := pgxpool.Connect(ctx, "your-connection-string")
// Create a store for aggregate events using the pool connection
eventStore := edatpgx.NewEventStore(conn)
// Create a store using a session client that uses a pgx.Tx from context
client := edatpgx.NewSessionClient()
eventStore := edatpgx.NewEventStore(client)
## Prerequisites
Go 1.16
## Features
Stores accept `*pgx.Conn`, `*pgxpool.Pool`, `pgx.Tx` and `edatpgx.Client` for clients. Middleware will accept `*pgxpool.Pool` only.
- Session Client `NewSessionClient()`
- Aggregate Event Store `NewEventStore(client, ...options)`
- Outbox Message Store and Producer `NewMessageStore(client, ....options)`
- Saga Instance Store `NewSagaInstanceStore(client, ...options)`
- Aggregate Snapshot Store `NewSnapshotStore(client, ...options)`
- Message Receiver Session Middleware `ReceiverSessionMiddleware(*pgxpool.Pool, log.Logger)`
- Web Request Session Middleware `WebSessionMiddleware(*pgxpool.Pool, log.Logger)`
- Grpc Request Session (Unary) Interceptor `RpcSessionUnaryMiddleware(*pgxpool.Pool, log.Logger)`
## TODOs
- Documentation
- Tests, tests, and more tests
## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
## License
MIT