Fact.Genesis.TheCreator (Fact v0.3.1)
View SourceThe divine module that brings a Fact database into existence.
Fact.Genesis.TheCreator is responsible for taking a DatabaseCreated.V1
event and actually creating the on-disk database via let_there_be_light/1.
Responsibilities:
- Initialize the storage paths for records and indices
- Create necessary directories and a
.gitignorefile - Write the genesis event to the record file
- Append the genesis event to the ledger file
- Generate event IDs and populate the event schema
Summary
Functions
Creates a Fact database from the Fact.Genesis.Event.DatabaseCreated.V1 event.
Functions
@spec let_there_be_light(%Fact.Genesis.Event.DatabaseCreated.V1{ database_id: term(), database_name: term(), elixir_version: term(), erts_version: term(), event_id: term(), event_schema: term(), fact_version: term(), index_checkpoint_file_decoder: term(), index_checkpoint_file_encoder: term(), index_checkpoint_file_name: term(), index_checkpoint_file_reader: term(), index_checkpoint_file_writer: term(), index_file_decoder: term(), index_file_encoder: term(), index_file_name: term(), index_file_reader: term(), index_file_writer: term(), ledger_file_decoder: term(), ledger_file_encoder: term(), ledger_file_name: term(), ledger_file_reader: term(), ledger_file_writer: term(), lock_file_decoder: term(), lock_file_encoder: term(), lock_file_name: term(), lock_file_reader: term(), lock_file_writer: term(), os_version: term(), otp_version: term(), record_file_decoder: term(), record_file_encoder: term(), record_file_name: term(), record_file_reader: term(), record_file_writer: term(), storage: term() }) :: :ok
Creates a Fact database from the Fact.Genesis.Event.DatabaseCreated.V1 event.
It initializes storage, and appends the event as the first record of every database.