35 lines
865 B
Rust
35 lines
865 B
Rust
use crate::{
|
|
stock::{Stock, StockSymbol},
|
|
user::User,
|
|
};
|
|
use serde::Serialize;
|
|
use thiserror::Error;
|
|
use uuid::Uuid;
|
|
|
|
#[derive(Serialize)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum ServerResponse {
|
|
/// Generic success
|
|
Success,
|
|
NewApiKey(Uuid),
|
|
UserError(UserError),
|
|
StockInfo(Stock),
|
|
UserInfo(User),
|
|
}
|
|
|
|
#[derive(Error, Serialize, Debug)]
|
|
pub enum UserError {
|
|
#[error("An invalid username was provided.")]
|
|
InvalidUsername,
|
|
#[error("An invalid password was provided.")]
|
|
InvalidPassword,
|
|
#[error("An invalid API key was provided.")]
|
|
InvalidApiKey,
|
|
#[error("This requires authorization. Please login first.")]
|
|
NotAuthorized,
|
|
#[error("You don't have enough stock to sell {0} units.")]
|
|
NotEnoughOwnedStock(usize),
|
|
#[error("Stock symbol {0} does not exist.")]
|
|
InvalidStock(StockSymbol),
|
|
}
|