mirror of
https://github.com/metrico/qryn.git
synced 2025-03-15 19:18:09 +00:00
logql + dots
This commit is contained in:
@ -46,7 +46,7 @@ module.exports.parseCliQL = (query) => {
|
||||
} else if (query.startsWith('clickhouse(')) {
|
||||
let queries = null
|
||||
const _query = /\{(.*?)\}/g.exec(query)[1] || query
|
||||
queries = _query.replace(/\!?="/g, ':"')
|
||||
queries = _query //_query.replace(/\!?="/g, ':"')
|
||||
return toJSON(queries)
|
||||
}
|
||||
return undefined
|
||||
|
@ -190,7 +190,7 @@ const reloadFingerprints = function () {
|
||||
stream.on('end', function () {
|
||||
rows.forEach(function (row) {
|
||||
try {
|
||||
const JSONLabels = toJSON(row[1].replace(/\!?=/g, ':'))
|
||||
const JSONLabels = toJSON(row[1]/*.replace(/\!?=/g, ':')*/)
|
||||
labels.add(row[0], JSON.stringify(JSONLabels))
|
||||
for (const key in JSONLabels) {
|
||||
// logger.debug('Adding key',row);
|
||||
|
@ -31,7 +31,7 @@ function processStream (stream, labels, bulkLabels, bulk, toJSON, fingerPrint) {
|
||||
JSONLabels = stream.stream
|
||||
} else {
|
||||
JSONLabels = toJSON(
|
||||
stream.labels.replace(/\!?="/g, ':"')
|
||||
stream.labels //stream.labels.replace(/\!?="/g, ':"')
|
||||
)
|
||||
}
|
||||
// Calculate Fingerprint
|
||||
|
@ -19,7 +19,7 @@ const logger = pino({
|
||||
res.stack = err.stack
|
||||
return res.toString() + '\n' + res.stack.toString()
|
||||
}
|
||||
return err.message.toString() + '\n' + err.stack.toString()
|
||||
return err.message.toString() + (err.stack ? '\n' + err.stack.toString() : '')
|
||||
})
|
||||
}
|
||||
})
|
||||
|
36
lib/utils.js
36
lib/utils.js
@ -44,7 +44,41 @@ const fingerPrint = function (text, hex, alg) {
|
||||
else return parseInt(shortHash(text), 16)
|
||||
}
|
||||
|
||||
const toJSON = require('jsonic')
|
||||
/**
|
||||
*
|
||||
* @param str {string}
|
||||
* @returns Object
|
||||
*/
|
||||
const toJSON = (function () {
|
||||
const labelsLang = `
|
||||
<SYNTAX> ::= <OWSP> <pair> <OWSP> *("," <OWSP> <pair>) <OWSP>
|
||||
label ::= (<ALPHA> | "_") *(<ALPHA> | "." | "_" | <DIGITS>)
|
||||
pair ::= <label> <OWSP> "=" <OWSP> <QLITERAL>
|
||||
`
|
||||
const Compiler = require('bnf/Compiler').Compiler
|
||||
const compiler = new Compiler()
|
||||
compiler.AddLanguage(labelsLang, 'labels')
|
||||
const getPairs = (root) => {
|
||||
let tokens = []
|
||||
for (let i = 0; i < root.tokens.length; i++) {
|
||||
if (root.tokens[i].name === 'pair') {
|
||||
tokens.push(root.tokens[i])
|
||||
}
|
||||
tokens = [...tokens, ...getPairs(root.tokens[i])]
|
||||
}
|
||||
|
||||
return tokens
|
||||
}
|
||||
return (str) => {
|
||||
const script = compiler.ParseScript(str)
|
||||
const pairs = getPairs(script.rootToken)
|
||||
const res = {}
|
||||
for (const pair of pairs) {
|
||||
res[pair.Child('label').value] = JSON.parse(pair.Child('QLITERAL').value)
|
||||
}
|
||||
return res
|
||||
}
|
||||
})() //require('jsonic')
|
||||
|
||||
const parseOrDefault = (str, def) => {
|
||||
try {
|
||||
|
@ -4,7 +4,7 @@ log_stream_fp_selector ::= "{" <OWSP> <log_stream_selector_rule> *(<OWSP> "," <O
|
||||
log_stream_selector ::= <log_stream_fp_selector> <OWSP> *(<OWSP><log_pipeline>)
|
||||
|
||||
log_stream_selector_rule ::= <label> <OWSP> <operator> <OWSP> <quoted_str>
|
||||
label ::= (<ALPHA> | "_") *(<ALPHA> | "_" | <DIGITS>)
|
||||
label ::= (<ALPHA> | "_") *(<ALPHA> | "." | "_" | <DIGITS>)
|
||||
operator ::= <stream_selector_operator_registry>
|
||||
quoted_str ::= <QLITERAL> | <AQLITERAL>
|
||||
|
||||
|
Reference in New Issue
Block a user