From a01ffbc5af084a23823d85910cb07772e5608335 Mon Sep 17 00:00:00 2001 From: Ziyang Hu Date: Sun, 24 Apr 2022 22:16:03 +0800 Subject: [PATCH] define type in environment --- src/db/eval.rs | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/db/eval.rs b/src/db/eval.rs index 86466c4e..c64b8ce3 100644 --- a/src/db/eval.rs +++ b/src/db/eval.rs @@ -25,6 +25,20 @@ impl<'a> Session<'a> { tuple.push_int(depth_code); tuple } + + fn define_data(&mut self, name: &str, data: Tuple>, in_root: bool) -> Result<()> { + let key = self.encode_definable_key(name, in_root); + if in_root { + self.txn.put(true, &self.perm_cf, key, data)?; + } else { + let mut ikey = Tuple::with_null_prefix(); + ikey.push_int(self.stack_depth as i64); + ikey.push_str(name); + self.txn.put(false, &self.temp_cf, key, data)?; + self.txn.put(false, &self.temp_cf, ikey, "")?; + } + Ok(()) + } } @@ -62,23 +76,15 @@ impl<'a> Environment for Session<'a> { } fn define_variable(&mut self, name: &str, val: &Value, in_root: bool) -> Result<()> { - let key = self.encode_definable_key(name, in_root); let mut data = Tuple::with_data_prefix(DataKind::Value); data.push_value(val); - if in_root { - self.txn.put(true, &self.perm_cf, key, data)?; - } else { - let mut ikey = Tuple::with_null_prefix(); - ikey.push_int(self.stack_depth as i64); - ikey.push_str(name); - self.txn.put(false, &self.temp_cf, key, data)?; - self.txn.put(false, &self.temp_cf, ikey, "")?; - } - Ok(()) + self.define_data(name, data, in_root) } fn define_type_alias(&mut self, name: &str, typ: &Typing, in_root: bool) -> Result<()> { - todo!() + let mut data = Tuple::with_data_prefix(DataKind::TypeAlias); + data.push_str(typ.to_string()); + self.define_data(name, data, in_root) } fn define_table(&mut self, table: &Table, in_root: bool) -> Result<()> {