Skip to main content

Crate sea_query_hyperdb

Crate sea_query_hyperdb 

Source
Expand description

HyperDB SQL dialect backend for sea-query.

This crate provides HyperQueryBuilder, a sea-query backend that generates SQL compatible with HyperDB’s SQL dialect. HyperDB is largely PostgreSQL-compatible, so this builder currently delegates to PostgresQueryBuilder for all operations.

As Hyper’s SQL dialect evolves and diverges from PostgreSQL, this builder will be updated to emit Hyper-specific syntax where needed (e.g., type names, function calls, or DDL extensions).

§Usage

HyperQueryBuilder implements all sea-query backend traits (QueryBuilder, SchemaBuilder, GenericBuilder), so it can be used anywhere a sea-query backend is accepted:

use sea_query::{Query, Expr, Iden, PostgresQueryBuilder};
use sea_query_hyperdb::HyperQueryBuilder;

#[derive(Iden)]
enum Users {
    Table,
    Id,
    Name,
}

let query = Query::select()
    .column(Users::Id)
    .column(Users::Name)
    .from(Users::Table)
    .and_where(Expr::col(Users::Id).gt(10))
    .to_owned();

// Build with parameter placeholders ($1, $2, ...)
let (sql, values) = query.build(HyperQueryBuilder);
assert!(sql.contains("SELECT"));

// Or get the SQL string with values inlined
let sql_string = query.to_string(HyperQueryBuilder);
assert!(sql_string.contains("WHERE"));

§With hyperdb-api

use hyperdb_api::Connection;
use sea_query::{Query, Expr, Iden};
use sea_query_hyperdb::HyperQueryBuilder;

#[derive(Iden)]
enum Products {
    Table,
    Name,
    Price,
}

let query = Query::select()
    .column(Products::Name)
    .column(Products::Price)
    .from(Products::Table)
    .and_where(Expr::col(Products::Price).gt(100))
    .to_owned();

let sql = query.to_string(HyperQueryBuilder);
let result = conn.execute_query(&sql)?;

Structs§

HyperQueryBuilder
HyperDB-specific SQL dialect backend for sea-query.