1use std::collections::BTreeSet;
2
3use crate::{
4 audio::AudioId,
5 card::{AttributeId, Attrv2, BackSide, CardId, RawCard, TextData},
6 metadata::Metadata,
7 recall_rate::{Review, ReviewEvent},
8 CardType,
9};
10use ledgerstore::TheLedgerEvent;
11use omtrent::TimeStamp;
12use serde::{Deserialize, Serialize};
13
14pub type CardEvent = TheLedgerEvent<RawCard>;
15
16#[derive(Deserialize, Serialize, Clone, Debug, Hash)]
17pub enum CardAction {
18 SetFrontAudio(Option<AudioId>),
19 SetBackAudio(Option<AudioId>),
20 RemoveDependency(CardId),
21 AddDependency(CardId),
22 UpsertCard(CardType),
23 SetBackRef(CardId),
24 SetBackBool(bool),
25 SetBackTime(TimeStamp),
26 SetDefaultQuestion(Option<String>),
27 SetNamespace(Option<CardId>),
28 InsertAttr(Attrv2),
29 InsertAttrs(BTreeSet<Attrv2>),
30 RemoveAttr(AttributeId),
31 SetTrivial(bool),
32 SetParentClass(Option<CardId>),
33 SetInstanceClass(CardId),
34 AttributeType {
35 attribute: AttributeId,
36 back: BackSide,
37 instance: CardId,
38 },
39 NormalType {
40 front: TextData,
41 back: BackSide,
42 },
43 InstanceType {
44 front: TextData,
45 class: CardId,
46 },
47 StatementType {
48 front: TextData,
49 },
50 ClassType {
51 front: TextData,
52 },
53 UnfinishedType {
54 front: TextData,
55 },
56 EventType {
57 front: TextData,
58 start_time: TimeStamp,
59 },
60 SetBackside(Option<BackSide>),
61 SetFront(TextData),
62}
63
64pub enum HistoryEvent {
65 Review { id: CardId, review: Review },
66}
67
68pub type MetaEvent = TheLedgerEvent<Metadata>;
69
70#[derive(Debug, Clone, Serialize, Deserialize, Hash)]
71pub enum MetaAction {
72 Suspend(bool),
73 SetTrivial(Option<bool>),
74}
75
76impl From<MetaEvent> for Event {
77 fn from(event: MetaEvent) -> Self {
78 Event::Meta(event)
79 }
80}
81impl From<CardEvent> for Event {
82 fn from(event: CardEvent) -> Self {
83 Event::Card(event)
84 }
85}
86impl From<ReviewEvent> for Event {
87 fn from(event: ReviewEvent) -> Self {
88 Event::History(event)
89 }
90}
91
92pub enum Event {
93 Meta(MetaEvent),
94 History(ReviewEvent),
95 Card(CardEvent),
96}