Skip to content

Commit bba615d

Browse files
committed
docs: add vector extension example
1 parent ce81570 commit bba615d

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed

Cargo.lock

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[package]
2+
edition.workspace = true
3+
name = "vector_extension"
4+
publish = false
5+
license.workspace = true
6+
version.workspace = true
7+
8+
[dependencies]
9+
anyhow = { workspace = true }
10+
postgresql_extensions = { path = "../../postgresql_extensions" }
11+
postgresql_embedded = { path = "../../postgresql_embedded" }
12+
sqlx = { workspace = true, features = ["runtime-tokio"] }
13+
tokio = { workspace = true, features = ["full"] }
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#![forbid(unsafe_code)]
2+
#![deny(clippy::pedantic)]
3+
4+
use anyhow::Result;
5+
use postgresql_embedded::{PostgreSQL, Settings, VersionReq};
6+
use sqlx::PgPool;
7+
8+
#[tokio::main]
9+
async fn main() -> Result<()> {
10+
let settings = Settings {
11+
version: VersionReq::parse("=16.3.0")?,
12+
..Default::default()
13+
};
14+
15+
println!("Installing the vector extension from TensorChord");
16+
postgresql_extensions::install(
17+
&settings,
18+
"tensor-chord",
19+
"pgvecto.rs",
20+
&VersionReq::parse("=0.3.0")?,
21+
)
22+
.await?;
23+
24+
println!("Installing PostgreSQL");
25+
let mut postgresql = PostgreSQL::new(settings);
26+
postgresql.setup().await?;
27+
postgresql.start().await?;
28+
29+
let database_name = "vector-example";
30+
println!("Creating database {database_name}");
31+
postgresql.create_database(database_name).await?;
32+
33+
println!("Connecting to database {database_name}");
34+
let settings = postgresql.settings();
35+
let database_url = settings.url(database_name);
36+
let pool = PgPool::connect(database_url.as_str()).await?;
37+
38+
println!("Configuring the vector extension");
39+
sqlx::query("CREATE EXTENSION vectors")
40+
.execute(pool)
41+
.await?;
42+
43+
println!("Stopping database");
44+
postgresql.stop().await?;
45+
Ok(())
46+
}
47+
48+
#[cfg(target_os = "linux")]
49+
#[cfg(test)]
50+
mod test {
51+
use super::*;
52+
53+
#[test]
54+
fn test_main() -> Result<()> {
55+
main()
56+
}
57+
}

0 commit comments

Comments
 (0)