migration_research_migration.gno
2.14 Kb · 82 lines
1package acr
2
3import (
4 "gno.land/p/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v0/v0/accesscontrol"
5 oldacr "gno.land/r/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v0/v0/acr"
6 "gno.land/r/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v1/admin"
7)
8
9const (
10 migrationPhaseFinalized = iota
11)
12
13var (
14 migrationInitialized bool
15 migrationFinalized bool
16 migrationGRC20Initialized bool
17 migrationPhase int
18 migrationOffset int
19)
20
21// MigrationInit is the first next-package call made by the research driver.
22func MigrationInit(cur realm) {
23 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
24 if migrationInitialized {
25 panic("migration already initialized")
26 }
27
28 config := oldacr.GetMigrationConfig()
29 listLimit = config.ListLimit
30 frozen = config.Frozen
31 acrStore = oldacr.GetMigrationACRStore(cross(cur))
32 migrationGRC20Initialized = true
33
34 migrationInitialized = true
35 migrationFinalized = true
36 migrationPhase = migrationPhaseFinalized
37 migrationOffset = 0
38}
39
40// MigrationNext advances the migration after MigrationInit until finalization.
41func MigrationNext(cur realm) {
42 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
43 if !migrationInitialized {
44 panic("migration not initialized")
45 }
46 if migrationFinalized {
47 panic("migration already finalized")
48 }
49}
50
51// IsMigrationInitialized reports whether MigrationInit has run.
52func IsMigrationInitialized() bool {
53 return migrationInitialized
54}
55
56// IsMigrationFinalized reports whether migration batches are complete.
57func IsMigrationFinalized() bool {
58 return migrationFinalized
59}
60
61// GetMigrationPhase reports the current migration phase.
62func GetMigrationPhase() int {
63 return migrationPhase
64}
65
66// GetMigrationOffset reports the current migration offset within the phase.
67func GetMigrationOffset() int {
68 return migrationOffset
69}
70
71// IsGRC20MigrationInitialized reports whether the token store pointer is attached.
72func IsGRC20MigrationInitialized() bool {
73 return migrationGRC20Initialized
74}
75
76func resetMigrationState() {
77 migrationInitialized = false
78 migrationFinalized = false
79 migrationGRC20Initialized = false
80 migrationPhase = migrationPhaseFinalized
81 migrationOffset = 0
82}