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}