MCPcopy Create free account
hub / github.com/Permify/permify / ReadAttributes

Method ReadAttributes

internal/servers/data_server.go:110–156  ·  view source on GitHub ↗

ReadAttributes - Allows directly querying the stored engines data to display and filter stored attribute tuples

(ctx context.Context, request *v1.AttributeReadRequest)

Source from the content-addressed store, hash-verified

108
109// ReadAttributes - Allows directly querying the stored engines data to display and filter stored attribute tuples
110func (r *DataServer) ReadAttributes(ctx context.Context, request *v1.AttributeReadRequest) (*v1.AttributeReadResponse, error) {
111 ctx, span := internal.Tracer.Start(ctx, "data.read.attributes")
112 defer span.End()
113
114 size := request.GetPageSize()
115 if size == 0 {
116 size = 50
117 }
118
119 v := request.Validate()
120 if v != nil {
121 return nil, status.Error(GetStatus(v), v.Error()) // Return validation error
122 }
123
124 snap := request.GetMetadata().GetSnapToken()
125 if snap == "" {
126 st, err := r.dr.HeadSnapshot(ctx, request.GetTenantId())
127 if err != nil {
128 return nil, status.Error(GetStatus(err), err.Error()) // Return snapshot error
129 }
130 snap = st.Encode().String()
131 }
132
133 collection, ct, err := r.dr.ReadAttributes(
134 ctx,
135 request.GetTenantId(),
136 request.GetFilter(),
137 snap,
138 database.NewPagination(
139 database.Size(size),
140 database.Token(request.GetContinuousToken()),
141 ),
142 )
143 if err != nil {
144 span.RecordError(err)
145 span.SetStatus(otelCodes.Error, err.Error())
146 slog.ErrorContext(ctx, err.Error())
147 return nil, status.Error(GetStatus(err), err.Error())
148 }
149
150 r.readAttributesHistogram.Record(ctx, 1)
151
152 return &v1.AttributeReadResponse{
153 Attributes: collection.GetAttributes(),
154 ContinuousToken: ct.String(),
155 }, nil
156}
157
158// Write - Write relationships and attributes to writeDB
159func (r *DataServer) Write(ctx context.Context, request *v1.DataWriteRequest) (*v1.DataWriteResponse, error) {

Callers

nothing calls this directly

Implementers 1

UnimplementedDataServerpkg/pb/base/v1/service_grpc.pb.go

Calls 15

NewPaginationFunction · 0.92
SizeFunction · 0.92
TokenFunction · 0.92
GetStatusFunction · 0.85
StartMethod · 0.80
HeadSnapshotMethod · 0.65
StringMethod · 0.65
EncodeMethod · 0.65
ReadAttributesMethod · 0.65
GetPageSizeMethod · 0.45
ValidateMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected