sqlite: create if not exists and run migrations

This commit is contained in:
Lennart
2023-10-08 15:08:12 +02:00
parent 4f2e92c953
commit eb9e317e6f
2 changed files with 24 additions and 1 deletions

View File

@@ -0,0 +1,16 @@
CREATE TABLE calendars (
id TEXT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
owner TEXT NOT NULL,
description TEXT,
color TEXT,
timezone TEXT NOT NULL
);
CREATE TABLE events (
uid TEXT NOT NULL,
cid TEXT NOT NULL,
PRIMARY KEY (cid, uid),
FOREIGN KEY (cid) REFERENCES calendars(uid)
);

View File

@@ -10,6 +10,7 @@ use rustical_caldav::{configure_dav, configure_well_known};
use rustical_store::calendar::CalendarStore;
use rustical_store::sqlite_store::SqliteCalendarStore;
use rustical_store::toml_store::TomlCalendarStore;
use sqlx::sqlite::SqliteConnectOptions;
use sqlx::SqlitePool;
use std::fs;
use std::sync::Arc;
@@ -39,7 +40,13 @@ async fn main() -> Result<()> {
}))
}
CalendarStoreConfig::Sqlite(SqliteCalendarStoreConfig { db_url }) => {
let db = SqlitePool::connect(db_url).await?;
let db = SqlitePool::connect_with(
SqliteConnectOptions::new()
.filename(db_url)
.create_if_missing(true),
)
.await?;
sqlx::migrate!("./migrations").run(&db).await?;
Arc::new(RwLock::new(SqliteCalendarStore::new(Arc::new(db))))
}
};