iota_indexer/models/
packages.rs

1// Copyright (c) Mysten Labs, Inc.
2// Modifications Copyright (c) 2024 IOTA Stiftung
3// SPDX-License-Identifier: Apache-2.0
4
5use diesel::prelude::*;
6
7use crate::{schema::packages, types::IndexedPackage};
8
9#[derive(Queryable, Insertable, Selectable, Clone, Debug, Identifiable)]
10#[diesel(table_name = packages, primary_key(package_id))]
11pub struct StoredPackage {
12    pub package_id: Vec<u8>,
13    pub original_id: Vec<u8>,
14    pub package_version: i64,
15    pub move_package: Vec<u8>,
16    pub checkpoint_sequence_number: i64,
17}
18
19impl From<IndexedPackage> for StoredPackage {
20    fn from(p: IndexedPackage) -> Self {
21        Self {
22            package_id: p.package_id.to_vec(),
23            original_id: p.move_package.original_package_id().to_vec(),
24            package_version: p.move_package.version().value() as i64,
25            move_package: bcs::to_bytes(&p.move_package).unwrap(),
26            checkpoint_sequence_number: p.checkpoint_sequence_number as i64,
27        }
28    }
29}