use std::string::FromUtf8Error;
use deadpool_redis::PoolError;
use error_set::error_set;
use redis::{RedisError, Value};
use crate::{QueueName, redisext::RedisHashMapError};
error_set! {
pub BullrsError := {
PauseResume(PauseResumeError),
AddJob(AddJobErr),
AddLog(AddLogError),
MoveStalledToWait(MoveStalledToWaitError),
}
pub PauseResumeError := BasicRedisError
pub AddJobErr := BasicAddError
pub AddLogError := BasicJobNotFound || BasicRedisError
pub MoveStalledToWaitError := BasicRedisError
pub MoveToActiveErr := BasicRedisError || JobPayloadLoading
pub MoveToFinishedErr := {
#[display("job has not been found")]
MissingKey,
#[display("job lock doesn't exist (anymore?)")]
MissingLock,
#[display("job was not in the active set")]
JobNotActive,
#[display("job has pending children")]
JobHasPendingChildren,
#[display("job lock is owned by other worker")]
LockNotOwned,
#[display("job has failed children")]
JobHasFailedChildren,
#[display("failed to serialize job result: {0:?}")]
Serialize(serde_json::Error),
} || BasicRedisError
pub ObliterateError := {
#[display("queue can only be obliterated when no job is active")]
ActiveJobs,
#[display("queue can only be obliterated if paused")]
NotPaused,
} || BasicRedisError
pub UpdateProgressError := BasicJobNotFound || BasicRedisError
pub BasicRedisError := {
#[display("redis error: {0}")]
RedisError(RedisError),
#[display("redis pool error: {0}")]
PoolError(PoolError),
}
BasicAddError := {
#[display("failed to serialize job payload to json: {0}")]
SerializationFailed(serde_json::Error),
#[display("parent key is missing")]
MissingParentKey,
} || BasicRedisError
BasicJobNotFound := {
#[display("job \"{job_id}\" in queue \"{}\" doesn't exist (anymore)", queue_name.as_str())]
JobNotFound {
job_id: String,
queue_name: QueueName,
},
}
JobPayloadLoading := {
#[display("failed to load job data (payload?): {0}")]
RedisHashMapdisplay(RedisHashMapError),
#[display("expected valid utf8-string from redis: {0:?}")]
RedisStringInvalid(FromUtf8Error),
#[display("lua job did not return hash map as expected: {value:?}")]
UnexpectedRedisValue { value: Value },
#[display("Unexpected lua script return values: {} {} {} - {:?}", v.1, v.2, v.3, v.0)]
UnexpectedLuaOutput{ v: (Value, String, u64, i64) },
#[display("Bad timestamp: {ts}")]
BadTimestamp{ ts: i64 },
}
}