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}