tank-mysql 0.21.0

MySQL and MaridDB driver implementation for Tank: the Rust data layer
Documentation
<div align="center">
    <img width="300" height="300" src="../docs/public/logo.png" alt="Tank: Table Abstraction & Navigation Kit logo featuring a green tank with a gear background and stacked database cylinders" />
</div>

# tank-mysql

MySQL and MariaDB driver implementation for [Tank](https://crates.io/crates/tank): the Rust data layer.

Implements Tank’s `Driver` and related traits for MySQL and MariaDB, mapping Tank operations and queries into direct MySQL commands. It does not replace the main [`tank`](https://crates.io/crates/tank) crate. You still need it to define entities, manage schemas, and build queries.

📘 https://tankhq.github.io/tank

🖥️ https://github.com/TankHQ/tank

📦 https://crates.io/crates/tank

## Features
- Async connection and execution via [`mysql_async`]https://crates.io/crates/mysql_async
- TLS support via `native-tls`
- Support for MariaDB and MySQL

## Install
```sh
cargo add tank
cargo add tank-mysql
```

## Quick Start
```rust
use tank::{Connection, Driver, Executor};
use tank_mysql::MySQLDriver;

let driver = MySQLDriver::new();
let connection = driver
    .connect("mysql://user:pass@127.0.0.1:3306/db?require_ssl=true".into())
    .await?;
```

## Running Tests
Tests need a MySQL instance. Provide a connection URL via `TANK_MYSQL_TEST`. If absent, a containerized MySQL will be launched automatically using [testcontainers-modules](https://crates.io/crates/testcontainers-modules).

1. Ensure Docker is running (linux):
```sh
systemctl status docker
```
2. Add your user to the `docker` group if needed (linux):
```sh
sudo usermod -aG docker $USER
```

> [!CAUTION]
> Avoid aborting tests mid‑run (e.g. killing the process at a breakpoint). Containers might be left running and consume resources.
>
> List containers:
> ```sh
> docker ps
> ```
> Stop container:
> ```sh
> docker kill <container_id_or_name>
> ```