2022-03-23 22:10:31 +08:00
|
|
|
use crate::services::field::*;
|
2022-03-15 11:07:18 +08:00
|
|
|
use flowy_error::FlowyError;
|
|
|
|
use flowy_grid_data_model::entities::{FieldMeta, FieldType};
|
|
|
|
|
|
|
|
pub trait CellDataSerde {
|
|
|
|
fn deserialize_cell_data(&self, data: String) -> String;
|
|
|
|
fn serialize_cell_data(&self, data: &str) -> Result<String, FlowyError>;
|
|
|
|
}
|
|
|
|
|
|
|
|
#[allow(dead_code)]
|
|
|
|
pub fn serialize_cell_data(data: &str, field: &FieldMeta) -> Result<String, FlowyError> {
|
|
|
|
match field.field_type {
|
2022-03-23 22:10:31 +08:00
|
|
|
FieldType::RichText => RichTextTypeOption::from(field).serialize_cell_data(data),
|
|
|
|
FieldType::Number => NumberTypeOption::from(field).serialize_cell_data(data),
|
|
|
|
FieldType::DateTime => DateTypeOption::from(field).serialize_cell_data(data),
|
|
|
|
FieldType::SingleSelect => SingleSelectTypeOption::from(field).serialize_cell_data(data),
|
|
|
|
FieldType::MultiSelect => MultiSelectTypeOption::from(field).serialize_cell_data(data),
|
|
|
|
FieldType::Checkbox => CheckboxTypeOption::from(field).serialize_cell_data(data),
|
2022-03-15 11:07:18 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn deserialize_cell_data(data: String, field: &FieldMeta) -> Result<String, FlowyError> {
|
|
|
|
let s = match field.field_type {
|
2022-03-23 22:10:31 +08:00
|
|
|
FieldType::RichText => RichTextTypeOption::from(field).deserialize_cell_data(data),
|
|
|
|
FieldType::Number => NumberTypeOption::from(field).deserialize_cell_data(data),
|
|
|
|
FieldType::DateTime => DateTypeOption::from(field).deserialize_cell_data(data),
|
|
|
|
FieldType::SingleSelect => SingleSelectTypeOption::from(field).deserialize_cell_data(data),
|
|
|
|
FieldType::MultiSelect => MultiSelectTypeOption::from(field).deserialize_cell_data(data),
|
|
|
|
FieldType::Checkbox => CheckboxTypeOption::from(field).deserialize_cell_data(data),
|
2022-03-15 11:07:18 +08:00
|
|
|
};
|
|
|
|
Ok(s)
|
|
|
|
}
|