Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}