]> Humopery - vecsearch.git/commitdiff
pull init-database to fn
authorErik Mackdanz <erikmack@gmail.com>
Wed, 27 Nov 2024 19:36:24 +0000 (13:36 -0600)
committerErik Mackdanz <erikmack@gmail.com>
Wed, 27 Nov 2024 19:36:24 +0000 (13:36 -0600)
src/main.rs

index 32f2a1ef253a6891d69052abf94eb08d64bc9f73..98c1db85775b0d70d2656b69f8b9191642fcf683 100644 (file)
@@ -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)?;
        }
        _ => {}
     }