mirror of
https://github.com/aljazceru/cdk.git
synced 2025-12-19 13:44:55 +01:00
feat: implement nut-06 time
This commit is contained in:
committed by
thesimplekid
parent
69be0838c4
commit
e67dc15ce6
@@ -79,6 +79,7 @@ impl JsMintInfo {
|
||||
nuts: JsValue,
|
||||
mint_icon_url: Option<String>,
|
||||
motd: Option<String>,
|
||||
time: Option<u64>,
|
||||
) -> Result<JsMintInfo> {
|
||||
Ok(JsMintInfo {
|
||||
inner: MintInfo {
|
||||
@@ -92,6 +93,7 @@ impl JsMintInfo {
|
||||
nuts: serde_wasm_bindgen::from_value(nuts).map_err(into_err)?,
|
||||
mint_icon_url,
|
||||
motd,
|
||||
time,
|
||||
},
|
||||
})
|
||||
}
|
||||
@@ -152,6 +154,12 @@ impl JsMintInfo {
|
||||
pub fn motd(&self) -> Option<String> {
|
||||
self.inner.motd.clone()
|
||||
}
|
||||
|
||||
/// Get time
|
||||
#[wasm_bindgen(getter)]
|
||||
pub fn time(&self) -> Option<u64> {
|
||||
self.inner.time
|
||||
}
|
||||
}
|
||||
|
||||
#[wasm_bindgen(js_name = ContactInfo)]
|
||||
|
||||
@@ -392,7 +392,7 @@ pub async fn post_check(
|
||||
}
|
||||
|
||||
pub async fn get_mint_info(State(state): State<MintState>) -> Result<Json<MintInfo>, Response> {
|
||||
Ok(Json(state.mint.mint_info().clone()))
|
||||
Ok(Json(state.mint.mint_info().clone().time(unix_time())))
|
||||
}
|
||||
|
||||
pub async fn post_swap(
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE mint ADD mint_time INTEGER;
|
||||
@@ -92,6 +92,7 @@ impl WalletDatabase for WalletSqliteDatabase {
|
||||
nuts,
|
||||
mint_icon_url,
|
||||
motd,
|
||||
time,
|
||||
) = match mint_info {
|
||||
Some(mint_info) => {
|
||||
let MintInfo {
|
||||
@@ -104,6 +105,7 @@ impl WalletDatabase for WalletSqliteDatabase {
|
||||
nuts,
|
||||
mint_icon_url,
|
||||
motd,
|
||||
time,
|
||||
} = mint_info;
|
||||
|
||||
(
|
||||
@@ -116,16 +118,17 @@ impl WalletDatabase for WalletSqliteDatabase {
|
||||
serde_json::to_string(&nuts).ok(),
|
||||
mint_icon_url,
|
||||
motd,
|
||||
time,
|
||||
)
|
||||
}
|
||||
None => (None, None, None, None, None, None, None, None, None),
|
||||
None => (None, None, None, None, None, None, None, None, None, None),
|
||||
};
|
||||
|
||||
sqlx::query(
|
||||
r#"
|
||||
INSERT OR REPLACE INTO mint
|
||||
(mint_url, name, pubkey, version, description, description_long, contact, nuts, mint_icon_url, motd)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
|
||||
(mint_url, name, pubkey, version, description, description_long, contact, nuts, mint_icon_url, motd, mint_time)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
|
||||
"#,
|
||||
)
|
||||
.bind(mint_url.to_string())
|
||||
@@ -138,6 +141,7 @@ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
|
||||
.bind(nuts)
|
||||
.bind(mint_icon_url)
|
||||
.bind(motd)
|
||||
.bind(time.map(|v| v as i64))
|
||||
.execute(&self.pool)
|
||||
.await
|
||||
.map_err(Error::from)?;
|
||||
@@ -771,6 +775,7 @@ fn sqlite_row_to_mint_info(row: &SqliteRow) -> Result<MintInfo, Error> {
|
||||
let row_nuts: Option<String> = row.try_get("nuts").map_err(Error::from)?;
|
||||
let mint_icon_url: Option<String> = row.try_get("mint_icon_url").map_err(Error::from)?;
|
||||
let motd: Option<String> = row.try_get("motd").map_err(Error::from)?;
|
||||
let time: Option<i64> = row.try_get("mint_time").map_err(Error::from)?;
|
||||
|
||||
Ok(MintInfo {
|
||||
name,
|
||||
@@ -784,6 +789,7 @@ fn sqlite_row_to_mint_info(row: &SqliteRow) -> Result<MintInfo, Error> {
|
||||
.unwrap_or_default(),
|
||||
mint_icon_url,
|
||||
motd,
|
||||
time: time.map(|t| t as u64),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -79,6 +79,9 @@ pub struct MintInfo {
|
||||
/// message of the day that the wallet must display to the user
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub motd: Option<String>,
|
||||
/// server unix timestamp
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub time: Option<u64>,
|
||||
}
|
||||
|
||||
impl MintInfo {
|
||||
@@ -170,6 +173,17 @@ impl MintInfo {
|
||||
..self
|
||||
}
|
||||
}
|
||||
|
||||
/// Set time
|
||||
pub fn time<S>(self, time: S) -> Self
|
||||
where
|
||||
S: Into<u64>,
|
||||
{
|
||||
Self {
|
||||
time: Some(time.into()),
|
||||
..self
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Supported nuts and settings
|
||||
|
||||
Reference in New Issue
Block a user