Skip to main content

Crate firebird_wire

Crate firebird_wire 

Source
Expand description

§firebird-wire

Um driver síncrono, puramente em Rust, para o Firebird 5+, que fala o protocolo de comunicação nativo (wire protocol) diretamente sobre TCP — sem dependência do libfbclient.

§Por onde começar

Se você só quer usar o banco, comece por estes tipos:

  • ConnectConfig: dados de host, banco, usuário e senha.
  • Connection: a conexão aberta com o Firebird.
  • Transaction: o bloco de trabalho confirmado por commit ou desfeito por rollback.
  • Statement: um SQL preparado para executar e buscar linhas.
  • Value: valores enviados como parâmetros ou recebidos em linhas.

Um primeiro uso costuma seguir esta ordem:

use firebird_wire::{ConnectConfig, Connection, Value};

fn main() -> firebird_wire::Result<()> {
    let cfg = ConnectConfig::new()
        .host("127.0.0.1")
        .port(3050)
        .database("/dados/app.fdb")
        .user("SYSDBA")
        .password("masterkey");

    let mut conn = Connection::connect(&cfg)?;
    let tx = conn.begin()?;

    let mut stmt = conn.prepare(&tx, "SELECT ? FROM RDB$DATABASE")?;
    stmt.execute(&mut conn, &tx, &[Value::Int(42)])?;
    if let Some(row) = stmt.fetch(&mut conn)? {
        println!("{:?}", row[0]);
    }
    stmt.drop_statement(&mut conn)?;

    tx.commit(&mut conn)?;
    conn.close()?;
    Ok(())
}

Para uma explicação mais didática, leia COMECE-AQUI.md no repositório.

Destaques:

  • API bloqueante baseada na biblioteca padrão.
  • Autenticação SRP / Srp256 com criptografia de comunicação opcional ARC4 / ChaCha20.
  • Prepared statements, cursores roláveis (FB5), transações.
  • DML em lote / array via o protocolo de batch do FB4+ (op_batch_*).
  • Pool de conexões.
  • Gerenciador de serviços (op_service_*): versão do servidor, log, etc.

A crate é construída em camadas. Os módulos wire, auth, blr, message e similares são implementação de baixo nível; para uso comum prefira os tipos reexportados no topo da crate. Isto é um trabalho em andamento — veja o README da crate para a superfície já implementada.

Re-exports§

pub use array::ArrayDesc;
pub use array::Dimension;
pub use batch::Batch;
pub use batch::BatchError;
pub use batch::BatchOptions;
pub use batch::BatchResult;
pub use blob::Blob;
pub use blob::BlobWriter;
pub use charset::Charset;
pub use config::ConnectConfig;
pub use config::WireCrypt;
pub use connection::Connection;
pub use decfloat::DecFloat;
pub use decfloat::ParseDecFloatError;
pub use error::DatabaseError;
pub use error::Error;
pub use error::Result;
pub use error::StatusArg;
pub use error::StatusVector;
pub use events::EventListener;
pub use pool::Pool;
pub use pool::PoolConfig;
pub use pool::PooledConnection;
pub use service::ServiceManager;
pub use service::UserInfo;
pub use service::UserParams;
pub use statement::RowStream;
pub use statement::RowsAffected;
pub use statement::Statement;
pub use transaction::AccessMode;
pub use transaction::IsolationLevel;
pub use transaction::LockResolution;
pub use transaction::Transaction;
pub use transaction::TransactionBuilder;
pub use value::CivilDate;
pub use value::CivilTime;
pub use value::CivilTimestamp;
pub use value::ColumnMeta;
pub use value::TimeTz;
pub use value::TimestampTz;
pub use value::Value;

Modules§

array
Colunas ARRAY do SQL (op_get_slice / op_put_slice / op_slice).
auth
Autenticação e criptografia do wire: o cliente SRP e as cifras de fluxo usadas durante o handshake de conexão.
batch
DML em lote (batch) — o recurso “principal” de array DML do Firebird 4+.
blob
Leitura e escrita de BLOBs.
blr
Geração de BLR (Binary Language Representation) para descrições de mensagens.
charset
Decodificação de texto conforme o charset da conexão.
config
Configuração da conexão.
connection
A conexão TCP: negociação de protocolo, autenticação SRP, criptografia de comunicação (wire) opcional, e attach/create do banco de dados.
decfloat
Decodificação de DECFLOAT(16)/DECFLOAT(34) do Firebird — os formatos de ponto flutuante decimal IEEE 754-2008 decimal64 e decimal128, com o coeficiente em DPD (Densely Packed Decimal).
dos
Tabelas de code pages DOS/OEM single-byte (CP437, CP850, CP852, …).
error
Tipos de erro do driver.
events
Eventos do banco (POST_EVENT / isc_que_events).
message
Decodificação de mensagens de linha.
pool
Pool de conexões reutilizáveis ao servidor Firebird.
service
O gerenciador de serviços do Firebird (Service Manager): backup/restore (gbak), estatísticas (gstat), reparos (gfix), gestão de usuários, leitura do log do servidor, etc.
statement
Instruções preparadas (statements): alocar, preparar, executar e buscar linhas.
transaction
Transações: construção do TPB, início e commit/rollback (com variantes retentivas).
tz
Tabela de zonas e tipos para TIME/TIMESTAMP WITH TIME ZONE (FB4+).
value
Valores SQL e metadados de coluna.
wire
Blocos de construção de baixo nível do protocolo de comunicação (wire protocol): constantes, o codec XDR e o fluxo (stream) de pacotes enquadrado usado para conversar com um servidor Firebird.