{"id":22850835,"url":"https://github.com/josemrb/ex_message_db","last_synced_at":"2025-03-31T06:31:47.841Z","repository":{"id":62429189,"uuid":"247157260","full_name":"josemrb/ex_message_db","owner":"josemrb","description":"An Elixir client for Message DB","archived":false,"fork":false,"pushed_at":"2024-02-11T21:00:12.000Z","size":50,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-07T14:18:00.554Z","etag":null,"topics":["elixir","event-store","message-db","message-store"],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/josemrb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-13T20:36:18.000Z","updated_at":"2020-06-14T23:23:24.000Z","dependencies_parsed_at":"2025-02-06T10:44:42.252Z","dependency_job_id":"4a91251e-6dab-4e2c-a498-ce6f4b8f9633","html_url":"https://github.com/josemrb/ex_message_db","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josemrb%2Fex_message_db","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josemrb%2Fex_message_db/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josemrb%2Fex_message_db/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josemrb%2Fex_message_db/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josemrb","download_url":"https://codeload.github.com/josemrb/ex_message_db/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246429459,"owners_count":20775805,"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","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":["elixir","event-store","message-db","message-store"],"created_at":"2024-12-13T05:09:25.378Z","updated_at":"2025-03-31T06:31:47.813Z","avatar_url":"https://github.com/josemrb.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExMessageDB\n\n[![Build Status](https://josemrb.semaphoreci.com/badges/ex_message_db.svg)](https://josemrb.semaphoreci.com/projects/ex_message_db) [![Hex Version](https://img.shields.io/hexpm/v/ex_message_db.svg?style=flat)](https://hex.pm/packages/ex_message_db)\n\nAn Elixir client for [Message DB](https://github.com/message-db/message-db).\n\n## Installation\n\nThe package can be installed by adding `ex_message_db` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:ex_message_db, \"~\u003e 0.1.0\"}\n  ]\nend\n```\n\n## Configuration\n\nExMessageDB is an OTP Application and have to be configured by setting the parameters of the\n`ExMessageDB.Repo` repo, so that it can connect to the database at start.\n\n```elixir\n# config/config.exs\nconfig :ex_message_db, ExMessageDB.Repo,\n  database: \"message_store\",\n  username: \"message_store\",\n  hostname: \"localhost\"\n```\n\n## Usage\n\nThe `ExMessageDB` module provides the methods to access the currently supported server functions.\n\n### Supported Server Functions\n\n- [x] write_message\n- [x] get_stream_messages (partially)\n- [x] get_category_messages (partially)\n- [x] get_last_stream_message\n- [ ] stream_version\n- [ ] id\n- [ ] cardinal_id\n- [ ] category\n- [ ] is_category\n- [ ] acquire_lock\n- [ ] hash_64\n- [x] message_store_version\n\n### Examples\n\n```elixir\n# write messages to stream \"account-1\"\niex\u003e message1 = %{\n  id: \"5e731bdc-07aa-430a-8aae-543b45dd7235\",\n  stream_name: \"account-1\",\n  type: \"Created\",\n  data: %{name: \"New Account\"}\n}\niex\u003e ExMessageDB.write_message(message1)\n{:ok, 0}\n\niex\u003e message2 = %{\n  id: \"904ae0d1-8239-4ded-8c34-7bb7f7caefe3\",\n  stream_name: \"account-1\",\n  type: \"EmailAdded\"\n  data: %{email: \"account@company.com\"},\n}\niex\u003e ExMessageDB.write_message(message1)\n{:ok, 1}\n\n# get last message from stream \"account-1\"\niex\u003e ExMessageDB.get_last_stream_message(\"account-1\")\n%{\n  message: %ExMessageDB.Message{\n    data: %{\"email\" =\u003e \"account@company.com\"},\n    global_position: 2,\n    id: \"904ae0d1-8239-4ded-8c34-7bb7f7caefe3\",\n    metadata: nil,\n    position: 1,\n    stream_name: \"account-1\",\n    time: ~N[2020-06-14 22:39:59.979582],\n    type: \"EmailAdded\"\n  }\n}\n\n# get messages from stream \"account-1\"\niex\u003e ExMessageDB.get_stream_messages(\"account-1\")\n[\n  %{\n    message: %ExMessageDB.Message{\n      data: %{\"name\" =\u003e \"New Account\"},\n      global_position: 1,\n      id: \"5e731bdc-07aa-430a-8aae-543b45dd7235\",\n      metadata: nil,\n      position: 0,\n      stream_name: \"account-1\",\n      time: ~N[2020-06-14 22:29:47.186470],\n      type: \"Created\"\n    }\n  },\n  %{\n    message: %ExMessageDB.Message{\n      data: %{\"email\" =\u003e \"account@company.com\"},\n      global_position: 2,\n      id: \"904ae0d1-8239-4ded-8c34-7bb7f7caefe3\",\n      metadata: nil,\n      position: 1,\n      stream_name: \"account-1\",\n      time: ~N[2020-06-14 22:39:59.979582],\n      type: \"EmailAdded\"\n    }\n  }\n]\n```\n\nThe documentation can be found at [hexdocs](https://hexdocs.pm/ex_message_db/).\n\n## Copyright and License\n\nCopyright (c) 2020 Jose Miguel Rivero Bruno\n\nThe source code is licensed under [The MIT License (MIT)][license]\n\n[license]: https://github.com/josemrb/ex_message_db/tree/master/LICENSE.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosemrb%2Fex_message_db","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosemrb%2Fex_message_db","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosemrb%2Fex_message_db/lists"}