mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-14 07:02:24 +00:00
Change upsert_event to put_event to match webdav spec
This commit is contained in:
@@ -73,7 +73,7 @@ pub async fn put_event<A: CheckAuthentication, C: CalendarStore + ?Sized>(
|
||||
.store
|
||||
.write()
|
||||
.await
|
||||
.upsert_event(cid, uid, body)
|
||||
.put_event(cid, uid, body)
|
||||
.await?;
|
||||
|
||||
Ok(HttpResponse::Ok().body(""))
|
||||
|
||||
@@ -113,12 +113,10 @@ impl CalendarStore for SqliteCalendarStore {
|
||||
Ok(event)
|
||||
}
|
||||
|
||||
async fn upsert_event(&mut self, cid: String, uid: String, ics: String) -> Result<(), Error> {
|
||||
// TODO: This is not actually an upsert
|
||||
// Do this extra step to ensure that the input is actually valid
|
||||
async fn put_event(&mut self, cid: String, uid: String, ics: String) -> Result<(), Error> {
|
||||
let _ = Event::from_ics(uid.to_owned(), ics.to_owned())?;
|
||||
sqlx::query!(
|
||||
"INSERT INTO events (cid, uid, ics) VALUES (?, ?, ?)",
|
||||
"REPLACE INTO events (cid, uid, ics) VALUES (?, ?, ?)",
|
||||
cid,
|
||||
uid,
|
||||
ics,
|
||||
|
||||
@@ -14,6 +14,6 @@ pub trait CalendarStore: Send + Sync + 'static {
|
||||
|
||||
async fn get_events(&self, cid: &str) -> Result<Vec<Event>, Error>;
|
||||
async fn get_event(&self, cid: &str, uid: &str) -> Result<Event, Error>;
|
||||
async fn upsert_event(&mut self, cid: String, uid: String, ics: String) -> Result<(), Error>;
|
||||
async fn put_event(&mut self, cid: String, uid: String, ics: String) -> Result<(), Error>;
|
||||
async fn delete_event(&mut self, cid: &str, uid: &str) -> Result<(), Error>;
|
||||
}
|
||||
|
||||
@@ -2,14 +2,12 @@ use rstest::rstest;
|
||||
use rstest_reuse::{self, apply, template};
|
||||
use rustical_store::sqlite_store::create_test_store;
|
||||
use rustical_store::store::CalendarStore;
|
||||
use rustical_store::toml_store::TomlCalendarStore;
|
||||
|
||||
const TIMEZONE: &str = include_str!("examples/timezone.ics");
|
||||
const EVENT: &str = include_str!("examples/event.ics");
|
||||
|
||||
#[template]
|
||||
#[rstest]
|
||||
#[case::toml(async {TomlCalendarStore::test()})]
|
||||
#[case::sqlite(async {create_test_store().await.unwrap() })]
|
||||
async fn cal_store<CS: CalendarStore>(
|
||||
#[future(awt)]
|
||||
@@ -43,7 +41,7 @@ async fn test_create_event<CS: CalendarStore>(store: CS) {
|
||||
.unwrap();
|
||||
|
||||
store
|
||||
.upsert_event("test".to_owned(), "asd".to_owned(), EVENT.to_owned())
|
||||
.put_event("test".to_owned(), "asd".to_owned(), EVENT.to_owned())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user