/* * This file is part of laurelin/shared * Copyright (C) 2023 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use serde::{Deserialize, Serialize}; use thiserror::Error; #[doc = "API errors are in the 1XXXX range"] #[derive(Debug, Serialize, Deserialize, Error)] pub enum APIError { // general errors #[doc = "Should never be used, but still exists just in case"] #[error("undefined error")] Undefined = 10000, #[doc = "Authorization doesn't meet requirements"] #[error("not authorized")] NotAuthorized = 10001, #[doc = "Authorization is missing from the request"] #[error("missing authorization")] MissingAuthorization = 10002, #[doc = "For when pool.get() fails"] #[error("database pool get failed")] DatabasePoolGetFailed = 10003, // user related errors #[doc = "User does not exist in the database"] #[error("user not found")] UserNotFound = 11000, #[doc = "Invalid credentials were passed"] #[error("invalid credentials")] UserInvalidCredentials = 11001, #[doc = "Argon2 failed somehow"] #[error("password hash failed")] UserPasswordHashFailed = 11002, #[doc = "Argon2 verify_password failed somehow"] #[error("password check failed")] UserPasswordCheckFailed = 11003, // login/register errors #[doc = ""] #[error("invalid email")] UserEmailInvalid = 11100, #[doc = ""] #[error("username should not be shorter than 3 characters")] UserUsernameTooShort = 11101, #[doc = ""] #[error("password should not be shorter than 8 characters")] UserPasswordTooShort = 11102, #[doc = ""] #[error("user creation failed")] UserCreationFailed = 11103, }