MCPcopy
hub / github.com/safing/portmaster / get

Method get

service/netquery/runtime_query_runner.go:47–77  ·  view source on GitHub ↗
(keyOrPrefix string)

Source from the content-addressed store, hash-verified

45}
46
47func (runner *RuntimeQueryRunner) get(keyOrPrefix string) ([]record.Record, error) {
48 query := strings.TrimPrefix(
49 keyOrPrefix,
50 runner.keyPrefix,
51 )
52
53 log.Infof("netquery: executing custom SQL query: %q", query)
54
55 var result []map[string]interface{}
56 if err := runner.db.Execute(context.Background(), query, orm.WithResult(&result)); err != nil {
57 return nil, fmt.Errorf("failed to perform query %q: %w", query, err)
58 }
59
60 // we need to wrap the result slice into a map as portbase/database attempts
61 // to inject a _meta field.
62 blob, err := json.Marshal(map[string]interface{}{
63 "result": result,
64 })
65 if err != nil {
66 return nil, fmt.Errorf("failed to marshal result: %w", err)
67 }
68
69 // construct a new record wrapper that uses the already prepared JSON blob.
70 key := fmt.Sprintf("%s:%s", runner.reg.DatabaseName(), keyOrPrefix)
71 wrapper, err := record.NewWrapper(key, new(record.Meta), dsd.JSON, blob)
72 if err != nil {
73 return nil, fmt.Errorf("failed to create record wrapper: %w", err)
74 }
75
76 return []record.Record{wrapper}, nil
77}

Callers

nothing calls this directly

Calls 7

InfofFunction · 0.92
WithResultFunction · 0.92
NewWrapperFunction · 0.92
ErrorfMethod · 0.80
MarshalMethod · 0.65
DatabaseNameMethod · 0.65
ExecuteMethod · 0.45

Tested by

no test coverage detected