pub struct PostgresIntrospector { /* private fields */ }Expand description
PostgreSQL introspector for fact table metadata.
Implementations§
Source§impl PostgresIntrospector
impl PostgresIntrospector
Sourcepub async fn get_indexed_nested_columns(
&self,
view_name: &str,
) -> Result<HashSet<String>>
pub async fn get_indexed_nested_columns( &self, view_name: &str, ) -> Result<HashSet<String>>
Get indexed columns for a view/table that match the nested path naming convention.
This method introspects the database to find columns that follow the FraiseQL indexed column naming conventions:
- Human-readable:
items__product__category__code(double underscore separated) - Entity ID format:
f{entity_id}__{field_name}(e.g.,f200100__code)
These columns are created by DBAs to optimize filtering on nested GraphQL paths by avoiding JSONB extraction at runtime.
§Arguments
view_name- Name of the view or table to introspect
§Returns
Set of column names that match the indexed column naming conventions.
§Errors
Returns FraiseQLError::ConnectionPool if a connection cannot be acquired,
or FraiseQLError::Database if the query fails.
§Example
use fraiseql_db::postgres::PostgresIntrospector;
use deadpool_postgres::Pool;
let introspector = PostgresIntrospector::new(pool);
let indexed_cols = introspector.get_indexed_nested_columns("v_order_items").await?;
// Returns: {"items__product__category__code", "f200100__code", ...}Trait Implementations§
Source§impl DatabaseIntrospector for PostgresIntrospector
impl DatabaseIntrospector for PostgresIntrospector
Source§async fn list_fact_tables(&self) -> Result<Vec<String>>
async fn list_fact_tables(&self) -> Result<Vec<String>>
List all fact tables in the database (tables starting with “tf_”). Read more
Source§async fn get_columns(
&self,
table_name: &str,
) -> Result<Vec<(String, String, bool)>>
async fn get_columns( &self, table_name: &str, ) -> Result<Vec<(String, String, bool)>>
Query column information for a table. Read more
Source§async fn get_indexed_columns(&self, table_name: &str) -> Result<Vec<String>>
async fn get_indexed_columns(&self, table_name: &str) -> Result<Vec<String>>
Query indexes for a table. Read more
Source§fn database_type(&self) -> DatabaseType
fn database_type(&self) -> DatabaseType
Get database type (for SQL type parsing).
Source§async fn get_sample_jsonb(
&self,
table_name: &str,
column_name: &str,
) -> Result<Option<Value>>
async fn get_sample_jsonb( &self, table_name: &str, column_name: &str, ) -> Result<Option<Value>>
Get sample JSONB data from a column to extract dimension paths. Read more
Source§async fn list_relations(&self) -> Result<Vec<RelationInfo>>
async fn list_relations(&self) -> Result<Vec<RelationInfo>>
List all relations (tables and views) in the database. Read more
Auto Trait Implementations§
impl Freeze for PostgresIntrospector
impl !RefUnwindSafe for PostgresIntrospector
impl Send for PostgresIntrospector
impl Sync for PostgresIntrospector
impl Unpin for PostgresIntrospector
impl UnsafeUnpin for PostgresIntrospector
impl !UnwindSafe for PostgresIntrospector
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more