mockgres 0.0.25

An in-memory database that replicates a reasonable subset of Postgres functionality to make unit tests that rely on a database to run.
Documentation
use pgwire::api::Type;

use crate::engine::DataType;

pub fn map_pg_type_to_datatype(t: &Type) -> Option<DataType> {
    match *t {
        Type::INT4 => Some(DataType::Int4),
        Type::INT8 => Some(DataType::Int8),
        Type::FLOAT8 => Some(DataType::Float8),
        Type::TEXT | Type::VARCHAR => Some(DataType::Text),
        Type::JSON => Some(DataType::Json),
        Type::JSONB => Some(DataType::Jsonb),
        Type::BOOL => Some(DataType::Bool),
        Type::DATE => Some(DataType::Date),
        Type::TIMESTAMP => Some(DataType::Timestamp),
        Type::TIMESTAMPTZ => Some(DataType::Timestamptz),
        Type::BYTEA => Some(DataType::Bytea),
        Type::INTERVAL => Some(DataType::Interval),
        Type::VOID => Some(DataType::Void),
        _ => None,
    }
}

pub fn map_datatype_to_pg_type(dt: &DataType) -> Type {
    match dt {
        DataType::Int4 => Type::INT4,
        DataType::Int8 => Type::INT8,
        DataType::Float8 => Type::FLOAT8,
        DataType::Text => Type::TEXT,
        DataType::Json => Type::JSON,
        DataType::Jsonb => Type::JSONB,
        DataType::Bool => Type::BOOL,
        DataType::Date => Type::DATE,
        DataType::Timestamp => Type::TIMESTAMP,
        DataType::Timestamptz => Type::TIMESTAMPTZ,
        DataType::Bytea => Type::BYTEA,
        DataType::Interval => Type::INTERVAL,
        DataType::Void => Type::VOID,
    }
}

pub fn lookup_show_value(name: &str) -> Option<String> {
    match name {
        "server_version" => Some("15.0".to_string()),
        "standard_conforming_strings" => Some("on".to_string()),
        _ => None,
    }
}

pub fn server_version_string() -> String {
    "PostgreSQL 15.0 on mockgres".to_string()
}