test(lib_core): it saves and return tasks

refs: #5
This commit is contained in:
Alexander Navarro 2025-05-18 20:07:47 -04:00
parent 45a3bf291b
commit 94fe050c4a
8 changed files with 282 additions and 45 deletions

View file

@ -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