chore: rename server crate to application
This commit is contained in:
parent
7df6cbcc51
commit
e79db7c1d3
15 changed files with 50 additions and 43 deletions
|
|
@ -5,9 +5,9 @@ use axum::{
|
|||
};
|
||||
use tower_cookies::Cookies;
|
||||
|
||||
use crate::application::server::AppState;
|
||||
use crate::domain::users::User;
|
||||
use crate::infrastructure::auth::hash_token;
|
||||
use crate::server::server::AppState;
|
||||
|
||||
const SESSION_COOKIE_NAME: &str = "brewlog_session";
|
||||
|
||||
|
|
@ -8,10 +8,10 @@ use serde::Deserialize;
|
|||
use tower_cookies::{Cookie, Cookies};
|
||||
use tracing::{error, warn};
|
||||
|
||||
use crate::application::routes::render_html;
|
||||
use crate::application::server::AppState;
|
||||
use crate::domain::sessions::NewSession;
|
||||
use crate::infrastructure::auth::{generate_session_token, hash_token, verify_password};
|
||||
use crate::server::routes::render_html;
|
||||
use crate::server::server::AppState;
|
||||
|
||||
const SESSION_COOKIE_NAME: &str = "brewlog_session";
|
||||
|
||||
|
|
@ -13,7 +13,7 @@ use tower::ServiceBuilder;
|
|||
use tower_cookies::CookieManagerLayer;
|
||||
use tracing::error;
|
||||
|
||||
use crate::server::server::AppState;
|
||||
use crate::application::server::AppState;
|
||||
|
||||
use crate::presentation::templates::render_template;
|
||||
|
||||
|
|
@ -3,6 +3,13 @@ use axum::extract::{Path, Query, State};
|
|||
use axum::http::{HeaderMap, StatusCode};
|
||||
use axum::response::{Html, IntoResponse, Redirect, Response};
|
||||
|
||||
use crate::application::auth::AuthenticatedUser;
|
||||
use crate::application::errors::{ApiError, AppError, map_app_error};
|
||||
use crate::application::routes::render_html;
|
||||
use crate::application::routes::support::{
|
||||
FlexiblePayload, ListQuery, PayloadSource, is_datastar_request,
|
||||
};
|
||||
use crate::application::server::AppState;
|
||||
use crate::domain::ids::RoasterId;
|
||||
use crate::domain::listing::{ListRequest, SortDirection};
|
||||
use crate::domain::roasters::{NewRoaster, Roaster, RoasterSortKey, UpdateRoaster};
|
||||
|
|
@ -10,13 +17,6 @@ use crate::presentation::templates::{
|
|||
RoasterDetailTemplate, RoasterListTemplate, RoastersTemplate,
|
||||
};
|
||||
use crate::presentation::views::{ListNavigator, Paginated, RoastView, RoasterView};
|
||||
use crate::server::auth::AuthenticatedUser;
|
||||
use crate::server::errors::{ApiError, AppError, map_app_error};
|
||||
use crate::server::routes::render_html;
|
||||
use crate::server::routes::support::{
|
||||
FlexiblePayload, ListQuery, PayloadSource, is_datastar_request,
|
||||
};
|
||||
use crate::server::server::AppState;
|
||||
|
||||
const ROASTER_PAGE_PATH: &str = "/roasters";
|
||||
const ROASTER_FRAGMENT_PATH: &str = "/roasters#roaster-list";
|
||||
|
|
@ -31,7 +31,7 @@ async fn load_roaster_page(
|
|||
.await
|
||||
.map_err(AppError::from)?;
|
||||
|
||||
Ok(crate::server::routes::support::build_page_view(
|
||||
Ok(crate::application::routes::support::build_page_view(
|
||||
page,
|
||||
request,
|
||||
RoasterView::from,
|
||||
|
|
@ -49,7 +49,8 @@ pub(crate) async fn roasters_page(
|
|||
let request = query.into_request::<RoasterSortKey>();
|
||||
|
||||
if is_datastar_request(&headers) {
|
||||
let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
let is_authenticated =
|
||||
crate::application::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
return render_roaster_list_fragment(state, request, is_authenticated)
|
||||
.await
|
||||
.map_err(map_app_error);
|
||||
|
|
@ -59,7 +60,8 @@ pub(crate) async fn roasters_page(
|
|||
.await
|
||||
.map_err(map_app_error)?;
|
||||
|
||||
let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
let is_authenticated =
|
||||
crate::application::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
|
||||
let template = RoastersTemplate {
|
||||
nav_active: "roasters",
|
||||
|
|
@ -88,7 +90,8 @@ pub(crate) async fn roaster_page(
|
|||
.map_err(|err| map_app_error(AppError::from(err)))?;
|
||||
|
||||
let roaster_view = RoasterView::from(roaster);
|
||||
let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
let is_authenticated =
|
||||
crate::application::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
|
||||
let template = RoasterDetailTemplate {
|
||||
nav_active: "roasters",
|
||||
|
|
@ -208,5 +211,5 @@ async fn render_roaster_list_fragment(
|
|||
navigator,
|
||||
};
|
||||
|
||||
crate::server::routes::support::render_fragment(template, "#roaster-list")
|
||||
crate::application::routes::support::render_fragment(template, "#roaster-list")
|
||||
}
|
||||
|
|
@ -4,19 +4,19 @@ use axum::http::{HeaderMap, StatusCode};
|
|||
use axum::response::{Html, IntoResponse, Redirect, Response};
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::application::auth::AuthenticatedUser;
|
||||
use crate::application::errors::{ApiError, AppError, map_app_error};
|
||||
use crate::application::routes::render_html;
|
||||
use crate::application::routes::support::{
|
||||
FlexiblePayload, ListQuery, PayloadSource, is_datastar_request,
|
||||
};
|
||||
use crate::application::server::AppState;
|
||||
use crate::domain::ids::{RoastId, RoasterId};
|
||||
use crate::domain::listing::{ListRequest, SortDirection};
|
||||
use crate::domain::roasters::RoasterSortKey;
|
||||
use crate::domain::roasts::{NewRoast, Roast, RoastSortKey, RoastWithRoaster};
|
||||
use crate::presentation::templates::{RoastDetailTemplate, RoastListTemplate, RoastsTemplate};
|
||||
use crate::presentation::views::{ListNavigator, Paginated, RoastView, RoasterOptionView};
|
||||
use crate::server::auth::AuthenticatedUser;
|
||||
use crate::server::errors::{ApiError, AppError, map_app_error};
|
||||
use crate::server::routes::render_html;
|
||||
use crate::server::routes::support::{
|
||||
FlexiblePayload, ListQuery, PayloadSource, is_datastar_request,
|
||||
};
|
||||
use crate::server::server::AppState;
|
||||
|
||||
const ROAST_PAGE_PATH: &str = "/roasts";
|
||||
const ROAST_FRAGMENT_PATH: &str = "/roasts#roast-list";
|
||||
|
|
@ -31,7 +31,7 @@ async fn load_roast_page(
|
|||
.await
|
||||
.map_err(AppError::from)?;
|
||||
|
||||
Ok(crate::server::routes::support::build_page_view(
|
||||
Ok(crate::application::routes::support::build_page_view(
|
||||
page,
|
||||
request,
|
||||
RoastView::from_list_item,
|
||||
|
|
@ -49,7 +49,8 @@ pub(crate) async fn roasts_page(
|
|||
let request = query.into_request::<RoastSortKey>();
|
||||
|
||||
if is_datastar_request(&headers) {
|
||||
let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
let is_authenticated =
|
||||
crate::application::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
return render_roast_list_fragment(state, request, is_authenticated)
|
||||
.await
|
||||
.map_err(map_app_error);
|
||||
|
|
@ -67,7 +68,8 @@ pub(crate) async fn roasts_page(
|
|||
.await
|
||||
.map_err(map_app_error)?;
|
||||
|
||||
let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
let is_authenticated =
|
||||
crate::application::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
|
||||
let template = RoastsTemplate {
|
||||
nav_active: "roasts",
|
||||
|
|
@ -97,7 +99,8 @@ pub(crate) async fn roast_page(
|
|||
.await
|
||||
.map_err(|err| map_app_error(AppError::from(err)))?;
|
||||
|
||||
let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
let is_authenticated =
|
||||
crate::application::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
|
||||
let template = RoastDetailTemplate {
|
||||
nav_active: "roasts",
|
||||
|
|
@ -277,5 +280,5 @@ async fn render_roast_list_fragment(
|
|||
navigator,
|
||||
};
|
||||
|
||||
crate::server::routes::support::render_fragment(template, "#roast-list")
|
||||
crate::application::routes::support::render_fragment(template, "#roast-list")
|
||||
}
|
||||
|
|
@ -5,11 +5,11 @@ use axum::http::{HeaderMap, HeaderValue, header::CONTENT_TYPE};
|
|||
use axum::response::{Html, IntoResponse, Response};
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::application::errors::{ApiError, AppError};
|
||||
use crate::domain::listing::{
|
||||
DEFAULT_PAGE_SIZE, ListRequest, Page, PageSize, SortDirection, SortKey,
|
||||
};
|
||||
use crate::presentation::views::{ListNavigator, Paginated};
|
||||
use crate::server::errors::{ApiError, AppError};
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub enum PayloadSource {
|
||||
|
|
@ -3,14 +3,14 @@ use axum::http::HeaderMap;
|
|||
use axum::http::StatusCode;
|
||||
use axum::response::{IntoResponse, Response};
|
||||
|
||||
use crate::application::errors::{AppError, map_app_error};
|
||||
use crate::application::routes::render_html;
|
||||
use crate::application::routes::support::{ListQuery, is_datastar_request, normalize_request};
|
||||
use crate::application::server::AppState;
|
||||
use crate::domain::listing::ListRequest;
|
||||
use crate::domain::timeline::{TimelineEvent, TimelineSortKey};
|
||||
use crate::presentation::templates::{TimelineChunkTemplate, TimelineTemplate};
|
||||
use crate::presentation::views::{ListNavigator, Paginated, TimelineEventView, TimelineMonthView};
|
||||
use crate::server::errors::{AppError, map_app_error};
|
||||
use crate::server::routes::render_html;
|
||||
use crate::server::routes::support::{ListQuery, is_datastar_request, normalize_request};
|
||||
use crate::server::server::AppState;
|
||||
|
||||
const TIMELINE_PAGE_PATH: &str = "/timeline";
|
||||
const TIMELINE_FRAGMENT_PATH: &str = "/timeline";
|
||||
|
|
@ -33,7 +33,8 @@ pub(crate) async fn timeline_page(
|
|||
.await
|
||||
.map_err(map_app_error)?;
|
||||
|
||||
let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
let is_authenticated =
|
||||
crate::application::routes::auth::is_authenticated(&state, &cookies).await;
|
||||
|
||||
let template = TimelineTemplate {
|
||||
nav_active: "timeline",
|
||||
|
|
@ -63,7 +64,7 @@ async fn render_timeline_chunk(
|
|||
months: data.months,
|
||||
};
|
||||
|
||||
crate::server::routes::support::render_fragment(template, "#timeline-loader")
|
||||
crate::application::routes::support::render_fragment(template, "#timeline-loader")
|
||||
}
|
||||
|
||||
struct TimelinePageData {
|
||||
|
|
@ -4,11 +4,11 @@ use axum::http::StatusCode;
|
|||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::application::auth::AuthenticatedUser;
|
||||
use crate::application::server::AppState;
|
||||
use crate::domain::ids::{TokenId, UserId};
|
||||
use crate::domain::tokens::{NewToken, Token};
|
||||
use crate::infrastructure::auth::{generate_token, hash_token, verify_password};
|
||||
use crate::server::auth::AuthenticatedUser;
|
||||
use crate::server::server::AppState;
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct CreateTokenRequest {
|
||||
|
|
@ -7,6 +7,7 @@ use tokio::net::TcpListener;
|
|||
use tokio::signal;
|
||||
use tracing::info;
|
||||
|
||||
use crate::application::routes::app_router;
|
||||
use crate::domain::repositories::{
|
||||
RoastRepository, RoasterRepository, SessionRepository, TimelineEventRepository,
|
||||
TokenRepository, UserRepository,
|
||||
|
|
@ -20,7 +21,6 @@ use crate::infrastructure::repositories::sessions::SqlSessionRepository;
|
|||
use crate::infrastructure::repositories::timeline_events::SqlTimelineEventRepository;
|
||||
use crate::infrastructure::repositories::tokens::SqlTokenRepository;
|
||||
use crate::infrastructure::repositories::users::SqlUserRepository;
|
||||
use crate::server::routes::app_router;
|
||||
|
||||
pub struct ServerConfig {
|
||||
pub bind_address: SocketAddr,
|
||||
|
|
@ -5,7 +5,7 @@ pub mod tokens;
|
|||
use anyhow::{Context, Result, anyhow};
|
||||
use reqwest::{Client, Url};
|
||||
|
||||
use crate::server::errors::ErrorResponse;
|
||||
use crate::application::errors::ErrorResponse;
|
||||
|
||||
pub struct BrewlogClient {
|
||||
base_url: Url,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
pub mod application;
|
||||
pub mod cli;
|
||||
pub mod client;
|
||||
pub mod domain;
|
||||
pub mod infrastructure;
|
||||
pub mod presentation;
|
||||
pub mod server;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use anyhow::Result;
|
||||
use brewlog::application::{ServerConfig, serve};
|
||||
use brewlog::cli::{Cli, Commands, ServeCommand, roasters, roasts, tokens};
|
||||
use brewlog::client::BrewlogClient;
|
||||
use brewlog::server::{ServerConfig, serve};
|
||||
use clap::Parser;
|
||||
use tracing_subscriber::{EnvFilter, fmt, prelude::*};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
use std::sync::Arc;
|
||||
|
||||
use brewlog::application::routes::app_router;
|
||||
use brewlog::application::server::AppState;
|
||||
use brewlog::domain::repositories::{
|
||||
RoastRepository, RoasterRepository, SessionRepository, TimelineEventRepository,
|
||||
TokenRepository, UserRepository,
|
||||
|
|
@ -14,8 +16,6 @@ use brewlog::infrastructure::repositories::sessions::SqlSessionRepository;
|
|||
use brewlog::infrastructure::repositories::timeline_events::SqlTimelineEventRepository;
|
||||
use brewlog::infrastructure::repositories::tokens::SqlTokenRepository;
|
||||
use brewlog::infrastructure::repositories::users::SqlUserRepository;
|
||||
use brewlog::server::routes::app_router;
|
||||
use brewlog::server::server::AppState;
|
||||
use reqwest::Client;
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue