Smart Contract

AFLMetadataHelper

A.8f9231920da9af6d.AFLMetadataHelper

Deployed

1d ago
Feb 26, 2026, 10:18:21 PM UTC

Dependents

0 imports
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}