sui_indexer/models/
display.rs1use diesel::prelude::*;
5use serde::Deserialize;
6
7use sui_types::display::DisplayVersionUpdatedEvent;
8
9use crate::schema::display;
10
11#[derive(Queryable, Insertable, Selectable, Debug, Clone, Deserialize)]
12#[diesel(table_name = display)]
13pub struct StoredDisplay {
14 pub object_type: String,
15 pub id: Vec<u8>,
16 pub version: i16,
17 pub bcs: Vec<u8>,
18}
19
20impl StoredDisplay {
21 pub fn try_from_event(event: &sui_types::event::Event) -> Option<Self> {
22 let (ty, display_event) = DisplayVersionUpdatedEvent::try_from_event(event)?;
23
24 Some(Self {
25 object_type: ty.to_canonical_string(true),
26 id: display_event.id.bytes.to_vec(),
27 version: display_event.version as i16,
28 bcs: event.contents.clone(),
29 })
30 }
31
32 pub fn to_display_update_event(&self) -> Result<DisplayVersionUpdatedEvent, bcs::Error> {
33 bcs::from_bytes(&self.bcs)
34 }
35}