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), }