Red.git | docs/coverage/report-data/ | Red-Driver-CacheWithStrKey.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>RaCoCo result: Red::Driver::CacheWithStrKey</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous">
<style>
pre.code::before {
counter-reset: listing;
}
pre.code span {
counter-increment: listing;
}
pre.code span::before {
content: counter(listing) ". ";
}
.coverage-green {
background-color: #32CD32;
/*color-blind
background-color: #00CED1;
/**/
}
.coverage-red {
background-color: #fa8072;
}
.coverage-purple {
background-color: #9370DB;
}
</style>
</head>
<body>
<div class="container">
<div class="row mt-5 mb-3">
<div class="col-12">
<div class="page-header">
<h1>Red::Driver::CacheWithStrKey 5.7%</h1>
</div>
</div>
</div>
<div class="row justify-content-md-center">
<div class="col-md-10">
<pre class="code">
<span class="coverage-green">use Red::Driver::Cache;</span>
<span class="coverage-no">use X::Red::Exceptions;</span>
<span class="coverage-no">use Red::AST;</span>
<span class="coverage-no">use Red::AST::Unary;</span>
<span class="coverage-no">use Red::AST::Select;</span>
<span class="coverage-no">use Red::AST::Infix;</span>
<span class="coverage-no">use Red::AST::Value;</span>
<span class="coverage-no">use Red::AST::LastInsertedRow;</span>
<span class="coverage-no"></span>
<span class="coverage-green">unit role Red::Driver::CacheWithStrKey does Red::Driver::Cache;</span>
<span class="coverage-no"></span>
<span class="coverage-red">method get-from-cache(Str) { ... }</span>
<span class="coverage-red">method set-on-cache(Str, @) { ... }</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method get-from-cache(Red::AST $ast) {</span>
<span class="coverage-red"> CATCH {</span>
<span class="coverage-red"> default {</span>
<span class="coverage-red"> .say</span>
<span class="coverage-no"> }</span>
<span class="coverage-no"> }</span>
<span class="coverage-red"> my Str $key = self.translate-key: $ast;</span>
<span class="coverage-red"> self.get-from-cache: $key, :$ast</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method set-on-cache(Red::AST $ast, @data) {</span>
<span class="coverage-red"> my Str $key = self.translate-key: $ast;</span>
<span class="coverage-red"> self.set-on-cache: $key, @data, :$ast</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method translate-key(Red::AST::Cast $_, $context?) {</span>
<span class="coverage-red"> "{ self.translate-key: .value }::{ .type }"</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method translate-key(Red::AST::LastInsertedRow $_, $context?) {</span>
<span class="coverage-red"> X::Red::Driver::Cache::DoNotCache.new.throw</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method translate-key(Red::Column $_, $context?) {</span>
<span class="coverage-red"> (.computation // $_).gist.subst: /\s+/, "_", :g</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method translate-key(Red::Model:U $_, "table-list") {</span>
<span class="coverage-red"> .^table</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method translate-key(Red::Model:U $_, "of") {</span>
<span class="coverage-red"> .^columns>>.column.map({ self.translate-key: $_, "of" }).join: "|"</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method translate-key(Red::AST::Infix $_, $context) {</span>
<span class="coverage-red"> "{ self.translate-key: .left, $context }_{ .op }_{ self.translate-key: .right, $context }"</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method translate-key(Red::AST::Value $_, $context) {</span>
<span class="coverage-red"> .value.Str</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method translate-key(Red::AST::Select $_, $context?) {</span>
<span class="coverage-red"> (</span>
<span class="coverage-no"> "CACHED_SELECT",</span>
<span class="coverage-no"> self.translate-key(.of, "of"),</span>
<span class="coverage-no"> "FROM",</span>
<span class="coverage-red"> .tables.grep({ not .?no-table }).unique.map({ self.translate-key: $_, "table-list" }).join("|"),</span>
<span class="coverage-red"> (|(</span>
<span class="coverage-no"> "WHERE",</span>
<span class="coverage-no"> self.translate-key($_, "filter"),</span>
<span class="coverage-no"> ) with .filter),</span>
<span class="coverage-red"> (|(</span>
<span class="coverage-no"> "ORDER_BY",</span>
<span class="coverage-red"> .order.map({ self.translate-key: $_, "order" }).join: "|"</span>
<span class="coverage-no"> ) if .order),</span>
<span class="coverage-red"> |( "LIMIT", .limit if .limit),</span>
<span class="coverage-red"> |( "OFFSET", .offset if .offset),</span>
<span class="coverage-no"> ).join: ":"</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
</pre>
</div>
</div>
</div>
</body>
</html>