Local queries (#641)
* Read local queries from pgweb home directory * Refactor local query functionality * Allow picking local query in the query tab * WIP * Disable local query dropdown during execution * Only allow local queries running in a single session mode * Add middleware to enforce local query endpoint availability * Fix query check * Add query store tests * Make query store errors portable * Skip building specific tests on windows
This commit is contained in:
43
pkg/queries/field.go
Normal file
43
pkg/queries/field.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package queries
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type field struct {
|
||||
value string
|
||||
re *regexp.Regexp
|
||||
}
|
||||
|
||||
func (f field) String() string {
|
||||
return f.value
|
||||
}
|
||||
|
||||
func (f field) matches(input string) bool {
|
||||
if f.re != nil {
|
||||
return f.re.MatchString(input)
|
||||
}
|
||||
return f.value == input
|
||||
}
|
||||
|
||||
func newField(value string) (field, error) {
|
||||
f := field{value: value}
|
||||
|
||||
if value == "*" { // match everything
|
||||
f.re = reMatchAll
|
||||
} else if reExpression.MatchString(value) { // match by given expression
|
||||
// Make writing expressions easier for values like "foo_*"
|
||||
if strings.Count(value, "*") == 1 {
|
||||
value = strings.Replace(value, "*", "(.+)", 1)
|
||||
}
|
||||
re, err := regexp.Compile(fmt.Sprintf("^%s$", value))
|
||||
if err != nil {
|
||||
return f, err
|
||||
}
|
||||
f.re = re
|
||||
}
|
||||
|
||||
return f, nil
|
||||
}
|
||||
Reference in New Issue
Block a user