Smart Contract
AFLMetadataHelper
A.8f9231920da9af6d.AFLMetadataHelper
1access(all) contract AFLMetadataHelper {
2
3 access(contract) let metadataByTemplateId: {UInt64: {String: String}}
4
5 access(all) let AdminStoragePath: StoragePath
6
7 access(all) view fun getMetadataForTemplate(id: UInt64): {String: String} {
8 if (self.metadataByTemplateId[id] == nil) {
9 return {}
10 }
11 return self.metadataByTemplateId[id]!
12 }
13
14 access(all) resource Admin {
15
16 access(all)fun updateMetadataForTemplate(id: UInt64, metadata: {String: String}) {
17 if (AFLMetadataHelper.metadataByTemplateId[id] == nil) {
18 AFLMetadataHelper.metadataByTemplateId[id] = {}
19 }
20 AFLMetadataHelper.metadataByTemplateId[id] = metadata
21 }
22
23 access(all) fun addMetadataToTemplate(id: UInt64, key: String, value: String) {
24 if (AFLMetadataHelper.metadataByTemplateId[id] == nil) {
25 AFLMetadataHelper.metadataByTemplateId[id] = {}
26 }
27 let templateRef: auth(Mutate) &{String: String} = &AFLMetadataHelper.metadataByTemplateId[id]!
28 templateRef[key] = value
29 }
30
31 access(all) fun removeMetadataFromTemplate(id: UInt64, key: String) {
32 let templateRef: auth(Mutate) &{String: String} = &AFLMetadataHelper.metadataByTemplateId[id]!
33 templateRef[key] = nil
34 }
35
36 access(all) fun removeAllExtendedMetadataFromTemplate(id: UInt64) {
37 AFLMetadataHelper.metadataByTemplateId[id] = {}
38 }
39 }
40
41 init() {
42 self.AdminStoragePath = /storage/AFLMetadataHelperAdmin
43 self.metadataByTemplateId = {}
44 let admin: @AFLMetadataHelper.Admin <- create Admin()
45 self.account.storage.save(<- admin, to: self.AdminStoragePath)
46 }
47}