use crate::{BlockCellId, BlockFieldId, BlockId, SheetId};
pub trait BlockRefTrait {
fn get_all_keys(&self, ref_name: &str) -> Vec<(String, SheetId, BlockCellId)>;
fn get_all_fields(&self, ref_name: &str) -> Vec<String>;
fn resolve(
&self,
ref_name: &str,
key: &String,
field: &String,
) -> Option<(SheetId, BlockCellId)>;
fn get_all_keys_by_block(
&self,
sheet_id: SheetId,
block_id: BlockId,
) -> Vec<(String, SheetId, BlockCellId)>;
fn get_all_fields_by_block(&self, sheet_id: SheetId, block_id: BlockId) -> Vec<String>;
fn resolve_by_block(
&self,
sheet_id: SheetId,
block_id: BlockId,
key: &String,
field: &String,
) -> Option<(SheetId, BlockCellId)>;
fn resolve_by_block_field_id(
&self,
sheet_id: SheetId,
block_id: BlockId,
key: &String,
field_id: BlockFieldId,
) -> Option<(SheetId, BlockCellId)>;
fn get_all_field_ids_by_block(
&self,
sheet_id: SheetId,
block_id: BlockId,
) -> Vec<(String, BlockFieldId)>;
fn resolve_field_id(
&self,
sheet_id: SheetId,
block_id: BlockId,
field: &str,
) -> Option<BlockFieldId>;
fn fetch_field_name(
&self,
sheet_id: SheetId,
block_id: BlockId,
field_id: BlockFieldId,
) -> Option<String>;
}
pub trait BlockRefResolverTrait {
fn resolve_block_ref_name(&self, ref_name: &str) -> Option<(SheetId, BlockId)>;
fn resolve_block_field(
&self,
sheet_id: SheetId,
block_id: BlockId,
field: &str,
) -> Option<BlockFieldId>;
fn fetch_block_ref_name(&self, sheet_id: SheetId, block_id: BlockId) -> Option<String>;
fn fetch_block_field_name(
&self,
sheet_id: SheetId,
block_id: BlockId,
field_id: BlockFieldId,
) -> Option<String>;
}