Skip to main content

fuel_core_compression_service/storage/
column.rs

1//! Column enum for the database.
2
3use fuel_core_storage::merkle::{
4    column::{
5        AsU32,
6        MerkleizedColumn,
7    },
8    sparse::MerkleizedTableColumn,
9};
10
11/// Enum representing the columns in the storage.
12#[repr(u32)]
13#[derive(
14    Copy,
15    Clone,
16    Debug,
17    strum_macros::EnumCount,
18    strum_macros::IntoStaticStr,
19    PartialEq,
20    Eq,
21    enum_iterator::Sequence,
22    Hash,
23)]
24pub enum CompressionColumn {
25    /// CompressedBlocks, see [`CompressedBlocks`](crate::storage::compressed_blocks::CompressedBlocks)
26    CompressedBlocks = 0,
27    /// RegistryKey to Address index, see [`Address`](crate::storage::address::Address)
28    Address = 1,
29    /// RegistryKey to AssetId index, see [`AssetId`](crate::storage::asset_id::AssetId)
30    AssetId = 2,
31    /// RegistryKey to ContractId index, see [`ContractId`](crate::storage::contract_id::ContractId)
32    ContractId = 3,
33    /// RegistryKey to ScriptCode index, see [`ScriptCode`](crate::storage::script_code::ScriptCode)
34    ScriptCode = 4,
35    /// RegistryKey to PredicateCode index, see [`PredicateCode`](crate::storage::predicate_code::PredicateCode)
36    PredicateCode = 5,
37    /// RegistryKey to ReverseKey index, see [`RegistryIndex`](crate::storage::registry_index::RegistryIndex)
38    RegistryIndex = 6,
39    /// Keeps track of keys to remove, see [`EvictorCache`](crate::storage::evictor_cache::EvictorCache)
40    EvictorCache = 7,
41    /// Keeps track of timestamps, will be removed eventually, see [`Timestamps`](crate::storage::timestamps::Timestamps)
42    Timestamps = 8,
43    #[cfg(feature = "fault-proving")]
44    /// Keeps track of registrations per table associated with a compressed block, see [`Registrations`](crate::storage::registrations::Registrations)
45    Registrations = 9,
46}
47
48impl AsU32 for CompressionColumn {
49    fn as_u32(&self) -> u32 {
50        *self as u32
51    }
52}
53
54/// Type alias to get the `MerkleizedColumn` for some type that implements `MerkleizedTableColumn`.
55pub type MerkleizedColumnOf<TC> =
56    MerkleizedColumn<<TC as MerkleizedTableColumn>::TableColumn>;