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}