use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use crate::{
card::{Card, CardSummary},
column::ColumnId,
};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ArchivedCard {
pub card: Card,
pub archived_at: DateTime<Utc>,
pub original_column_id: ColumnId,
pub original_position: i32,
}
impl ArchivedCard {
pub fn new(card: Card, original_column_id: ColumnId, original_position: i32) -> Self {
Self {
card,
archived_at: Utc::now(),
original_column_id,
original_position,
}
}
pub fn into_card(self) -> Card {
self.card
}
pub fn card_ref(&self) -> &Card {
&self.card
}
pub fn card_mut(&mut self) -> &mut Card {
&mut self.card
}
}
impl From<ArchivedCard> for Card {
fn from(archived_card: ArchivedCard) -> Self {
archived_card.card
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ArchivedCardSummary {
pub card: CardSummary,
pub archived_at: DateTime<Utc>,
pub original_column_id: ColumnId,
pub original_position: i32,
}
impl From<&ArchivedCard> for ArchivedCardSummary {
fn from(a: &ArchivedCard) -> Self {
Self {
card: CardSummary::from(&a.card),
archived_at: a.archived_at,
original_column_id: a.original_column_id,
original_position: a.original_position,
}
}
}