mirror of
https://github.com/GothenburgBitFactory/taskchampion-sync-server.git
synced 2025-07-07 20:06:41 +02:00
Refactor core into a type with methods
This introduces a `Server` type that tracks the config and storage.
This commit is contained in:
parent
2b1ad12a79
commit
5a704729d7
9 changed files with 583 additions and 1745 deletions
|
@ -3,7 +3,6 @@ use crate::api::{
|
|||
};
|
||||
use actix_web::{error, get, web, HttpRequest, HttpResponse, Result};
|
||||
use std::sync::Arc;
|
||||
use taskchampion_sync_server_core::get_snapshot;
|
||||
|
||||
/// Get a snapshot.
|
||||
///
|
||||
|
@ -18,17 +17,19 @@ pub(crate) async fn service(
|
|||
req: HttpRequest,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<HttpResponse> {
|
||||
let mut txn = server_state.storage.txn().map_err(failure_to_ise)?;
|
||||
|
||||
let client_id = client_id_header(&req)?;
|
||||
|
||||
let client = txn
|
||||
.get_client(client_id)
|
||||
.map_err(failure_to_ise)?
|
||||
.ok_or_else(|| error::ErrorNotFound("no such client"))?;
|
||||
let client = {
|
||||
let mut txn = server_state.server.txn().map_err(failure_to_ise)?;
|
||||
txn.get_client(client_id)
|
||||
.map_err(failure_to_ise)?
|
||||
.ok_or_else(|| error::ErrorNotFound("no such client"))?
|
||||
};
|
||||
|
||||
if let Some((version_id, data)) =
|
||||
get_snapshot(txn, &server_state.config, client_id, client).map_err(failure_to_ise)?
|
||||
if let Some((version_id, data)) = server_state
|
||||
.server
|
||||
.get_snapshot(client_id, client)
|
||||
.map_err(failure_to_ise)?
|
||||
{
|
||||
Ok(HttpResponse::Ok()
|
||||
.content_type(SNAPSHOT_CONTENT_TYPE)
|
||||
|
@ -42,7 +43,7 @@ pub(crate) async fn service(
|
|||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::api::CLIENT_ID_HEADER;
|
||||
use crate::Server;
|
||||
use crate::WebServer;
|
||||
use actix_web::{http::StatusCode, test, App};
|
||||
use chrono::{TimeZone, Utc};
|
||||
use pretty_assertions::assert_eq;
|
||||
|
@ -52,7 +53,7 @@ mod test {
|
|||
#[actix_rt::test]
|
||||
async fn test_not_found() {
|
||||
let client_id = Uuid::new_v4();
|
||||
let storage: Box<dyn Storage> = Box::new(InMemoryStorage::new());
|
||||
let storage = InMemoryStorage::new();
|
||||
|
||||
// set up the storage contents..
|
||||
{
|
||||
|
@ -60,7 +61,7 @@ mod test {
|
|||
txn.new_client(client_id, Uuid::new_v4()).unwrap();
|
||||
}
|
||||
|
||||
let server = Server::new(Default::default(), storage);
|
||||
let server = WebServer::new(Default::default(), storage);
|
||||
let app = App::new().configure(|sc| server.config(sc));
|
||||
let app = test::init_service(app).await;
|
||||
|
||||
|
@ -78,7 +79,7 @@ mod test {
|
|||
let client_id = Uuid::new_v4();
|
||||
let version_id = Uuid::new_v4();
|
||||
let snapshot_data = vec![1, 2, 3, 4];
|
||||
let storage: Box<dyn Storage> = Box::new(InMemoryStorage::new());
|
||||
let storage = InMemoryStorage::new();
|
||||
|
||||
// set up the storage contents..
|
||||
{
|
||||
|
@ -96,7 +97,7 @@ mod test {
|
|||
.unwrap();
|
||||
}
|
||||
|
||||
let server = Server::new(Default::default(), storage);
|
||||
let server = WebServer::new(Default::default(), storage);
|
||||
let app = App::new().configure(|sc| server.config(sc));
|
||||
let app = test::init_service(app).await;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue