summaryrefslogtreecommitdiff
path: root/server/src/main.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2023-01-01 11:52:28 -0500
committerKjetil Orbekk <kj@orbekk.com>2023-01-01 11:52:28 -0500
commitbb2ed3a2926384df063e476d10613fa310cd7ffa (patch)
treecc9c6ea4979eef3850d78cd0b1390dfbccb5921b /server/src/main.rs
parent1e3014a777805d3dcb691ee6ebe59c62f58f8222 (diff)
Add Table to be used with db schema
Diffstat (limited to 'server/src/main.rs')
-rw-r--r--server/src/main.rs48
1 files changed, 13 insertions, 35 deletions
diff --git a/server/src/main.rs b/server/src/main.rs
index 10b1361..3e3985f 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -2,7 +2,7 @@ use serde_json::json;
use std::{collections::HashMap, env, str::FromStr, sync::Arc};
use uuid::Uuid;
-use auth::AuthenticatedSession;
+use server::auth::AuthenticatedSession;
use axum::{
extract::{Path, Query, State},
response::{Html, Redirect},
@@ -14,27 +14,18 @@ use protocol::{
card::Card,
};
use protocol::{Table, UserInfo};
-use server::ServerState;
+use server::server::ServerState;
use tower_cookies::{Cookie, CookieManagerLayer, Cookies};
use tower_http::trace::TraceLayer;
use tracing::{info, log::warn};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
-mod auth;
-mod error;
-#[cfg(debug_assertions)]
-mod fake_auth;
-mod play;
-mod server;
-use crate::{
- auth::{OauthAuthenticator, SessionId},
+use server::{
+ auth::{OauthAuthenticator, SessionId, Authenticator},
play::advance_play,
server::ServerContext,
-};
-use crate::{
error::BridgeError,
play::{DbJournal, Journal},
};
-use auth::Authenticator;
use sqlx::{postgres::PgPoolOptions, PgPool};
async fn create_default_authenticator(
@@ -51,7 +42,7 @@ async fn create_authenticator(
if std::env::var("AUTHENTICATOR").unwrap_or("".to_string())
== FAKE_AUTHENTICATOR
{
- Box::new(fake_auth::FakeAuthenticator::new())
+ Box::new(server::fake_auth::FakeAuthenticator::new())
} else {
create_default_authenticator(db_pool).await
}
@@ -119,7 +110,7 @@ async fn main() {
.route("/api/table/:id/play", post(post_play))
.route("/api/table/:id/admin/deal", post(table_new_deal))
.route("/api/login", get(login))
- .route(auth::LOGIN_CALLBACK, get(login_callback))
+ .route(server::auth::LOGIN_CALLBACK, get(login_callback))
.layer(CookieManagerLayer::new())
.layer(TraceLayer::new_for_http())
.with_state(state);
@@ -155,7 +146,7 @@ async fn get_table_view(
info!("Getting table state for {id:}");
let player_position = Player::South;
let jnl = DbJournal::new(state.db.clone(), id);
- let mut table = play::Table::new_or_replay(jnl).await?;
+ let mut table = server::play::Table::new_or_replay(jnl).await?;
info!("Advancing play");
while table.game_in_progress()
&& table.game()?.current_player() != player_position
@@ -179,7 +170,7 @@ async fn table_new_deal(
) -> Result<Json<()>, BridgeError> {
info!("Getting table state for {id:}");
let jnl = DbJournal::new(state.db.clone(), id);
- let mut table = play::Table::replay(jnl).await?;
+ let mut table = server::play::Table::replay(jnl).await?;
table.new_deal().await?;
Ok(Json(()))
}
@@ -192,7 +183,7 @@ async fn post_bid(
) -> Result<Json<()>, BridgeError> {
info!("Getting table state for {id:}");
let jnl = DbJournal::new(state.db.clone(), id);
- let mut table = play::Table::replay(jnl).await?;
+ let mut table = server::play::Table::replay(jnl).await?;
table.bid(bid).await?;
Ok(Json(()))
}
@@ -205,7 +196,7 @@ async fn post_play(
) -> Result<Json<()>, BridgeError> {
info!("Getting table state for {id:}");
let jnl = DbJournal::new(state.db.clone(), id);
- let mut table = play::Table::replay(jnl).await?;
+ let mut table = server::play::Table::replay(jnl).await?;
table.play(card).await?;
Ok(Json(()))
}
@@ -232,7 +223,7 @@ async fn create_table(
let txn = state.db.begin().await?;
let table_id = sqlx::query!(
r#"
- insert into active_tables (id)
+ insert into bridge_table (id)
values ($1)
returning id
"#,
@@ -244,7 +235,7 @@ async fn create_table(
sqlx::query!(
r#"
- insert into table_players (active_tables_id,
+ insert into table_players (table_id,
player_id,
position)
values ($1, $2, 'south')
@@ -282,7 +273,7 @@ async fn user_table(
r#"
select tables.id
from table_players players
- natural join active_tables tables
+ natural join bridge_table tables
where player_id = $1
"#,
session.player_id
@@ -318,16 +309,3 @@ async fn login(cookies: Cookies, State(state): ServerState) -> Redirect {
Redirect::temporary(auth_url.as_str())
}
-#[cfg(test)]
-mod tests {
- use env_logger::Env;
-
- pub fn test_setup() {
- dotenv::dotenv().ok();
- let _ = env_logger::Builder::from_env(
- Env::default().default_filter_or("info"),
- )
- .is_test(true)
- .try_init();
- }
-}