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>;