property_config.gno
2.69 Kb · 73 lines
1package blueprint
2
3import (
4 "chain"
5
6 "gno.land/p/akkadia/v0/accesscontrol"
7 "gno.land/p/akkadia/v0/validate"
8 "gno.land/r/akkadia/v0/admin"
9)
10
11var (
12 blueprintCreateValidator = validate.NewValidator(
13 validate.DefaultStringPolicy{LenKind: validate.StringStandard, AllowEmpty: true},
14 []validate.StringPolicy{
15 validate.NewStringPolicy("biome", validate.StringPlain, validate.StringShort, 0, true, true),
16 validate.NewStringPolicy("name", validate.StringPlain, validate.StringStandard, 0, true, true),
17 validate.NewStringPolicy("description", validate.StringPlain, validate.StringText, 0, false, true),
18 validate.NewStringPolicy("state", validate.StringPlain, validate.StringShort, 0, true, true),
19 validate.NewStringPolicy("size", validate.StringInt, validate.StringShort, 0, true, false),
20 },
21 []string{"id", "owner", "createdAt", "updatedAt"},
22 32,
23 true,
24 )
25
26 blueprintUpdateValidator = validate.NewValidator(
27 validate.DefaultStringPolicy{LenKind: validate.StringStandard, AllowEmpty: true},
28 []validate.StringPolicy{
29 validate.NewStringPolicy("name", validate.StringPlain, validate.StringStandard, 0, false, true),
30 validate.NewStringPolicy("description", validate.StringPlain, validate.StringText, 0, false, true),
31 validate.NewStringPolicy("state", validate.StringPlain, validate.StringShort, 0, false, true),
32 },
33 []string{"id", "owner", "biome", "size", "createdAt", "updatedAt"},
34 32,
35 true,
36 )
37)
38
39func SetBlueprintCreatePolicies(cur realm, defaultPolicy validate.DefaultStringPolicy, newPolicies []validate.StringPolicy, pairMax int, denyKeys []string, allowUnknown bool) {
40 assertNotFrozen()
41 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
42 // NewValidator copies denyKeys and stores policies by value in its own map.
43 next := validate.NewValidator(defaultPolicy, newPolicies, denyKeys, pairMax, allowUnknown)
44 valid, message := next.Valid()
45 if !valid {
46 panic(message)
47 }
48 blueprintCreateValidator = next
49
50 chain.Emit("SetBlueprintCreatePolicies")
51}
52
53func SetBlueprintUpdatePolicies(cur realm, defaultPolicy validate.DefaultStringPolicy, newPolicies []validate.StringPolicy, pairMax int, denyKeys []string, allowUnknown bool) {
54 assertNotFrozen()
55 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
56 // NewValidator copies denyKeys and stores policies by value in its own map.
57 next := validate.NewValidator(defaultPolicy, newPolicies, denyKeys, pairMax, allowUnknown)
58 valid, message := next.Valid()
59 if !valid {
60 panic(message)
61 }
62 blueprintUpdateValidator = next
63
64 chain.Emit("SetBlueprintUpdatePolicies")
65}
66
67func GetBlueprintCreatePolicies() validate.Validator {
68 return blueprintCreateValidator.Clone()
69}
70
71func GetBlueprintUpdatePolicies() validate.Validator {
72 return blueprintUpdateValidator.Clone()
73}