myself 0.5.0

Myself is a Rust library for building conversational agents powered by OpenAI's language model, providing a simple Agent abstraction to manage interactions and memory.
Documentation
use sqlx::{postgres::PgPool, Executor};

const MIGRATION_DATABASE_SQL: &str = "
BEGIN;

CREATE TABLE IF NOT EXISTS agents (
    id UUID PRIMARY KEY,
    created_at TIMESTAMP NOT NULL,
    updated_at TIMESTAMP NOT NULL,
    name TEXT NOT NULL,

    default_interaction_user_name TEXT NOT NULL,
    default_interaction_constitution TEXT NOT NULL,
    default_interaction_memory_size INTEGER NOT NULL
);


CREATE TABLE IF NOT EXISTS interactions (
    id UUID PRIMARY KEY,
    
    created_at TIMESTAMP NOT NULL,
    updated_at TIMESTAMP NOT NULL,

    user_name TEXT NOT NULL,
    constitution TEXT NOT NULL,
    
    short_term_memory TEXT NOT NULL,
    default_long_term_memory_size INTEGER NOT NULL,
    
    agent_id UUID REFERENCES agents(id)
);


CREATE TABLE IF NOT EXISTS interaction_blocks (
    id UUID PRIMARY KEY,
    
    created_at TIMESTAMP NOT NULL,
    updated_at TIMESTAMP NOT NULL,
    
    interaction_id UUID NOT NULL REFERENCES interactions(id),
    
    role TEXT NOT NULL,
    content TEXT NOT NULL,

    name TEXT
);


CREATE TABLE IF NOT EXISTS meta (
    id UUID PRIMARY KEY,

    created_at TIMESTAMP NOT NULL,
    updated_at TIMESTAMP NOT NULL,

    default_interaction_id UUID NOT NULL REFERENCES interactions(id)
);

COMMIT;
";

pub async fn migrate_database_with_pg_pool(pool: &PgPool) {
    pool.execute(MIGRATION_DATABASE_SQL).await.unwrap();
}