Snapshots

Git Source

Library for storing object revisions

Functions

semver

function semver() external pure returns (uint32 version);

create

function create(Storage storage $, uint64 id, Descriptor memory desc, bytes32[] memory elems, address owner) external;

update

function update(Storage storage $, uint64 id, bytes32[] memory elems) external returns (Descriptor memory);

upgrade

function upgrade(Storage storage $, uint64 id, uint32 kindRev, uint32 setRev, uint256 count)
    external
    returns (Descriptor memory);

touch

function touch(Storage storage $, uint64 id, uint256 count) external returns (Descriptor memory);

transfer

function transfer(Storage storage $, uint64 id, address to) external returns (address from);

ownerOf

function ownerOf(Storage storage $, uint64 id) external view returns (address);

revisionOf

function revisionOf(Storage storage $, uint64 id) external view returns (uint32);

revisionAt

function revisionAt(Storage storage $, uint64 id, uint32 rev0) external view returns (uint32);

descriptorAt

function descriptorAt(Storage storage $, uint64 id, uint32 rev0) external view returns (Descriptor memory);

elementsAt

function elementsAt(Storage storage $, uint64 id, uint32 rev0, uint256 num) external view returns (bytes32[] memory);

elementAt

function elementAt(Storage storage $, uint64 id, uint32 rev0, uint256 index) external view returns (bytes32);

sotaOf

function sotaOf(Storage storage $, uint64 id) external view returns (Descriptor memory desc, address owner);

snapshotAt

function snapshotAt(Storage storage $, uint64 id, uint32 rev0, uint256 num)
    external
    view
    returns (Descriptor memory, bytes32[] memory);

statusOf

function statusOf(Storage storage $, uint64[] memory ids) external view returns (bool);

_requireStatus

function _requireStatus(Storage storage $, uint64 id) private view returns (Status memory);

_requireRevision

function _requireRevision(Storage storage $, uint64 id, uint32 rev0) private view returns (uint32);

_validateDescriptor

function _validateDescriptor(Descriptor memory desc) private pure;

_makeRevisionKey

function _makeRevisionKey(uint64 id, uint32 rev) private pure returns (uint256);

Errors

InvalidId

error InvalidId();

InvalidOwner

error InvalidOwner();

InvalidKindId

error InvalidKindId();

InvalidSetId

error InvalidSetId();

InvalidRevision

error InvalidRevision();

InvalidKindRevision

error InvalidKindRevision();

InvalidSetRevision

error InvalidSetRevision();

InvalidElements

error InvalidElements();

InvalidFieldIndex

error InvalidFieldIndex();

RecordExists

error RecordExists(uint64 id);

RecordNotExist

error RecordNotExist(uint64 id);

RecordNotActive

error RecordNotActive(uint64 id);

RevisionNotExist

error RevisionNotExist(uint64 id, uint32 rev);

Unauthorized

error Unauthorized(uint64 id, address visitor);

Structs

Status

Object record tracking ownership and latest revision

struct Status {
    address owner;
    uint32 latest;
}

Revision

Revision record containing descriptor and elements

struct Revision {
    Descriptor desc;
    bytes32[16] elems;
}

Storage

struct Storage {
    mapping(uint256 => Status) sota;
    mapping(uint256 => Revision) revisions;
}