migration_research_store.gno
1.84 Kb · 82 lines
1package user
2
3import (
4 "strings"
5
6 olduser "gno.land/r/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v0/v0/user"
7)
8
9type UserStore = olduser.UserStore
10
11const (
12 MigrationResearchExpectedMetadata = `{"role":"researcher","tier":"gold"}`
13 MigrationResearchExpectedIntroduction = "migration"
14 MigrationResearchExpectedAppearanceRate = "1"
15)
16
17var (
18 userStore *UserStore
19 listLimit int
20)
21
22func GetTotalUserSize() int {
23 return userStore.Total()
24}
25
26func HasUser(addr address) bool {
27 return userStore.Has(addr)
28}
29
30func GetNickname(addr address) string {
31 return userStore.NicknameByAddress(addr)
32}
33
34func HasNickname(nickname string) bool {
35 return userStore.HasNickname(nickname)
36}
37
38func GetAddressByNickname(nickname string) address {
39 return userStore.AddressByNickname(nickname)
40}
41
42func ListUserMetadataByAddresses(addrs ...address) []string {
43 return userStore.ListUserMetadataByAddresses(addrs...)
44}
45
46func ListUsersByAddresses(addrs ...address) []map[string]string {
47 return userStore.ListUsersByAddresses(addrs...)
48}
49
50func AdminUpdateUser(cur realm, addr address, keys string, values string) {
51 userStore.Update(addr, migrationResearchProperties(keys, values))
52}
53
54func SetUserMetadata(cur realm, addr address, metadata string) {
55 userStore.SetMetadata(addr, metadata)
56}
57
58func AdminDeleteUser(cur realm, addr address) {
59 userStore.Delete(addr)
60}
61
62func migrationResearchNickname(addr address) string {
63 addrStr := addr.String()
64 if len(addrStr) < 12 {
65 return "mr_" + addrStr
66 }
67 return "mr_" + addrStr[2:12]
68}
69
70func migrationResearchProperties(keys string, values string) map[string]string {
71 keyParts := strings.Split(keys, ",")
72 valueParts := strings.Split(values, ",")
73 if len(keyParts) != len(valueParts) {
74 panic("properties length mismatch")
75 }
76
77 props := make(map[string]string)
78 for i, key := range keyParts {
79 props[key] = valueParts[i]
80 }
81 return props
82}