Skip to main content

formualizer_eval/formula_plane/
virtual_ref.rs

1//! Provider-neutral descriptors for future provider-backed virtual references.
2//!
3//! See VIRTUAL_REFERENCES.md.
4
5#[cfg(feature = "serde")]
6use serde::{Deserialize, Serialize};
7
8/// Session-local handle for a future provider-backed virtual source.
9#[repr(transparent)]
10#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
11#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
12pub struct VirtualSourceId(pub u32);
13
14/// Session-local handle for a future provider-backed virtual reference.
15#[repr(transparent)]
16#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
17#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
18pub struct VirtualRangeId(pub u32);
19
20/// Stable persisted identity for a future virtual source.
21#[derive(Clone, Debug, PartialEq, Eq, Hash)]
22#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
23pub struct VirtualSourceKey {
24    pub namespace: String,
25    pub name: String,
26}
27
28/// Provider-supplied version token for immutable or versioned virtual data.
29#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
30#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
31pub struct VirtualProviderVersion {
32    pub fingerprint_hi: u64,
33    pub fingerprint_lo: u64,
34}
35
36/// Descriptor kind for a future virtual reference.
37#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
38#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
39pub enum VirtualReferenceKind {
40    Scalar,
41    Range,
42    Column,
43    Table,
44    DataFrame,
45}
46
47/// Versioning semantics for a future virtual reference.
48#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
49#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
50pub enum VirtualReferenceVolatility {
51    Immutable,
52    Versioned,
53    Volatile,
54}
55
56/// Error category descriptor for future virtual provider failures.
57#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
58#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
59pub enum VirtualReferenceErrorKind {
60    MissingProvider,
61    MissingReference,
62    ShapeMismatch,
63    UnsupportedCapability,
64    ProviderError,
65}