Search Apps Documentation Source Content File Folder Download Copy Actions Download

storage.gno

1.34 Kb ยท 81 lines
 1package builders
 2
 3import "chain/runtime"
 4
 5var (
 6	admin       address
 7	submissions []*Submission
 8	webPath     string = "r/g1778y2yphxs2wpuaflsy5y9qwcd4gttn4g5yjx5/buildersv5"
 9)
10
11func init() {
12	admin = "g1778y2yphxs2wpuaflsy5y9qwcd4gttn4g5yjx5"
13}
14
15func Admin() address {
16	return admin
17}
18
19func applicantAddr() address {
20	return runtime.OriginCaller()
21}
22
23func requireAdmin() {
24	if runtime.OriginCaller() != admin {
25		panic("admin only")
26	}
27}
28
29func GetSubmission(addr address) *Submission {
30	for _, sub := range submissions {
31		if sub.Applicant == addr {
32			return sub
33		}
34	}
35	return nil
36}
37
38func MySubmission() *Submission {
39	return GetSubmission(applicantAddr())
40}
41
42func setSubmission(sub *Submission) {
43	for i, existing := range submissions {
44		if existing.Applicant == sub.Applicant {
45			submissions[i] = sub
46			return
47		}
48	}
49	submissions = append(submissions, sub)
50}
51
52func TotalSubmissions() int {
53	return len(submissions)
54}
55
56func SubmissionAt(i int) *Submission {
57	if i < 0 || i >= len(submissions) {
58		panic("index out of range")
59	}
60	return submissions[i]
61}
62
63func TotalApproved() int {
64	count := 0
65	for _, sub := range submissions {
66		if sub.Status == StatusApproved || sub.Status == StatusPaid {
67			count++
68		}
69	}
70	return count
71}
72
73func TotalPaid() int {
74	count := 0
75	for _, sub := range submissions {
76		if sub.Status == StatusPaid {
77			count++
78		}
79	}
80	return count
81}