burncloud-database-impl 0.1.0

Database implementations for multiple backends (PostgreSQL, MySQL, SQLite, MongoDB) for BurnCloud
Documentation
# burncloud-database-impl


Database implementations for multiple backends (PostgreSQL, MySQL, SQLite, MongoDB) for the BurnCloud AI management system.

## Overview


`burncloud-database-impl` provides concrete implementations of the traits defined in `burncloud-database-core` for multiple popular database backends. This allows you to use the same high-level API regardless of which database you choose.

## Supported Databases


- **PostgreSQL** (default) - Full-featured with advanced JSON support
- **MySQL** - Popular relational database
- **SQLite** - Lightweight embedded database
- **MongoDB** - Document-oriented NoSQL database

## Features


- **Multi-database support**: Choose the right database for your needs
- **Feature flags**: Only compile the database drivers you need
- **Async support**: All implementations are fully async
- **Connection pooling**: Built-in connection pool management
- **Error handling**: Unified error handling across all backends
- **Type safety**: Strong typing with compile-time guarantees

## Installation


Add this to your `Cargo.toml`:

```toml
[dependencies]
burncloud-database-impl = "0.1"
```

### Feature Flags


By default, only PostgreSQL support is included. Enable other databases with feature flags:

```toml
[dependencies]
burncloud-database-impl = { version = "0.1", features = ["mysql", "sqlite"] }
```

Available features:
- `postgres` (default) - PostgreSQL support via sqlx
- `mysql` - MySQL support via mysql_async
- `sqlite` - SQLite support via rusqlite
- `mongodb_support` - MongoDB support via mongodb driver
- `all` - Enable all database backends

## Usage Examples


### PostgreSQL


```rust
use burncloud_database_impl::PostgresConnection;
use burncloud_database_core::{DatabaseConnection, QueryContext};

let mut conn = PostgresConnection::new("postgresql://user:pass@localhost/db".to_string());
conn.connect().await?;

let context = QueryContext::default();
conn.ping().await?;
```

### SQLite


```rust
use burncloud_database_impl::SQLiteConnection;

let mut conn = SQLiteConnection::new("./database.db".to_string());
conn.connect().await?;
```

### MySQL


```rust
use burncloud_database_impl::MySQLConnection;

let mut conn = MySQLConnection::new("mysql://user:pass@localhost/db".to_string());
conn.connect().await?;
```

### MongoDB


```rust
use burncloud_database_impl::MongoDBConnection;

let mut conn = MongoDBConnection::new(
    "mongodb://localhost:27017".to_string(),
    "my_database".to_string()
);
conn.connect().await?;
```

## Query Parameters


All implementations support type-safe query parameters:

```rust
use burncloud_database_impl::{StringParam, I64Param, BoolParam};

let params: Vec<&dyn QueryParam> = vec![
    &StringParam("user_id".to_string()),
    &I64Param(42),
    &BoolParam(true),
];
```

## Performance Considerations


- **PostgreSQL**: Best for complex queries and JSON operations
- **MySQL**: Good general-purpose choice with wide ecosystem support
- **SQLite**: Perfect for embedded applications and development
- **MongoDB**: Excellent for document-oriented data and flexible schemas

## Architecture


Each database implementation provides:
- Connection management with automatic reconnection
- Query execution with parameter binding
- Transaction support (where applicable)
- Error handling with database-specific error mapping

## License


Licensed under either of

 * Apache License, Version 2.0 ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.