tangle_indexer


git clone https://radroots.dev/git/tangle_indexer.git
Log | Files | Refs | Submodules | LICENSE

record.rs (1892B)


      1 use crate::utils::sqlite::{RustqliteError, SqliteResult, SqliteRow, SqliteType};
      2 use serde::Serialize;
      3 
      4 use crate::domain::indexer::kind::{IndexerEventKind, IndexerEventKindParseError};
      5 
      6 #[derive(Clone, Debug, Serialize)]
      7 pub struct RelayEventRecord {
      8     pub rowid: Option<u64>,
      9     pub event_hash: String,
     10     pub author: String,
     11     pub created_at: u32,
     12     pub kind: IndexerEventKind,
     13     pub content: String,
     14 }
     15 
     16 impl RelayEventRecord {
     17     pub fn from_row(row: &SqliteRow) -> SqliteResult<Self> {
     18         let event_hash: String = row.get(0)?;
     19         let author: String = row.get(1)?;
     20         let created_at: u32 = row.get(2)?;
     21         let kind_num: u32 = row.get(3)?;
     22 
     23         let kind = IndexerEventKind::try_from(kind_num as u64).map_err(
     24             |e: IndexerEventKindParseError| {
     25                 RustqliteError::FromSqlConversionFailure(3, SqliteType::Integer, Box::new(e))
     26             },
     27         )?;
     28 
     29         let content: String = row.get(4)?;
     30         Ok(RelayEventRecord {
     31             rowid: None,
     32             event_hash,
     33             author,
     34             created_at,
     35             kind,
     36             content,
     37         })
     38     }
     39 
     40     pub fn from_row_with_rowid(row: &SqliteRow) -> SqliteResult<Self> {
     41         let rowid: u64 = row.get(0)?;
     42         let event_hash: String = row.get(1)?;
     43         let author: String = row.get(2)?;
     44         let created_at: u32 = row.get(3)?;
     45         let kind_num: u32 = row.get(4)?;
     46 
     47         let kind = IndexerEventKind::try_from(kind_num as u64).map_err(
     48             |e: IndexerEventKindParseError| {
     49                 RustqliteError::FromSqlConversionFailure(4, SqliteType::Integer, Box::new(e))
     50             },
     51         )?;
     52 
     53         let content: String = row.get(5)?;
     54         Ok(RelayEventRecord {
     55             rowid: Some(rowid),
     56             event_hash,
     57             author,
     58             created_at,
     59             kind,
     60             content,
     61         })
     62     }
     63 }