Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}