-
Notifications
You must be signed in to change notification settings - Fork 0
/
ArabicDocuments.sol
77 lines (63 loc) · 2 KB
/
ArabicDocuments.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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;
string arabicDocumentURI;
}
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,
string memory arabicDocumentURI
) 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,
arabicDocumentURI
);
return newTokenId;
}
function getBookInfo(uint256 tokenId) public view returns (BookInfo memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
return _bookInfo[tokenId];
}
}
contract ArabicDocuments {
mapping(uint256 => string) private _documents;
function addDocument(uint256 tokenId, string memory documentURI) public {
_documents[tokenId] = documentURI;
}
function getDocument(uint256 tokenId) public view returns (string memory) {
return _documents[tokenId];
}
}