logic.gno
0.83 Kb · 29 lines
1// Package logic is version 1 of the logic realm of the "state realm + swappable
2// logic" upgrade pattern (pattern C of the exploration; see ../../README.md).
3//
4// Same shape as v0, different rule. The counter it reads and writes is the same
5// one v0 was using: the upgrade changed the code without touching the data.
6package logic
7
8import (
9 root "gno.land/r/moul/x/upgrade/store/root/v0"
10
11 "gno.land/p/nt/ufmt/v0"
12)
13
14// Step is this version's business rule: the change that justified the upgrade.
15const Step = 1000
16
17// Inc applies this version's rule to the shared counter.
18func Inc(cur realm) int {
19 return root.Inc(cross(cur), Step)
20}
21
22// Get reads the shared counter, including everything v0 wrote.
23func Get() int {
24 return root.Get()
25}
26
27func Render(_ string) string {
28 return ufmt.Sprintf("store/logic/v1: counter=%d step=%d\n", Get(), Step)
29}