use crate::{error::ToqlError, query::field_path::FieldPath, sql_arg::SqlArg};
use std::{cell::RefCell, result::Result};
pub enum IdentityAction {
Set(RefCell<Vec<SqlArg>>),
SetInvalid(RefCell<Vec<SqlArg>>),
Refresh,
RefreshInvalid,
RefreshValid,
}
pub trait TreeIdentity {
fn auto_id<'a, I>(descendents: I) -> Result<bool, ToqlError>
where
I: Iterator<Item = FieldPath<'a>>;
fn set_id<'a, 'b, I>(
&mut self,
descendents: I,
action: &'b IdentityAction,
) -> Result<(), ToqlError>
where
I: Iterator<Item = FieldPath<'a>> + Clone;
}