summaryrefslogtreecommitdiff
path: root/vendor/github.com/authzed/spicedb/pkg/datastore/stats.go
blob: f98c4057aa45406a8359aa0fb44d8b3b6056ed47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package datastore

import (
	"github.com/authzed/spicedb/pkg/namespace"
	iv1 "github.com/authzed/spicedb/pkg/proto/impl/v1"
)

// ComputeObjectTypeStats creates a list of object type stats from an input list of
// parsed object types.
func ComputeObjectTypeStats(objTypes []RevisionedNamespace) []ObjectTypeStat {
	stats := make([]ObjectTypeStat, 0, len(objTypes))

	for _, objType := range objTypes {
		var relations, permissions uint32

		for _, rel := range objType.Definition.Relation {
			if namespace.GetRelationKind(rel) == iv1.RelationMetadata_PERMISSION {
				permissions++
			} else {
				relations++
			}
		}

		stats = append(stats, ObjectTypeStat{
			NumRelations:   relations,
			NumPermissions: permissions,
		})
	}

	return stats
}