pub fn get_details<H: Into<AnyDhtHash>>(
    hash: H,
    options: GetOptions
) -> ExternResult<Option<Details>>
Expand description

Get a record and its details for the entry or action hash passed in. Returns None if the entry/action does not exist. The details returned are a contextual mix of records and action hashes.

Note: The return details will be inferred by the hash type passed in, be careful to pass in the correct hash type for the details you want.

Note: If an action hash is passed in the record returned is the specified record. If an entry hash is passed in all the actions (so implicitly all the records) are returned for the entry that matches that hash. See get for more information about what “oldest live” means.

The details returned include relevant creates, updates and deletes for the hash passed in.

Creates are initial action/entry combinations (records) produced by commit_entry! and cannot reference other actions. Updates and deletes both reference a specific action+entry combination. Updates must reference another create or update action+entry. Deletes must reference a create or update action+entry (nothing can reference a delete).

Full records are returned for direct references to the passed hash. Action hashes are returned for references to references to the passed hash.

Details for an action hash return:

  • the record for this action hash if it exists
  • all update and delete records that reference that specified action

Details for an entry hash return:

  • all creates, updates and delete records that reference that entry hash
  • all update and delete records that reference the records that reference the entry hash

Note: Entries are just values, so can be referenced by many CRUD actions by many authors. e.g. the number 1 or string “foo” can be referenced by anyone publishing CRUD actions at any time they need to represent 1 or “foo” for a create, update or delete. If you need to disambiguate entry values, provide uniqueness in the entry value such as a unique hash (e.g. current chain head), timestamp (careful about collisions!), or random bytes/uuid (see random_bytes() and the uuid rust crate that supports uuids from bytes).

Note: There are multiple action types that exist and operate entirely outside of CRUD records so they cannot reference or be referenced by CRUD, so are immutable or have their own mutation logic (e.g. link create/delete) and will not be included in get_details results e.g. the DNA itself, links, migrations, etc. However the record will still be returned by get_details if an action hash is passed, these non-entry records will have None as the entry value.