Search Apps Documentation Source Content File Folder Download Copy Actions Download

migration_research_migration.gno

2.41 Kb · 84 lines
 1package personal_world
 2
 3import (
 4	"gno.land/p/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v0/v0/accesscontrol"
 5	oldpw "gno.land/r/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v0/v0/personal_world"
 6	"gno.land/r/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v1/admin"
 7)
 8
 9var (
10	migrationInitialized bool
11	migrationFinalized   bool
12	migrationOffset      int
13	migrationTotal       int
14	migrationLastWorldID uint32
15)
16
17// MigrationInit is the first next-package call made by the research driver.
18func MigrationInit(cur realm) {
19	accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
20	if migrationInitialized {
21		panic("migration already initialized")
22	}
23
24	config := oldpw.GetMigrationConfig()
25	resetMigrationDestination(cur, config)
26
27	migrationInitialized = true
28	migrationOffset = migrationTotal
29	migrationFinalized = true
30}
31
32// MigrationNext advances the migration after MigrationInit until finalization.
33func MigrationNext(cur realm) {
34	accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
35	if !migrationInitialized {
36		panic("migration not initialized")
37	}
38	if migrationFinalized {
39		panic("migration already finalized")
40	}
41
42	migrationOffset = migrationTotal
43	migrationFinalized = true
44}
45
46// IsMigrationInitialized reports whether MigrationInit has run.
47func IsMigrationInitialized() bool {
48	return migrationInitialized
49}
50
51// IsMigrationFinalized reports whether migration batches are complete.
52func IsMigrationFinalized() bool {
53	return migrationFinalized
54}
55
56// GetMigrationOffset reports the number of source records accounted for by migration.
57func GetMigrationOffset() int {
58	return migrationOffset
59}
60
61// GetMigrationTotal reports the source world total captured during MigrationInit.
62func GetMigrationTotal() int {
63	return migrationTotal
64}
65
66// GetMigrationLastWorldID reports the cursor world ID used by batch migration.
67func GetMigrationLastWorldID() uint32 {
68	return migrationLastWorldID
69}
70
71func resetMigrationDestination(cur realm, config oldpw.MigrationConfig) {
72	feeCollectorBPS = config.FeeCollectorBPS
73	listLimit = config.ListLimit
74	batchLimit = config.BatchLimit
75	frozen = config.Frozen
76	worldStore = oldpw.GetMigrationWorldStore(cross(cur))
77	worldConfigStore = oldpw.GetMigrationWorldConfigStore(cross(cur))
78	verifierStore = oldpw.GetMigrationVerifierStore(cross(cur))
79	personalWorldAuthzRBAC = oldpw.GetMigrationPersonalWorldAuthzRBAC(cross(cur))
80
81	migrationOffset = 0
82	migrationTotal = config.TotalWorlds
83	migrationLastWorldID = 0
84}