Skip to content

Commit f4f58a0

Browse files
committed
ref: only save latest version if provided version is greater than current
1 parent 8885d61 commit f4f58a0

File tree

2 files changed

+24
-19
lines changed

2 files changed

+24
-19
lines changed

contracts/os/andromeda-adodb/src/execute.rs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::state::{
22
read_code_id, remove_code_id, save_action_fees, store_code_id, ACTION_FEES, ADO_TYPE,
3-
LATEST_VERSION, PUBLISHER, UNPUBLISHED_CODE_IDS, UNPUBLISHED_VERSIONS,
3+
PUBLISHER, UNPUBLISHED_CODE_IDS, UNPUBLISHED_VERSIONS,
44
};
55

66
use andromeda_std::ado_contract::ADOContract;
@@ -43,23 +43,13 @@ pub fn publish(
4343
msg: Some("ado_type can't be an empty string".to_string())
4444
}
4545
);
46-
let current_ado_version = LATEST_VERSION.may_load(deps.storage, &ado_type)?;
46+
4747
ensure!(
4848
semver::Version::parse(&version).is_ok(),
4949
ContractError::InvalidADOVersion {
5050
msg: Some("Provided version is not valid semver".to_string())
5151
}
5252
);
53-
let new_version = semver::Version::parse(&version).unwrap();
54-
if let Some(ado_version) = current_ado_version {
55-
let current_version = semver::Version::parse(&ado_version.0).unwrap();
56-
ensure!(
57-
new_version != current_version,
58-
ContractError::InvalidADOVersion {
59-
msg: Some("Version must be different than the current version".to_string())
60-
}
61-
);
62-
}
6353

6454
let version = ADOVersion::from_type(ado_type).with_version(version);
6555
ensure!(

contracts/os/andromeda-adodb/src/state.rs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,29 @@ pub fn store_code_id(
3737
.ok()
3838
.ok_or(ContractError::InvalidADOVersion { msg: None })?;
3939
let prerelease = version.pre.parse::<String>().unwrap_or_default();
40+
4041
if prerelease.is_empty() {
41-
LATEST_VERSION
42-
.save(
43-
storage,
44-
&ado_version.get_type(),
45-
&(ado_version.get_version(), code_id),
46-
)
47-
.unwrap();
42+
let current_ado_version = LATEST_VERSION.may_load(storage, &ado_version.get_type())?;
43+
if let Some(current_ado_version) = current_ado_version {
44+
let current_version = semver::Version::parse(&current_ado_version.0).unwrap();
45+
if version > current_version {
46+
LATEST_VERSION
47+
.save(
48+
storage,
49+
&ado_version.get_type(),
50+
&(ado_version.get_version(), code_id),
51+
)
52+
.unwrap();
53+
}
54+
} else {
55+
LATEST_VERSION
56+
.save(
57+
storage,
58+
&ado_version.get_type(),
59+
&(ado_version.get_version(), code_id),
60+
)
61+
.unwrap();
62+
}
4863
}
4964
CODE_ID
5065
.save(storage, ado_version.as_str(), &code_id)

0 commit comments

Comments
 (0)