user.gno
2.44 Kb · 104 lines
1package user
2
3import (
4 "chain"
5
6 "gno.land/p/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v2/accesscontrol"
7)
8
9// Events
10const (
11 CreateUserEvent = "CreateUser"
12 UpdateUserEvent = "UpdateUser"
13 DeleteUserEvent = "DeleteUser"
14 SetUserMetadataEvent = "SetMetadata"
15)
16
17func HasUser(addr address) bool {
18 assertMigrationStateAvailable()
19 assertIsValidAddress(addr)
20 return userStore.Has(addr)
21}
22
23func CreateUser(cur realm, propKeys, propValues string) {
24 assertNotFrozen()
25 addr := accesscontrol.MustGetUserCaller(0, cur)
26 assertIsValidAddress(addr)
27 props := parsePropertiesCSV(propKeys, propValues)
28 validateCreateProperties(props)
29 userStore.Create(addr, props)
30 addrStr := addr.String()
31 chain.Emit(CreateUserEvent,
32 "address", addrStr,
33 )
34}
35
36func UpdateUser(cur realm, propKeys, propValues string) {
37 assertNotFrozen()
38 addr := accesscontrol.MustGetUserCaller(0, cur)
39 assertIsValidAddress(addr)
40 props := parsePropertiesCSV(propKeys, propValues)
41 validateUpdateProperties(props)
42 userStore.Update(addr, props)
43 addrStr := addr.String()
44 chain.Emit(UpdateUserEvent,
45 "address", addrStr,
46 )
47}
48
49func DeleteUser(cur realm) {
50 assertNotFrozen()
51 addr := accesscontrol.MustGetUserCaller(0, cur)
52 assertIsValidAddress(addr)
53 userStore.Delete(addr)
54 addrStr := addr.String()
55 chain.Emit(DeleteUserEvent,
56 "address", addrStr,
57 )
58}
59
60func GetNickname(addr address) string {
61 assertMigrationStateAvailable()
62 assertIsValidAddress(addr)
63 return userStore.NicknameByAddress(addr)
64}
65
66func GetAddressByNickname(nickname string) address {
67 assertMigrationStateAvailable()
68 assertValidNickname(nickname)
69 return userStore.AddressByNickname(nickname)
70}
71
72func HasNickname(nickname string) bool {
73 assertMigrationStateAvailable()
74 assertValidNickname(nickname)
75 return userStore.HasNickname(nickname)
76}
77
78func ListUsersByAddresses(addrs ...address) []map[string]string {
79 assertMigrationStateAvailable()
80 assertListLimit("addrs", len(addrs))
81 assertValidAddresses(addrs)
82
83 return userStore.ListUsersByAddresses(addrs...)
84}
85
86func ListUserMetadataByAddresses(addrs ...address) []string {
87 assertMigrationStateAvailable()
88 assertListLimit("addrs", len(addrs))
89 assertValidAddresses(addrs)
90
91 return userStore.ListUserMetadataByAddresses(addrs...)
92}
93
94func GetTotalUserSize() int {
95 assertMigrationStateAvailable()
96 return userStore.Total()
97}
98
99func ListUsers(page, count int) []string {
100 assertMigrationStateAvailable()
101 assertListPageCount(page, count)
102
103 return userStore.List(page, count)
104}