odra_modules/erc721/extensions/
erc721_metadata.rs1use crate::erc721::extensions::erc721_metadata::errors::Error;
4use odra::prelude::*;
5
6pub trait Erc721Metadata {
8 fn name(&self) -> String;
10 fn symbol(&self) -> String;
12 fn base_uri(&self) -> String;
14}
15
16#[odra::module(errors = Error)]
18pub struct Erc721MetadataExtension {
19 name: Var<String>,
20 symbol: Var<String>,
21 base_uri: Var<String>
22}
23
24impl Erc721Metadata for Erc721MetadataExtension {
25 fn name(&self) -> String {
26 self.name
27 .get()
28 .unwrap_or_revert_with(&self.env(), Error::NameNotSet)
29 }
30
31 fn symbol(&self) -> String {
32 self.symbol
33 .get()
34 .unwrap_or_revert_with(&self.env(), Error::SymbolNotSet)
35 }
36
37 fn base_uri(&self) -> String {
38 self.base_uri
39 .get()
40 .unwrap_or_revert_with(&self.env(), Error::BaseUriNotSet)
41 }
42}
43
44impl Erc721MetadataExtension {
45 pub fn init(&mut self, name: String, symbol: String, base_uri: String) {
47 self.name.set(name);
48 self.symbol.set(symbol);
49 self.base_uri.set(base_uri);
50 }
51}
52
53pub mod errors {
55 use odra::prelude::*;
56
57 #[odra::odra_error]
59 pub enum Error {
60 NameNotSet = 31_000,
62 SymbolNotSet = 31_001,
64 BaseUriNotSet = 31_002
66 }
67}