diff --git a/minisql/src/internals/schema.rs b/minisql/src/internals/schema.rs index c23c24a..4f2bf54 100644 --- a/minisql/src/internals/schema.rs +++ b/minisql/src/internals/schema.rs @@ -11,9 +11,9 @@ use std::collections::HashMap; #[derive(Debug)] pub struct TableSchema { table_name: TableName, // used for descriptive errors - pub primary_key: ColumnPosition, - pub column_name_position_mapping: BiMap, - pub types: Vec, + primary_key: ColumnPosition, + column_name_position_mapping: BiMap, + types: Vec, } pub type TableName = String; @@ -32,6 +32,10 @@ impl TableSchema { &self.table_name } + pub fn column_type(&self, column_position: ColumnPosition) -> DbType { + self.types[column_position] + } + fn get_column(&self, column_name: &ColumnName) -> DbResult<(DbType, ColumnPosition)> { match self.column_name_position_mapping.get_by_left(column_name) { Some(column_position) => match self.types.get(*column_position) { diff --git a/minisql/src/internals/table.rs b/minisql/src/internals/table.rs index e5506e0..36abf76 100644 --- a/minisql/src/internals/table.rs +++ b/minisql/src/internals/table.rs @@ -206,7 +206,7 @@ impl Table { let column_name: ColumnName = self .schema .column_name_from_column_position(column_position)?; - let type_ = self.schema.types[column_position]; + let type_ = self.schema.column_type(column_position); Err(Error::ValueDoesNotMatchExpectedType( self.table_name().clone(), column_name,