parent
45a3bf291b
commit
94fe050c4a
8 changed files with 282 additions and 45 deletions
|
|
@ -1,5 +1,4 @@
|
|||
use chrono::Utc;
|
||||
use futures::StreamExt;
|
||||
use serde::de::DeserializeOwned;
|
||||
use serde::Serialize;
|
||||
use std::fmt::Display;
|
||||
|
|
@ -35,15 +34,11 @@ impl Display for TaskStatus {
|
|||
}
|
||||
}
|
||||
|
||||
pub trait TaskPayloadKey {
|
||||
fn get_key(&self) -> String;
|
||||
}
|
||||
|
||||
pub trait TaskPayload:
|
||||
Serialize + DeserializeOwned + Send + Unpin + 'static + Display + TaskPayloadKey
|
||||
Serialize + DeserializeOwned + Send + Unpin + 'static
|
||||
{
|
||||
}
|
||||
impl<T: Serialize + DeserializeOwned + Send + Unpin + 'static + Display + TaskPayloadKey>
|
||||
impl<T: Serialize + DeserializeOwned + Send + Unpin + 'static>
|
||||
TaskPayload for T
|
||||
{
|
||||
}
|
||||
|
|
@ -64,6 +59,19 @@ pub struct Task<T: TaskPayload> {
|
|||
updated_at: Option<chrono::DateTime<Utc>>,
|
||||
}
|
||||
|
||||
impl<T: TaskPayload> Task<T> {
|
||||
pub fn new(payload_key: String, payload: T, status: TaskStatus) -> Self {
|
||||
Self {
|
||||
id: 0,
|
||||
payload_key,
|
||||
payload,
|
||||
status,
|
||||
created_at: Default::default(),
|
||||
updated_at: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: TaskPayload> Task<T> {
|
||||
pub fn payload(&self) -> &T {
|
||||
&self.payload
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue