state.gno
2.24 Kb ยท 82 lines
1package v1
2
3import (
4 "gno.land/p/nt/ufmt"
5 "gno.land/r/gnoswap/launchpad"
6)
7
8// Helper functions that access state through launchpadState
9
10func (lp *launchpadV1) getProject(projectID string) (*launchpad.Project, error) {
11 projects := lp.store.GetProjects()
12 project, ok := projects.Get(projectID)
13 if !ok {
14 return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("project(%s) not found", projectID))
15 }
16
17 p, ok := project.(*launchpad.Project)
18 if !ok {
19 return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("project(%s) not found", projectID))
20 }
21
22 return p, nil
23}
24
25func (lp *launchpadV1) getProjectTier(projectID string, tierDuration int64) (*launchpad.ProjectTier, error) {
26 project, err := lp.getProject(projectID)
27 if err != nil {
28 return nil, err
29 }
30
31 tier, err := project.GetTier(tierDuration)
32 if err != nil {
33 return nil, makeErrorWithDetails(errDataNotFound, err.Error())
34 }
35
36 return tier, nil
37}
38
39func (lp *launchpadV1) getProjectTierRewardManager(projectTierID string) (*launchpad.RewardManager, error) {
40 managers := lp.store.GetProjectTierRewardManagers()
41 rewardManager, ok := managers.Get(projectTierID)
42 if !ok {
43 return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("reward manager(%s) not found", projectTierID))
44 }
45
46 manager, ok := rewardManager.(*launchpad.RewardManager)
47 if !ok {
48 return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("reward manager(%s) not found", projectTierID))
49 }
50
51 return manager, nil
52}
53
54func (lp *launchpadV1) mustGetDeposit(depositID string) *launchpad.Deposit {
55 deposit, err := lp.getDeposit(depositID)
56 if err != nil {
57 panic(err)
58 }
59
60 return deposit
61}
62
63func (lp *launchpadV1) getDeposit(depositID string) (*launchpad.Deposit, error) {
64 deposits := lp.store.GetDeposits()
65 depositI, ok := deposits.Get(depositID)
66 if !ok {
67 return nil, makeErrorWithDetails(errNotExistDeposit, ufmt.Sprintf("(%s)", depositID))
68 }
69
70 deposit, ok := depositI.(*launchpad.Deposit)
71 if !ok {
72 return nil, makeErrorWithDetails(errDataNotFound, ufmt.Sprintf("deposit(%s) not found", depositID))
73 }
74
75 return deposit, nil
76}
77
78// nextDepositID increments and returns the next unique deposit ID.
79// This is used when creating new deposits.
80func (lp *launchpadV1) nextDepositID() string {
81 return lp.store.NextDepositID()
82}