Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
364 changes: 103 additions & 261 deletions Cargo.lock

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,6 @@ sui-storage = { git = "https://github.com/MystenLabs/sui.git", rev = "3b96ab72dd
sui-field-count = { git = "https://github.com/MystenLabs/sui.git", rev = "3b96ab72dd5db2fb800837d6067bf45839178b62"}

# New Rust SDK
sui-sdk-types = { git = "https://github.com/mystenlabs/sui-rust-sdk", package = "sui-sdk-types", rev="86a9e06"}
sui-sdk-types = { git = "https://github.com/mystenlabs/sui-rust-sdk", package = "sui-sdk-types", rev="048124e484f14b9bf2a402227c9bc255c7621bc1"}

insta = "1.43.2"
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ expression: cmd_output
Networks: mainnet

- @testingafreeclaim/upgraded-demo
# --
#
Networks: mainnet

Tip: You can find more information about a package by using: mvr resolve <name>
8 changes: 4 additions & 4 deletions crates/mvr-api/src/data/name_analytics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use diesel::{
};
use mvr_types::name::Name;
use serde::{Deserialize, Serialize};
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::errors::ApiError;

Expand All @@ -21,12 +21,12 @@ use super::reader::Reader;
/// The `NaiveDate` is the date of the analytics query, as we are caching the query on a daily basis
/// per instance.
#[derive(Clone, Eq, PartialEq, Hash, Debug)]
pub struct NameAnalyticsKey(pub Name, pub ObjectId, pub NaiveDate);
pub struct NameAnalyticsKey(pub Name, pub Address, pub NaiveDate);

/// Similar operation with analytics, this returns the "count" of
/// dependents using a package, across versions.
#[derive(Clone, Eq, PartialEq, Hash, Debug)]
pub struct NameDependentsCountKey(pub Name, pub ObjectId, pub NaiveDate);
pub struct NameDependentsCountKey(pub Name, pub Address, pub NaiveDate);

#[derive(Serialize, Deserialize, Clone, QueryableByName)]
pub struct AnalyticsQueryResponse {
Expand Down Expand Up @@ -100,7 +100,7 @@ impl Loader<NameAnalyticsKey> for Reader {

for res in result.into_iter() {
// SAFETY: We should never have a malformed package id in the database.
let obj_id = ObjectId::from_str(&res.package_id).unwrap();
let obj_id = Address::from_str(&res.package_id).unwrap();

if let Some(key) = addr_name_mapping.get(&obj_id) {
if let Some(v) = aggregated_values.get_mut(key) {
Expand Down
4 changes: 2 additions & 2 deletions crates/mvr-api/src/data/package_analytics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use diesel::{
ExpressionMethods,
};
use serde::{Deserialize, Serialize};
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::errors::ApiError;

Expand All @@ -17,7 +17,7 @@ use super::reader::Reader;
/// The `NaiveDate` is the date of the analytics query, as we are caching the query on a daily basis
/// per instance.
#[derive(Clone, Eq, PartialEq, Hash, Debug)]
pub struct PackageAnalyticsKey(pub ObjectId, pub NaiveDate);
pub struct PackageAnalyticsKey(pub Address, pub NaiveDate);

#[derive(Serialize, Deserialize, Clone, Queryable)]
pub struct PackageAnalytics {
Expand Down
14 changes: 7 additions & 7 deletions crates/mvr-api/src/data/package_dependencies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use async_graphql::dataloader::Loader;
use diesel::{ExpressionMethods, QueryDsl};
use mvr_schema::schema::package_dependencies;
use serde::{Deserialize, Serialize};
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::errors::ApiError;

Expand All @@ -13,11 +13,11 @@ use super::reader::Reader;
// This is a key to load all dependencies for a package.
// Since there are system limits, we do not paginate this endpoint.
#[derive(Clone, Eq, PartialEq, Hash, Debug)]
pub struct PackageDependenciesKey(pub ObjectId);
pub struct PackageDependenciesKey(pub Address);

#[derive(Serialize, Deserialize, Clone)]
pub struct PackageDependencies {
pub dependencies: Vec<ObjectId>,
pub dependencies: Vec<Address>,
}

impl Default for PackageDependencies {
Expand Down Expand Up @@ -58,15 +58,15 @@ impl Loader<PackageDependenciesKey> for Reader {
HashMap::new(),
|mut acc, (package_id, dependency_package_id)| {
acc.entry(PackageDependenciesKey(
// SAFETY: We know that the package_id is a valid ObjectId
ObjectId::from_str(package_id).unwrap(),
// SAFETY: We know that the package_id is a valid address
Address::from_str(package_id).unwrap(),
))
.or_insert_with(|| PackageDependencies {
dependencies: Vec::new(),
})
// SAFETY: We know that the dependency_package_id is a valid ObjectId
// SAFETY: We know that the dependency_package_id is a valid Address
.dependencies
.push(ObjectId::from_str(&dependency_package_id).unwrap());
.push(Address::from_str(&dependency_package_id).unwrap());
acc
},
);
Expand Down
8 changes: 4 additions & 4 deletions crates/mvr-api/src/data/package_dependents.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,28 @@ use diesel::{
use futures::future::try_join_all;
use mvr_schema::schema;
use serde::{Deserialize, Serialize};
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::{errors::ApiError, utils::pagination::PaginationLimit};

use super::reader::Reader;

#[derive(Serialize, Deserialize, Debug, Default, Clone, Eq, PartialEq, Hash)]
pub struct PackageDependentsCursor {
pub package_id: Option<ObjectId>,
pub package_id: Option<Address>,
pub aggregated_total_calls: Option<i64>,
}

#[derive(Clone, Eq, PartialEq, Hash, Debug)]
pub struct PackageDependentsKey(
pub ObjectId,
pub Address,
pub PackageDependentsCursor,
pub PaginationLimit,
pub NaiveDate,
);

#[derive(Clone, Eq, PartialEq, Hash, Debug)]
pub struct PackageDependentsCountKey(pub ObjectId, pub NaiveDate);
pub struct PackageDependentsCountKey(pub Address, pub NaiveDate);

#[derive(Serialize, Deserialize, Clone, QueryableByName)]
pub struct PackageDependent {
Expand Down
6 changes: 3 additions & 3 deletions crates/mvr-api/src/data/resolution_loader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use diesel::{
sql_types::{Array, BigInt, Text},
};
use mvr_types::name::VersionedName;
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::errors::ApiError;

Expand All @@ -30,7 +30,7 @@ pub struct NameResolution {

#[derive(Clone, Eq, PartialEq, Debug)]
pub struct ResolutionData {
pub id: ObjectId,
pub id: Address,
pub version: i64,
}

Expand Down Expand Up @@ -83,7 +83,7 @@ impl Loader<ResolutionKey> for Reader {
.map(|name| {
let mut versioned_name = VersionedName::from_str(&name.name)?;
versioned_name.version = (name.version > 0).then_some(name.version as u64);
let object_id = ObjectId::from_str(&name.package_id).map_err(|e| {
let object_id = Address::from_str(&name.package_id).map_err(|e| {
ApiError::BadRequest(format!(
"Failed to parse package id: {e} {}",
name.package_id
Expand Down
6 changes: 3 additions & 3 deletions crates/mvr-api/src/data/reverse_resolution_loader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use diesel::{
sql_types::{Array, Text},
};
use mvr_types::name::VersionedName;
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::errors::ApiError;

Expand All @@ -22,7 +22,7 @@ pub struct ReverseNameResolution {
}

#[derive(Clone, Eq, PartialEq, Hash, Debug)]
pub struct ReverseResolutionKey(pub ObjectId);
pub struct ReverseResolutionKey(pub Address);

#[async_trait::async_trait]
impl Loader<ReverseResolutionKey> for Reader {
Expand Down Expand Up @@ -72,7 +72,7 @@ impl Loader<ReverseResolutionKey> for Reader {
// SAFETY: We should never have a malformed name in the database.
let versioned_name = VersionedName::from_str(&name.name)?;
// SAFETY: We should never have a malformed package id in the database.
let object_id = ObjectId::from_str(&name.package_id).map_err(|e| {
let object_id = Address::from_str(&name.package_id).map_err(|e| {
ApiError::BadRequest(format!(
"Failed to parse package id: {e} {}",
name.package_id
Expand Down
4 changes: 2 additions & 2 deletions crates/mvr-api/src/handlers/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
use std::{collections::HashMap, sync::Arc};

use axum::{extract::State, http::StatusCode};
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::{
data::{app_state::AppState, resolution_loader::ResolutionData},
Expand Down Expand Up @@ -32,7 +32,7 @@ pub(crate) async fn health_check(
Ok(StatusCode::OK)
}

fn into_object_id_map(resolution: &HashMap<String, ResolutionData>) -> HashMap<String, ObjectId> {
fn into_object_id_map(resolution: &HashMap<String, ResolutionData>) -> HashMap<String, Address> {
resolution
.iter()
.map(|(k, v)| (k.clone(), v.id))
Expand Down
4 changes: 2 additions & 2 deletions crates/mvr-api/src/handlers/names.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use futures::try_join;
use mvr_types::name::VersionedName;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::{
data::{
Expand All @@ -33,7 +33,7 @@ pub struct PackageByNameResponse {
#[serde(flatten)]
pub package_by_name_data: PackageByNameBaseData,
pub version: i64,
pub package_address: ObjectId,
pub package_address: Address,
}

#[derive(Serialize, Deserialize, QueryableByName)]
Expand Down
10 changes: 5 additions & 5 deletions crates/mvr-api/src/handlers/package_address.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use axum::{
use chrono::Local;
use futures::try_join;
use serde::{Deserialize, Serialize};
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::{
data::{
Expand Down Expand Up @@ -42,7 +42,7 @@ impl PackageAddress {
Path(package_address): Path<String>,
State(app_state): State<Arc<AppState>>,
) -> Result<Json<PackageDependencies>, ApiError> {
let object_id = ObjectId::from_str(&package_address)
let object_id = Address::from_str(&package_address)
.map_err(|e| ApiError::BadRequest(format!("Invalid package address: {}", e)))?;

let dependencies = app_state
Expand All @@ -63,7 +63,7 @@ impl PackageAddress {
Query(params): Query<DependentsQueryParams>,
State(app_state): State<Arc<AppState>>,
) -> Result<Json<PaginatedResponse<PackageDependent>>, ApiError> {
let object_id = ObjectId::from_str(&package_address)
let object_id = Address::from_str(&package_address)
.map_err(|e| ApiError::BadRequest(format!("Invalid package address: {}", e)))?;

let limit = PaginationLimit::new(params.limit)?;
Expand All @@ -89,7 +89,7 @@ impl PackageAddress {
limit.get(),
dependents_count,
|item| PackageDependentsCursor {
package_id: Some(ObjectId::from_str(&item.package_id).unwrap()),
package_id: Some(Address::from_str(&item.package_id).unwrap()),
aggregated_total_calls: Some(item.aggregated_total_calls),
},
)))
Expand All @@ -99,7 +99,7 @@ impl PackageAddress {
Path(package_address): Path<String>,
State(app_state): State<Arc<AppState>>,
) -> Result<Json<AnalyticsResponse>, ApiError> {
let object_id = ObjectId::from_str(&package_address)
let object_id = Address::from_str(&package_address)
.map_err(|e| ApiError::BadRequest(format!("Invalid package address: {}", e)))?;

let analytics = app_state
Expand Down
8 changes: 4 additions & 4 deletions crates/mvr-api/src/handlers/reverse_resolution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@ use axum::{
Json,
};
use serde::{Deserialize, Serialize};
use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;

use crate::{data::reverse_resolution_loader::ReverseResolutionKey, errors::ApiError, AppState};

use super::validate_batch_size;

#[derive(Serialize, Deserialize, Debug)]
pub struct BulkRequest {
package_ids: Vec<ObjectId>,
package_ids: Vec<Address>,
}
#[derive(Serialize, Deserialize)]
pub struct BulkResponse {
resolution: HashMap<ObjectId, Response>,
resolution: HashMap<Address, Response>,
}

#[derive(Serialize, Deserialize, Debug, Clone)]
Expand All @@ -32,7 +32,7 @@ pub struct ReverseResolution;

impl ReverseResolution {
pub async fn resolve(
Path(package_id): Path<ObjectId>,
Path(package_id): Path<Address>,
State(app_state): State<Arc<AppState>>,
) -> Result<Json<Response>, ApiError> {
let name = app_state
Expand Down
18 changes: 9 additions & 9 deletions crates/mvr-cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use utils::api_data::search_names;
use utils::api_data::{query_multiple_dependencies, query_package};
use utils::git::shallow_clone_repo;

use sui_sdk_types::ObjectId;
use sui_sdk_types::Address;
use types::MoveRegistryDependencies;
use utils::manifest::{MoveToml, ADDRESSES_KEY, DEPENDENCIES_KEY, PUBLISHED_AT_KEY};
use utils::sui_binary::get_active_network;
Expand Down Expand Up @@ -164,7 +164,7 @@ async fn check_single_package_consistency(
anyhow::anyhow!("Failed to retrieve original package address at version 1".red())
})?
} else {
ObjectId::from_str(&request_data.package_address)?
Address::from_str(&request_data.package_address)?
};

let git_info: SafeGitInfo = request_data.get_git_info()?.try_into()?;
Expand Down Expand Up @@ -194,7 +194,7 @@ async fn check_single_package_consistency(

let address = addresses_id
.map(|id_str| {
ObjectId::from_str(&id_str).map_err(|e| {
Address::from_str(&id_str).map_err(|e| {
anyhow!(
"{} {}",
"Failed to parse address in [addresses] section of Move.toml:".red(),
Expand All @@ -205,7 +205,7 @@ async fn check_single_package_consistency(
.transpose()?;
let published_at = published_at_id
.map(|id_str| {
ObjectId::from_str(&id_str).map_err(|e| {
Address::from_str(&id_str).map_err(|e| {
anyhow!(
"{} {}",
"Failed to parse published-at address of Move.toml:".red(),
Expand All @@ -218,7 +218,7 @@ async fn check_single_package_consistency(
// The original-published-id may exist in the Move.lock
let original_published_id_in_lock = original_published_id(&move_lock_content, &target_chain_id)
.map(|id_str| {
ObjectId::from_str(&id_str).map_err(|e| {
Address::from_str(&id_str).map_err(|e| {
anyhow!(
"{} {}",
"Failed to parse original-published-id in Move.lock:".red(),
Expand All @@ -228,7 +228,7 @@ async fn check_single_package_consistency(
})
.transpose()?;

let (original_source_id, provenance): (ObjectId, String) = match (
let (original_source_id, provenance): (Address, String) = match (
original_published_id_in_lock,
published_at,
address,
Expand All @@ -245,7 +245,7 @@ async fn check_single_package_consistency(
)
}
(None, Some(published_at_id), Some(address_id))
if address_id == ObjectId::ZERO || published_at_id == address_id =>
if address_id == Address::ZERO || published_at_id == address_id =>
{
// The [addresses] section has a package name set to "0x0" or the same as the published_at_id.
// Our best guess is that the published-id refers to the original package (it may not, but
Expand Down Expand Up @@ -304,7 +304,7 @@ async fn check_single_package_consistency(
/// used to reverse-lookup a candidate package name in the addresses section of the Move.toml.
pub async fn published_ids(
move_toml_content: &str,
original_address_on_chain: &ObjectId,
original_address_on_chain: &Address,
) -> MoveTomlPublishedID {
let doc = match move_toml_content.parse::<DocumentMut>() {
Ok(d) => d,
Expand Down Expand Up @@ -671,7 +671,7 @@ async fn update_mvr_packages(

let dep_move_toml_content = fs::read_to_string(dep_move_toml_path)?;

let placeholder_address = ObjectId::from_str(&request_data.package_address)?;
let placeholder_address = Address::from_str(&request_data.package_address)?;

let MoveTomlPublishedID {
internal_pkg_name: Some(name),
Expand Down
Loading