# Ecto.Adapters.FoundationDB v0.7.5 - Table of Contents

## Pages

- [Changelog](changelog.md)

- Getting Started
  - [Introduction](introduction.md)
  - [Sync Engine Part I - Single Object](watches.md)
  - [Sync Engine Part II - Collections](collection_syncing.md)
  - [Sync Engine Part III - Batteries Included](sync_module.md)

- Developer Guides
  - [Testing with ExUnit](testing.md)
  - [Operator's Manual](operators_manual.md)

- Design
  - [Metadata](metadata.md)
  - [Serialization Design](serialization.md)

## Modules

- [Ecto.Adapters.FoundationDB](Ecto.Adapters.FoundationDB.md): 
([Hex.pm](https://hex.pm/packages/ecto_foundationdb) | [GitHub](https://github.com/foundationdb-beam/ecto_foundationdb))
- [EctoFoundationDB.CLI](EctoFoundationDB.CLI.md): This module provides functions that are to be run by an operator, and not
part of application code.

- [EctoFoundationDB.Database](EctoFoundationDB.Database.md): See `Ecto.Adapters.FoundationDB`
- [EctoFoundationDB.Future](EctoFoundationDB.Future.md): Opaque struct that represents an unresolved result set from some FoundationDB
query operation.
- [EctoFoundationDB.Index](EctoFoundationDB.Index.md): See `Ecto.Adapters.FoundationDB`
- [EctoFoundationDB.Indexer](EctoFoundationDB.Indexer.md): Implement this behaviour to create a custom index.
- [EctoFoundationDB.Indexer.SchemaMetadata](EctoFoundationDB.Indexer.SchemaMetadata.md): This Indexer keeps track of various actions for a Schema
- [EctoFoundationDB.Layer](EctoFoundationDB.Layer.md): The Ecto FoundationDB Adapter implements a [Layer](https://apple.github.io/foundationdb/layer-concept.html)
on the underlying key-value store provided by FoundationDB. Via this layer, some
common data access patterns are achieved. For those familiar with relational databases
such as Postgres, these patterns will be familiar. However, there are many differences (for example SQL is
not supported), so this document seeks to describe the capabilities of the Ecto FoundationDB Layer in detail.
- [EctoFoundationDB.Migrator](EctoFoundationDB.Migrator.md): Implement this behaviour to define migrations for `Ecto.Adapters.FoundationDB`

- [EctoFoundationDB.Options](EctoFoundationDB.Options.md): See `Ecto.Adapters.FoundationDB`
- [EctoFoundationDB.QueryPlan](EctoFoundationDB.QueryPlan.md): See `Ecto.Adapters.FoundationDB`
- [EctoFoundationDB.Sandbox](EctoFoundationDB.Sandbox.md): A module for managing a sandbox FoundationDB cluster. This allows a developer to create
a space under which it should be safe to write tests.
- [EctoFoundationDB.Sync](EctoFoundationDB.Sync.md): This module defines some conventions for integrating with Phoenix LiveView or any other stateful
process. Via EctoFoundationDB watches, your application can automatically be kept up-to-date with
changes to the database.
- [EctoFoundationDB.Tenant](EctoFoundationDB.Tenant.md): This module allows the application to create, open, and delete
tenants within the FoundationDB database. All transactions require a tenant,
so any application that uses the Ecto FoundationDB Adapter must use this module.
- [EctoFoundationDB.Tenant.DirectoryTenant](EctoFoundationDB.Tenant.DirectoryTenant.md): The default backend for EctoFDB multitenancy.
- [EctoFoundationDB.Tenant.ManagedTenant](EctoFoundationDB.Tenant.ManagedTenant.md): An experimental backend for EctoFDB multitenancy. It uses FDB's Tenants
to guarantee that a given transaction cannot access keys from another tenant.
- [EctoFoundationDB.Versionstamp](EctoFoundationDB.Versionstamp.md): Versionstamping is a feature that allows you to create a identifier for a record
that is guaranteed to be unique across all records in the database.

- Exceptions
  - [EctoFoundationDB.Exception.IncorrectTenancy](EctoFoundationDB.Exception.IncorrectTenancy.md): This exception is raised when there is a conflict in the tenant used.

  - [EctoFoundationDB.Exception.Unsupported](EctoFoundationDB.Exception.Unsupported.md): This exception is raised when the application uses an Ecto feature that is not
supported by the FoundationDB Adapter.

