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 porcommitou desfeito porrollback.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.