init.gno
1.13 Kb · 52 lines
1package v1
2
3import (
4 "gno.land/r/gnoswap/launchpad"
5)
6
7func init(cur realm) {
8 registerLaunchpadV1(cur)
9}
10
11func registerLaunchpadV1(cur realm) {
12 launchpad.RegisterInitializer(cross(cur), func(_ int, rlm realm, launchpadStore launchpad.ILaunchpadStore) launchpad.ILaunchpad {
13 err := initStoreData(0, rlm, launchpadStore)
14 if err != nil {
15 panic(err)
16 }
17
18 return NewLaunchpadV1(launchpadStore)
19 })
20}
21
22func initStoreData(_ int, rlm realm, launchpadStore launchpad.ILaunchpadStore) error {
23 if !launchpadStore.HasProjectsKey() {
24 err := launchpadStore.SetProjects(0, rlm, launchpad.NewBPTreeN(16))
25 if err != nil {
26 return err
27 }
28 }
29
30 if !launchpadStore.HasProjectTierRewardManagersKey() {
31 err := launchpadStore.SetProjectTierRewardManagers(0, rlm, launchpad.NewBPTreeN(16))
32 if err != nil {
33 return err
34 }
35 }
36
37 if !launchpadStore.HasDepositCounterStoreKey() {
38 err := launchpadStore.SetDepositCounter(0, rlm, launchpad.NewCounter())
39 if err != nil {
40 return err
41 }
42 }
43
44 if !launchpadStore.HasDepositsKey() {
45 err := launchpadStore.SetDeposits(0, rlm, launchpad.NewBPTreeN(16))
46 if err != nil {
47 return err
48 }
49 }
50
51 return nil
52}