Search Apps Documentation Source Content File Folder Download Copy Actions Download

migration_research_migration.gno

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