lumni 0.0.5

Portable file-utility for object-stores
Documentation
use std::collections::HashMap;

use crate::table::TableColumnValue;

#[derive(Debug, Clone)]
pub struct FileObject {
    name: String,
    size: u64,
    modified: Option<u64>,
    tags: Option<HashMap<String, String>>,
}

impl FileObject {
    pub fn new(
        name: String,
        size: u64,
        modified: Option<u64>,
        tags: Option<HashMap<String, String>>,
    ) -> Self {
        FileObject {
            name,
            size,
            modified,
            tags,
        }
    }

    pub fn name(&self) -> &str {
        &self.name
    }

    pub fn size(&self) -> u64 {
        self.size
    }

    pub fn modified(&self) -> Option<u64> {
        self.modified
    }

    pub fn tags(&self) -> &Option<HashMap<String, String>> {
        &self.tags
    }

    pub fn get_value_by_column_name(
        &self,
        column_name: &str,
    ) -> Option<TableColumnValue> {
        match column_name {
            "name" => Some(TableColumnValue::StringColumn(self.name.clone())),
            "size" => Some(TableColumnValue::Uint64Column(self.size)),
            "modified" => self
                .modified
                .map(|val| TableColumnValue::OptionalUint64Column(Some(val))),
            _ => None,
        }
    }
}