{"id":32161666,"url":"https://github.com/disco-dave/message-db","last_synced_at":"2025-10-21T13:57:07.621Z","repository":{"id":39892945,"uuid":"479556902","full_name":"Disco-Dave/message-db","owner":"Disco-Dave","description":"Haskell client library for Eventide's Message DB","archived":false,"fork":false,"pushed_at":"2022-12-05T02:06:17.000Z","size":350,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-10-21T13:56:55.532Z","etag":null,"topics":["cqrs","database","event-sourcing","haskell","postgresql"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Disco-Dave.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-08T22:38:54.000Z","updated_at":"2023-10-14T08:36:56.000Z","dependencies_parsed_at":"2023-01-23T00:46:07.479Z","dependency_job_id":null,"html_url":"https://github.com/Disco-Dave/message-db","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Disco-Dave/message-db","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Disco-Dave%2Fmessage-db","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Disco-Dave%2Fmessage-db/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Disco-Dave%2Fmessage-db/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Disco-Dave%2Fmessage-db/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Disco-Dave","download_url":"https://codeload.github.com/Disco-Dave/message-db/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Disco-Dave%2Fmessage-db/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280272339,"owners_count":26302260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cqrs","database","event-sourcing","haskell","postgresql"],"created_at":"2025-10-21T13:57:03.214Z","updated_at":"2025-10-21T13:57:07.608Z","avatar_url":"https://github.com/Disco-Dave.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# message-db - Client library for Eventide's Message DB\n\nCollection of libraries for interacting with [Eventide's Message DB](http://docs.eventide-project.org/user-guide/message-db/) via PostgreSQL. \nThe purpose of these libraries are to make it easier to implement event sourcing \nsystems in Haskell.\n\nFor an example of how this library is used, please see [BankAccount.hs](./message-db/test/Examples/BankAccount.hs).\n\n### Disclaimers\n- This library is an unofficial message-db client library for Haskell.\n- Only `message-db-temp` has been published to [hackage](https://hackage.haskell.org/package/message-db-temp) so far.\n- If you want to use the `message-db` or `message-db-monad` packages then you need to add the following:\n    - For `cabal` add the following to `cabal.project`\n      ```cabal\n      source-repository-package\n        type: git\n        location: https://github.com/Disco-Dave/message-db.git\n        tag: 359cb51b69efbf8f561c2709973db713c8154a34\n        subdir: \n          message-db\n          message-db-monad\n      ```\n    - For `stack` add the follow to `stack.yaml`\n      ```yaml\n      extra-deps:\n        - git: https://github.com/Disco-Dave/message-db.git\n          commit: 359cb51b69efbf8f561c2709973db713c8154a34\n          subdirs: \n            - message-db\n            - message-db-monad\n      ```\n    - Note: you may replace `359cb51b69efbf8f561c2709973db713c8154a34` with any git ref you want\n\n## Repository Structure\n\nThis repository contains the following packages:\n- [message-db](./message-db) - Low-level library built on top of [postgresql-simple](https://hackage.haskell.org/package/postgresql-simple).\n- [message-db-temp](./message-db-temp) - Creates temporary message-db instances using [tmp-postgres](https://hackage.haskell.org/package/tmp-postgres) and the [official message-db scripts](https://github.com/message-db/message-db). This package is also used by [message-db tests](./message-db/test/) for running integration tests.\n- [message-db-monad](./message-db-monad) - Utilizes [MonadUnliftIO](https://hackage.haskell.org/package/unliftio-core-0.2.0.1/docs/Control-Monad-IO-Unlift.html#t:MonadUnliftIO) to allow running message-db actions in a custom monad.\n\n## How to Get Help\n\nIf you find a bug, have a feature request, or simply have a question then please [open an issue](https://github.com/Disco-Dave/message-db/issues/new).\n\n## How to Build\n\nCurrently this project supports that last three major versions of `ghc` with `cabal`, and the last two major `lts` snapshots plus `nightly` for `stack`.\n\nIf you need to setup `ghc`, `cabal`, or `stack`; then I highly recommend using [ghcup](https://www.haskell.org/ghcup/).\n\n### Preparation\n\nRegardless of which tool chain you use, the first thing you'll need to do is clone the repo and initialize all of the submodules. This may be done with one command:\n\n`git clone https://github.com/Disco-Dave/message-db.git --recurse-submodules`\n\nOr if you already cloned the repo, then you may run the following inside of the repo folder to initialize the submodules:\n\n`git submodule update --init --recursive`\n\nYou may also need some additional system dependencies in order to build, if you're on a Debian based system then run the following:\n\n`apt update \u0026\u0026 apt install -y libpq-dev`\n\nIf you also wish to run the test-suite, then you need to make sure that `initdb` is on your path. If you're on a Debian based system then run the following:\n\n```bash\napt update \u0026\u0026 apt install -y postgresql\nexport PATH=/usr/lib/postgresql/13/bin:$PATH\n```\n\nNote, your distro may have a `postgresql` version different from 13. If so, replace the 13 in your `PATH` with the appropriate number.\n\n### Cabal Instructions\n\n1. `cabal update` - Ensures you have the latest package list from [Hackage](https://hackage.haskell.org/).\n2. `cabal build all` - Builds _all_ packages.\n3. `cabal test all` - Runs the test-suite for _all_ packages.\n\n### Stack Instructions\n1. `stack init` - Initializes the stack project. You can also specify a specific `resolver` instead:\n    - `stack init --resolver lts-18`\n    - `stack init --resolver lts-19`\n    - `stack init --resolver nightly`\n2. `stack build` - Builds _all_ packages.\n3. `stack test` - Runs the test-suite for _all_ packages.\n\n## Learn More about Eventide's Message DB\n\n- [Docs - Official Message DB user guide](http://docs.eventide-project.org/user-guide/message-db)\n- [Reference - Official postgres client in Ruby](https://github.com/eventide-project/message-store-postgres)\n- [Blog - Build Your Own Message DB Client](https://blog.eventide-project.org/articles/build-your-own-message-db-client/)\n- [Book - Practical Microservices](https://pragprog.com/titles/egmicro/practical-microservices/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdisco-dave%2Fmessage-db","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdisco-dave%2Fmessage-db","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdisco-dave%2Fmessage-db/lists"}