use serde::Deserialize;
use thiserror::Error;
pub type ApiResult<T> = Result<T, ApiError>;
pub type ModelResult<T> = Result<T, ModelError>;
#[derive(Debug, Error, Deserialize)]
pub enum ApiError {
#[error("{status}: {message}")]
#[serde(alias = "error")]
Regular { status: u16, message: String },
#[error("{status} ({reason}): {message}")]
#[serde(alias = "error")]
Player {
status: u16,
message: String,
reason: String,
},
}
#[derive(Debug, Error)]
pub enum ModelError {
#[error("json parse error: {0}")]
ParseJson(#[from] serde_json::Error),
#[error("input/output error: {0}")]
Io(#[from] std::io::Error),
}