mirror of
https://github.com/sosedoff/pgweb.git
synced 2025-01-07 10:17:17 +03:00
41bf189e6b
* 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
44 lines
780 B
Go
44 lines
780 B
Go
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
|
|
}
|