-
Notifications
You must be signed in to change notification settings - Fork 0
/
HistoricalBookCovers.sol
62 lines (51 loc) · 1.58 KB
/
HistoricalBookCovers.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
pragma solidity >=0.4.22 <0.9.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract HistoricalBookCovers is ERC721 {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
struct BookInfo {
string name;
string category;
string subject;
string author;
string publicationDate;
string country;
string continent;
string museum;
}
mapping(uint256 => BookInfo) private _bookInfo;
constructor() ERC721("HistoricalBookCovers", "HBC") {}
function mintNFT(
address recipient,
string memory tokenURI,
string memory name,
string memory category,
string memory subject,
string memory author,
string memory publicationDate,
string memory country,
string memory continent,
string memory museum
) public returns (uint256) {
_tokenIds.increment();
uint256 newTokenId = _tokenIds.current();
_mint(recipient, newTokenId);
_setTokenURI(newTokenId, tokenURI);
_bookInfo[newTokenId] = BookInfo(
name,
category,
subject,
author,
publicationDate,
country,
continent,
museum
);
return newTokenId;
}
function getBookInfo(uint256 tokenId) public view returns (BookInfo memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
return _bookInfo[tokenId];
}
}