Red.git | docs/coverage/report-data/ | MetamodelX-Red-OnDB.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>RaCoCo result: MetamodelX::Red::OnDB</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>MetamodelX::Red::OnDB 68.4%</h1>
</div>
</div>
</div>
<div class="row justify-content-md-center">
<div class="col-md-10">
<pre class="code">
<span class="coverage-green">use nqp;</span>
<span class="coverage-no">use Red::Attr::Column;</span>
<span class="coverage-no"></span>
<span class="coverage-no">=head2 MetamodelX::Red::OnDB</span>
<span class="coverage-no"></span>
<span class="coverage-green">unit role MetamodelX::Red::OnDB;</span>
<span class="coverage-no"></span>
<span class="coverage-red">has $!is-on-db-attr;</span>
<span class="coverage-no"></span>
<span class="coverage-red">method is-on-db-attr(|) {</span>
<span class="coverage-red"> $!is-on-db-attr;</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-green">sub is-on-db-attr-build(|){</span>
<span class="coverage-red"> False</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-green">method set-helper-attrs(Mu \type) {</span>
<span class="coverage-green"> my %attr is Set = type.^attributes>>.name;</span>
<span class="coverage-green"> unless %attr<%!___IS_ON_DB___> {</span>
<span class="coverage-green"> $!is-on-db-attr = Attribute.new: :name<%!___IS_ON_DB___>, :package(type), :type(Bool), :!has_accessor;</span>
<span class="coverage-green"> $!is-on-db-attr.set_build: &is-on-db-attr-build;</span>
<span class="coverage-green"> type.^add_attribute: $!is-on-db-attr;</span>
<span class="coverage-no"> }</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-no">#| Checks if the instance of model has a record in the database or not.</span>
<span class="coverage-no">#| For example, `Person.^create(...).^is-on-db` returns True, because `^create` was called,</span>
<span class="coverage-no">#| but `Person.new(...).^is-on-db` will return False, because the created object does not have</span>
<span class="coverage-no">#| a representation in the database without calls to `^create` or `^save` done.</span>
<span class="coverage-green">multi method is-on-db(\instance) {</span>
<span class="coverage-green"> $!is-on-db-attr.get_value(instance)</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-red">multi method not-on-db(\instance) {</span>
<span class="coverage-red"> $!is-on-db-attr.get_value(instance) = False</span>
<span class="coverage-no">}</span>
<span class="coverage-no"></span>
<span class="coverage-no">#| Sets that that object is on DB</span>
<span class="coverage-green">multi method saved-on-db(\instance) {</span>
<span class="coverage-green"> $!is-on-db-attr.get_value(instance) = True</span>
<span class="coverage-no">}</span>
</pre>
</div>
</div>
</div>
</body>
</html>