orign 0.2.3

A globally distributed container orchestrator
Documentation
// src/db.rs
use crate::config::CONFIG;
use sea_orm::{ConnectionTrait, Database, DatabaseConnection, DbErr, Schema};

pub type DbPool = DatabaseConnection;

pub async fn init_db() -> Result<DbPool, DbErr> {
    let database_url = &CONFIG.database_url;
    println!("Connecting to database at: {}", database_url);

    let db = Database::connect(database_url).await?;

    // Create the schema builder
    let schema = Schema::new(db.get_database_backend());

    // Create tables if they don't exist
    db.execute(
        db.get_database_backend().build(
            schema
                .create_table_from_entity(crate::entities::chat_history::Entity)
                .if_not_exists(),
        ),
    )
    .await?;

    if let Err(e) = db
        .execute(
            db.get_database_backend().build(
                schema
                    .create_table_from_entity(crate::entities::llm::Entity)
                    .if_not_exists(),
            ),
        )
        .await
    {
        eprintln!("Error creating `llms` table: {}", e);
        return Err(e);
    } else {
        println!("`llms` table created or already exists.");
    }

    if let Err(e) = db
        .execute(
            db.get_database_backend().build(
                schema
                    .create_table_from_entity(crate::entities::buffer::Entity)
                    .if_not_exists(),
            ),
        )
        .await
    {
        eprintln!("Error creating `buffers` table: {}", e);
        return Err(e);
    } else {
        println!("`buffers` table created or already exists.");
    }

    if let Err(e) = db
        .execute(
            db.get_database_backend().build(
                schema
                    .create_table_from_entity(crate::entities::human::Entity)
                    .if_not_exists(),
            ),
        )
        .await
    {
        eprintln!("Error creating `humans` table: {}", e);
        return Err(e);
    } else {
        println!("`humans` table created or already exists.");
    }

    if let Err(e) = db
        .execute(
            db.get_database_backend().build(
                schema
                    .create_table_from_entity(crate::entities::feedback::Entity)
                    .if_not_exists(),
            ),
        )
        .await
    {
        eprintln!("Error creating `feedback` table: {}", e);
        return Err(e);
    } else {
        println!("`feedback` table created or already exists.");
    }

    Ok(db)
}