writes down some ideas
This commit is contained in:
@@ -2,6 +2,7 @@ use crate::schema::players;
|
|||||||
use crate::serde_derive::Serialize;
|
use crate::serde_derive::Serialize;
|
||||||
use crate::*;
|
use crate::*;
|
||||||
|
|
||||||
|
/// Representation of a player in database
|
||||||
#[derive(Debug, Queryable, Serialize)]
|
#[derive(Debug, Queryable, Serialize)]
|
||||||
pub struct Player {
|
pub struct Player {
|
||||||
id: i32,
|
id: i32,
|
||||||
@@ -13,6 +14,32 @@ pub struct Player {
|
|||||||
pp: i32,
|
pp: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The sign of the update
|
||||||
|
enum WealthUpdateKind {
|
||||||
|
Income,
|
||||||
|
Expense,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Representation of wealth value
|
||||||
|
type WealthValues = (i32, i32, i32, i32);
|
||||||
|
|
||||||
|
/// Data used to update wealth
|
||||||
|
struct WealthUpdate {
|
||||||
|
kind: WealthUpdateKind,
|
||||||
|
values: WealthValues,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WealthUpdate {
|
||||||
|
/// Create a new update
|
||||||
|
fn new(values: WealthValues, kind: WealthUpdateKind) -> Self {
|
||||||
|
WealthUpdate { kind, values }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Apply the update to the specified player
|
||||||
|
fn apply_to(self, player_id: i32) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Representation of a new player record
|
||||||
#[derive(Insertable)]
|
#[derive(Insertable)]
|
||||||
#[table_name = "players"]
|
#[table_name = "players"]
|
||||||
pub struct NewPlayer<'a> {
|
pub struct NewPlayer<'a> {
|
||||||
@@ -24,7 +51,7 @@ pub struct NewPlayer<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> NewPlayer<'a> {
|
impl<'a> NewPlayer<'a> {
|
||||||
fn new(name: &'a str, wealth: Option<(i32, i32, i32, i32)>) -> Self {
|
fn new(name: &'a str, wealth: Option<WealthValues>) -> Self {
|
||||||
let (cp, sp, gp, pp) = wealth.unwrap_or((0, 0, 0, 0));
|
let (cp, sp, gp, pp) = wealth.unwrap_or((0, 0, 0, 0));
|
||||||
NewPlayer {
|
NewPlayer {
|
||||||
name,
|
name,
|
||||||
@@ -35,7 +62,7 @@ impl<'a> NewPlayer<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn insert(&self) -> Result<(), ()> {
|
fn insert(self) -> Result<(), ()> {
|
||||||
Err(())
|
Err(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,14 @@ const PLAYER_LIST = [
|
|||||||
{id: 3, name: "Fefi", wealth: [0,0,0,0], debt: 0},
|
{id: 3, name: "Fefi", wealth: [0,0,0,0], debt: 0},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const fetchPlayerList = function () {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const fetchRequests = function () {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
export const AppStorage = {
|
export const AppStorage = {
|
||||||
debug: true,
|
debug: true,
|
||||||
state: {
|
state: {
|
||||||
|
|||||||
17
src/api.rs
17
src/api.rs
@@ -30,7 +30,24 @@ mod player {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// struct DbApi<'q>(&'q DbConnection);
|
||||||
|
// ::new() -> DbApi<'q> (Db finds a connection by itself, usefull for cli)
|
||||||
|
// ::with_conn(conn) -> DbApi<'q> (uses a user-defined connection)
|
||||||
|
// .fetch_players()
|
||||||
|
// .with_player(player_id) -> AsPlayer<'q>
|
||||||
|
// .loot() -> List of items owned (Vec<Item>)
|
||||||
|
// .claim(item_id) -> Success status (bool)
|
||||||
|
// .unclaim(item_id) -> Success status (bool)
|
||||||
|
// .sell(item_id) -> Success status (bool, earned)
|
||||||
|
|
||||||
|
// fn db_call(f: fn(DbApi) -> ApiResponse) { ... }
|
||||||
|
// ApiResponse needs to be Serialize
|
||||||
|
|
||||||
|
// endpoint example
|
||||||
|
// fn endpoint_name(params...) -> impl ... {
|
||||||
|
// let param_1 = { ... };
|
||||||
|
// db_call(move |api| api.with_player(param_1).loot())
|
||||||
|
// }
|
||||||
|
|
||||||
pub fn players_list(
|
pub fn players_list(
|
||||||
pool: web::Data<Pool>
|
pool: web::Data<Pool>
|
||||||
|
|||||||
Reference in New Issue
Block a user