1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
use std::mem; use prelude::*; use super::{PgConnection, PgTypeMetadata}; #[allow(missing_debug_implementations)] pub struct PgMetadataLookup { conn: PgConnection, } impl PgMetadataLookup { pub(crate) fn new(conn: &PgConnection) -> &Self { unsafe { mem::transmute(conn) } } pub fn lookup_type(&self, type_name: &str) -> PgTypeMetadata { use self::pg_type::dsl::*; pg_type.select((oid, typarray)) .filter(typname.eq(type_name)) .first(&self.conn) .unwrap_or_default() } } table! { pg_type (oid) { oid -> Oid, typname -> Text, typarray -> Oid, } }