p2panda-store 0.6.1

Database traits and SQLite implementations for p2panda
Documentation
<h1 align="center">p2panda-store</h1>

<div align="center">
  <img src="https://raw.githubusercontent.com/p2panda/.github/main/assets/panda-left.gif" width="auto" height="30px">
  <strong>Database traits and SQLite implementations with support for atomic transactions</strong>
  <img src="https://raw.githubusercontent.com/p2panda/.github/main/assets/panda-right.gif" width="auto" height="30px">
</div>

<div align="center">
  <h3>
    <a href="https://docs.rs/p2panda-store">
      Documentation
    </a>
    <span> | </span>
    <a href="https://github.com/p2panda/p2panda/releases">
      Releases
    </a>
    <span> | </span>
    <a href="https://p2panda.org">
      Website
    </a>
  </h3>
</div>

This crate provides generic trait definitions to flexibly express storage and query behaviour for a
wide-range of peer-to-peer systems. In the context of p2panda these include an address book for
managing transport information related to nodes in a network, an operation store for maintaining
append-only log entries, an orderer store to track operation dependencies, and much more. Concrete
SQLite database implementations are provided for all store traits, along with a transaction provider
for cases when atomicity and consistency are required for a set of database interactions.

> 🚧 This library is under active development and the APIs are not yet considered stable for
> production use. Core data types and user-facing APIs may still undergo breaking changes. Stability
> guarantees will improve with the release of v1.0.0.

## Features

- Generic trait definitions required to implement p2panda stores
- SQLite implementations for all p2panda stores
  - Address book for handling node information
  - Cursors for tracking positions in logs
  - Groups for maintaining auth group state
  - Logs for efficient comparison of log-based data types
  - Operations for storing entries in append-only logs
  - Orderer for tracking dependencies in partially-ordered data sets
- Transaction provider to group related queries for consistency guarantees
- Database migrations on store creation or during application runtime

## License

Licensed under either of [Apache License, Version 2.0] or [MIT license] at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in
p2panda by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.

[Apache License, Version 2.0]: https://github.com/p2panda/p2panda/blob/main/LICENSES/Apache-2.0.txt
[MIT license]: https://github.com/p2panda/p2panda/blob/main/LICENSES/MIT.txt

---

_This project has received funding from the European Union’s Horizon 2020 research and innovation
programme within the framework of the NGI-POINTER Project funded under grant agreement No 871528,
NGI-ASSURE No 957073, NGI0-ENTRUST No 101069594 and NGI0-COMMONS No 101135429._