Search Apps Documentation Source Content File Folder Download Copy Actions Download

members_extension.gno

0.95 Kb · 40 lines
 1package basedao
 2
 3import "gno.land/p/samcrew/daokit"
 4
 5type MembersViewExtension interface {
 6	IsMember(memberId string) bool
 7}
 8
 9const MembersViewExtensionPath = "gno.land/p/demo/basedao.MembersView"
10
11func MustGetMembersViewExtension(dao daokit.DAO) MembersViewExtension {
12	ext := dao.Extension(MembersViewExtensionPath)
13	if ext == nil {
14		panic("no such extension: " + MembersViewExtensionPath)
15	}
16	val, ok := ext.(MembersViewExtension)
17	if !ok {
18		panic("extension does not conform to interface: " + MembersViewExtensionPath)
19	}
20	return val
21}
22
23type membersViewExtension struct {
24	getStore  func() *MembersStore
25	queryPath string
26}
27
28func (m *membersViewExtension) IsMember(memberId string) bool {
29	return m.getStore().IsMember(memberId)
30}
31
32var _ MembersViewExtension = (*membersViewExtension)(nil)
33
34func (m *membersViewExtension) Info() daokit.ExtensionInfo {
35	return daokit.ExtensionInfo{
36		Path:      MembersViewExtensionPath,
37		Version:   "1",
38		QueryPath: m.queryPath,
39	}
40}