headless_lms_models/
proposed_block_edits.rs

1use crate::prelude::*;
2
3#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
4#[cfg_attr(feature = "ts_rs", derive(TS))]
5pub struct NewProposedBlockEdit {
6    pub block_id: Uuid,
7    pub block_attribute: String,
8    pub original_text: String,
9    pub changed_text: String,
10}
11
12#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq, sqlx::Type)]
13#[cfg_attr(feature = "ts_rs", derive(TS))]
14#[sqlx(type_name = "proposal_status", rename_all = "lowercase")]
15pub enum ProposalStatus {
16    Pending,
17    Accepted,
18    Rejected,
19}
20
21#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
22#[cfg_attr(feature = "ts_rs", derive(TS))]
23pub struct EditedBlockStillExistsData {
24    pub id: Uuid,
25    pub block_id: Uuid,
26    pub current_text: String,
27    pub changed_text: String,
28    pub original_text: String,
29    pub status: ProposalStatus,
30    pub accept_preview: Option<String>,
31}
32
33#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
34#[cfg_attr(feature = "ts_rs", derive(TS))]
35pub struct EditedBlockNoLongerExistsData {
36    pub id: Uuid,
37    pub block_id: Uuid,
38    pub changed_text: String,
39    pub original_text: String,
40    pub status: ProposalStatus,
41}
42
43#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
44#[serde(tag = "type", rename_all = "kebab-case")]
45#[cfg_attr(feature = "ts_rs", derive(TS))]
46pub enum BlockProposal {
47    EditedBlockStillExists(EditedBlockStillExistsData),
48    EditedBlockNoLongerExists(EditedBlockNoLongerExistsData),
49}
50
51#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
52#[cfg_attr(feature = "ts_rs", derive(TS))]
53pub struct BlockProposalInfo {
54    pub id: Uuid,
55    pub action: BlockProposalAction,
56}
57
58#[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Eq)]
59#[cfg_attr(feature = "ts_rs", derive(TS))]
60#[serde(tag = "tag", content = "data")]
61pub enum BlockProposalAction {
62    Accept(String),
63    Reject,
64}