(evaluation: Evaluation, info: any, spans: any[], extraInfo: any)
| 518 | } |
| 519 | |
| 520 | export function findValue(evaluation: Evaluation, info: any, spans: any[], extraInfo: any) { |
| 521 | let queryId = `query|${info.requestId}`; |
| 522 | let query = {tag: ["query", "findValue"], token: info.variable}; |
| 523 | let eve = doQuery(queryId, query, spans, extraInfo); |
| 524 | |
| 525 | let sessionIndex = eve.getDatabase("session").index; |
| 526 | let evSession = evaluation.getDatabase("session"); |
| 527 | let lookup = {}; |
| 528 | let blockId, found; |
| 529 | let rows = []; |
| 530 | let varToRegister = {}; |
| 531 | let names = {}; |
| 532 | |
| 533 | let queryInfo = sessionIndex.alookup("tag", "query"); |
| 534 | if(queryInfo) { |
| 535 | let [entity] = queryInfo.toValues(); |
| 536 | let obj = sessionIndex.asObject(entity); |
| 537 | if(obj.register) { |
| 538 | for(let variable of obj.register) { |
| 539 | let varObj = sessionIndex.asObject(variable); |
| 540 | if(varObj) { |
| 541 | if(!blockId) { |
| 542 | blockId = varObj.block[0]; |
| 543 | for(let block of evSession.blocks) { |
| 544 | if(block.id === blockId) { |
| 545 | found = block; |
| 546 | break; |
| 547 | } |
| 548 | } |
| 549 | } |
| 550 | if(varObj.attribute) { |
| 551 | for(let attribute of varObj.attribute) { |
| 552 | varToRegister[attribute] = varObj.register[0]; |
| 553 | } |
| 554 | } |
| 555 | lookup[varObj.token[0]] = varObj.register[0]; |
| 556 | names[varObj.token[0]] = varObj.name[0]; |
| 557 | } |
| 558 | } |
| 559 | } |
| 560 | } |
| 561 | if(info.given) { |
| 562 | let keys = Object.keys(info.given); |
| 563 | let registers = []; |
| 564 | let registerValues = []; |
| 565 | for(let key of keys) { |
| 566 | let reg = varToRegister[key]; |
| 567 | if(reg !== undefined && registers.indexOf(reg) === -1) { |
| 568 | registers.push(reg); |
| 569 | registerValues.push(info.given[key][0]); |
| 570 | } |
| 571 | } |
| 572 | rows = findResultRows(found.results, registers, registerValues); |
| 573 | } else { |
| 574 | rows = found.results; |
| 575 | } |
| 576 | info.rows = rows.slice(0,100); |
| 577 | info.totalRows = rows.length; |
nothing calls this directly
no test coverage detected