From 437c73f649811c52a3c66538012010d67bd48936 Mon Sep 17 00:00:00 2001 From: Erik Mackdanz Date: Wed, 27 Nov 2024 13:36:24 -0600 Subject: [PATCH] pull init-database to fn --- src/main.rs | 72 ++++++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/src/main.rs b/src/main.rs index 32f2a1e..98c1db8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -111,6 +111,43 @@ impl Args { } } +fn init_database(dbname: String, host: String, user: String, password: String) -> Result<()> { + println!("maybe creating the database"); + let mut client = postgres::Config::new() + .dbname("postgres") + .host(&host) + .user(&user) + .password(password.clone()) + .connect(NoTls)?; + + let result = + client.query("SELECT 1 FROM pg_database WHERE datname=$1",&[&dbname])?; + + if result.is_empty() { + println!("creating database {}", dbname); + client.execute(&format!("create database {}",dbname),&[])?; + } else { + println!("database {} exists already", dbname); + } + let _ = client.close(); + + println!("maybe creating database objects"); + let mut client = postgres::Config::new() + .dbname(&dbname) + .host(&host) + .user(&user) + .password(password) + .connect(NoTls)?; + + client.execute("CREATE EXTENSION IF NOT EXISTS vector", &[])?; + client.execute( + "CREATE TABLE if not exists documents \ + (id serial PRIMARY KEY, content text, \ + embedding vector(384))", &[])?; + + Ok(()) +} + fn main() -> Result<()> { let args = Args::parse(); @@ -144,40 +181,7 @@ fn main() -> Result<()> { match args.action { Action::InitDatabase{ dbname, host, user, password } => { - - println!("maybe creating the database"); - let mut client = postgres::Config::new() - .dbname("postgres") - .host(&host) - .user(&user) - .password(password.clone()) - .connect(NoTls)?; - - let result = - client.query("SELECT 1 FROM pg_database WHERE datname=$1",&[&dbname])?; - - if result.is_empty() { - println!("creating database {}", dbname); - client.execute(&format!("create database {}",dbname),&[])?; - } else { - println!("database {} exists already", dbname); - } - let _ = client.close(); - - println!("maybe creating database objects"); - let mut client = postgres::Config::new() - .dbname(&dbname) - .host(&host) - .user(&user) - .password(password) - .connect(NoTls)?; - - client.execute("CREATE EXTENSION IF NOT EXISTS vector", &[])?; - client.execute( - "CREATE TABLE if not exists documents \ - (id serial PRIMARY KEY, content text, \ - embedding vector(384))", &[])?; - + init_database(dbname, host, user, password)?; } _ => {} } -- 2.52.0