athena_rs 0.83.0

Database gateway API
Documentation
//! Data access helpers and Supabase clients.
//!
//! Provides functions to construct preconfigured `SupabaseClient` instances for
//! Athena and Suitsbooks projects, loaded from environment variables.
use dotenv::dotenv;
use dotenv::var;
use supabase_rs::SupabaseClient;

pub mod api_keys;
pub mod api_registry;
pub mod athena_router;
pub mod calculate;
pub mod events;
pub mod parse {
    pub mod strip_nulls;
}

pub async fn athena_supabase() -> SupabaseClient {
    dotenv().ok(); // Load the .env file

    let supabase_client: SupabaseClient = SupabaseClient::new(
        var("XLX_ATHENA_SUPABASE_URL").unwrap(),
        var("XLX_ATHENA_SUPABASE_KEY").unwrap(),
    )
    .unwrap();

    supabase_client
}

pub async fn suitsbooks_supabase() -> SupabaseClient {
    dotenv().ok(); // Load the .env file

    let supabase_client: SupabaseClient = SupabaseClient::new(
        var("XLX_SB_SUPABASE_URL").unwrap(),
        var("XLX_SB_SUPABASE_KEY").unwrap(),
    )
    .unwrap();

    supabase_client
}

use serde::Deserialize;
use serde::Serialize;
use serde_json::Value;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataTimeseries {
    pub data: Vec<Value>,
    pub interval: String,
    pub date_key: String,
}

impl DataTimeseries {
    /// Creates a new DataTimeseries instance
    ///
    /// # Arguments
    ///
    /// * `data` - The data to be stored in the DataTimeseries instance
    /// * `interval` - The interval of the data
    /// * `date_key` - The date key of the data
    ///
    /// # Returns
    ///
    /// A new DataTimeseries instance
    ///
    pub fn new(data: Vec<Value>, interval: String, date_key: String) -> Self {
        DataTimeseries {
            data,
            interval,
            date_key,
        }
    }
}