CodeRED-Astra/rust-engine/src/db.rs

33 lines
979 B
Rust

use sqlx::{MySql, MySqlPool};
use tracing::info;
pub async fn init_db(database_url: &str) -> Result<MySqlPool, sqlx::Error> {
let pool = MySqlPool::connect(database_url).await?;
// Create tables if they don't exist. Simple schema for demo/hackathon use.
sqlx::query(
r#"
CREATE TABLE IF NOT EXISTS files (
id VARCHAR(36) PRIMARY KEY,
filename TEXT NOT NULL,
path TEXT NOT NULL,
description TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS queries (
id VARCHAR(36) PRIMARY KEY,
status VARCHAR(32) NOT NULL,
payload JSON,
result JSON,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
"#,
)
.execute(&pool)
.await?;
info!("Database initialized");
Ok(pool)
}