Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}