ReadAttributes - Allows directly querying the stored engines data to display and filter stored attribute tuples
(ctx context.Context, request *v1.AttributeReadRequest)
| 108 | |
| 109 | // ReadAttributes - Allows directly querying the stored engines data to display and filter stored attribute tuples |
| 110 | func (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 |
| 159 | func (r *DataServer) Write(ctx context.Context, request *v1.DataWriteRequest) (*v1.DataWriteResponse, error) { |
nothing calls this directly
no test coverage detected