dachterasse/asynch/lectures/
datasource.rs1use crate::{StaticDegree, Lecture};
2use async_trait::async_trait;
3pub type Error = String;
4
5pub type LoadResult = Result<Vec<Lecture>, Error>;
6pub type SaveResult = Result<(), Error>;
7
8#[async_trait]
9pub trait ReadOnlyDataSource: Send + Sync {
10 async fn load_lectures(&self, degree: &'static StaticDegree) -> LoadResult;
11}
12
13#[async_trait]
14pub trait ReadWriteDataSource: ReadOnlyDataSource {
15 async fn save_lectures(&self, degree: &'static StaticDegree, lectures: &[Lecture]) -> SaveResult;
16}