Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}