db+adapter, add sqlx + schema & add adapter
Adds SQLX for database management, and an Adapter interface for interacting with it. Through the type "AdapterPool" Creates an initial_schema with everything I think I'll need.
This commit is contained in:
parent
a42853ac5a
commit
674079769d
7 changed files with 1514 additions and 14 deletions
|
|
@ -3,3 +3,36 @@ use std::error::Error;
|
|||
type Result<T> = std::result::Result<T, Box<dyn Error>>;
|
||||
|
||||
pub mod score;
|
||||
pub struct AdapterPool(sqlx::SqlitePool);
|
||||
pub struct AdapterBuilder {
|
||||
database_url: String,
|
||||
}
|
||||
|
||||
impl AdapterBuilder {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
database_url: "sqlite:test.db".to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn database_url(mut self, url: &str) -> Self {
|
||||
self.database_url = url.to_string();
|
||||
self
|
||||
}
|
||||
|
||||
pub async fn create(self) -> Result<Adapter> {
|
||||
let db = sqlx::sqlite::SqlitePoolOptions::new()
|
||||
.connect(&self.database_url).await?;
|
||||
sqlx::migrate!().run(&db).await?;
|
||||
|
||||
Ok(Adapter { db: AdapterPool(db) })
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Adapter {
|
||||
db: AdapterPool,
|
||||
}
|
||||
|
||||
impl Adapter {
|
||||
pub fn get_pool(&self) -> &AdapterPool { &self.db }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue