ecto_mnesia v0.2.0 Ecto.Mnesia.Adapter

Ecto.Adapter for mnesia Erlang term database.

It supports compound mnesia indexes (aka secondary indexes) in database setup. The implementation relies directly on mnesia application. Supports partial Ecto.Query to MatchSpec conversion for mnesia:select (and, join). MatchSpec converion utilities could be found in Ecto.Mnesia.Query.

Configuration Sample

defmodule Sample.Model do
  require Record

  def keys, do: [id_seq:       [:thing],
                 topics:       [:whom,:who,:what],
                 config:       [:key]]

  def meta, do: [id_seq:       [:thing, :id],
                 config:       [:key, :value],
                 topics:       Model.Topics.__schema__(:fields)]
end

where Model.Topics is Ecto.Schema object.

usage in config.exs

config :ecto, :mnesia_meta_schema, Sample.Model
config :ecto, :mnesia_backend,  :ram_copies

Summary

Functions

Automatically generate next ID

Returns the childspec that starts the adapter process. This method is called from Ecto.Repo.Supervisor.init/2

Deletes a record from a Mnesia database

Callback implementation for Ecto.Adapter.dumpers/2

Ensure all applications necessary to run the adapter are started

Insert Ecto Schema struct to Mnesia database

Return directory that stores Mnesia tables on local node

This function tells Ecto that we don’t support DDL transactions

Updates record stored in a Mnesia database

Functions

autogenerate(atom)

Automatically generate next ID.

child_spec(repo, opts)

Returns the childspec that starts the adapter process. This method is called from Ecto.Repo.Supervisor.init/2.

delete(repo, map, filter, opts)

Deletes a record from a Mnesia database.

dumpers(primitive, type)

Callback implementation for Ecto.Adapter.dumpers/2.

ensure_all_started(repo, type)

Ensure all applications necessary to run the adapter are started.

in_transaction?(repo)

Callback implementation for Ecto.Adapter.in_transaction?/1.

insert(repo, map, params, on_conflict, returning, opts)

Insert Ecto Schema struct to Mnesia database.

TODO:

  • Process opts.
  • Process on_conflict
  • Process returning
insert_all(repo, map, header, rows, on_conflict, returning, opts)

Callback implementation for Ecto.Adapter.insert_all/7.

path()

Return directory that stores Mnesia tables on local node.

stream(, , , , , )
supports_ddl_transaction?()

This function tells Ecto that we don’t support DDL transactions.

transaction(repo, opts, fun)

Callback implementation for Ecto.Adapter.transaction/3.

update(repo, map, params, filter, autogen, opts)

Updates record stored in a Mnesia database.