Lucas Werkmeister (WMDE) has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/391281 )

Change subject: Add CachingMetadata to CheckResult and API output
......................................................................

Add CachingMetadata to CheckResult and API output

CheckResult is expanded to hold some CachingMetadata (defaulting to
“fresh”). The three SPARQL-using checkers copy their CachingMetadata to
the CheckResult, and the CheckConstraints API includes the information
in the response if it’s not fresh.

Bug: T179844
Change-Id: Ic0b2e362084f26ffc6400ab39adecd8530a9332b
---
M api/CheckConstraints.php
M includes/ConstraintCheck/Checker/TypeChecker.php
M includes/ConstraintCheck/Checker/UniqueValueChecker.php
M includes/ConstraintCheck/Checker/ValueTypeChecker.php
M includes/ConstraintCheck/Result/CheckResult.php
M tests/phpunit/Result/CheckResultTest.php
6 files changed, 42 insertions(+), 3 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQualityConstraints
 refs/changes/81/391281/1

diff --git a/api/CheckConstraints.php b/api/CheckConstraints.php
index bed10bd..76d106e 100644
--- a/api/CheckConstraints.php
+++ b/api/CheckConstraints.php
@@ -372,6 +372,12 @@
                                if ( $checkResult->getContext()->getType() === 
Context::TYPE_STATEMENT ) {
                                        $result['claim'] = 
$checkResult->getContext()->getSnakStatement()->getGuid();
                                }
+                               $cachingMetadata = 
$checkResult->getCachingMetadata();
+                               if ( $cachingMetadata->isCached() ) {
+                                       $result['cached'] = [
+                                               'maximumAgeInSeconds' => 
$cachingMetadata->getMaximumAgeInSeconds(),
+                                       ];
+                               }
                        }
 
                        $checkResult->getContext()->storeCheckResultInArray( 
$result, $constraintReport );
diff --git a/includes/ConstraintCheck/Checker/TypeChecker.php 
b/includes/ConstraintCheck/Checker/TypeChecker.php
index 01cd19d..391680a 100644
--- a/includes/ConstraintCheck/Checker/TypeChecker.php
+++ b/includes/ConstraintCheck/Checker/TypeChecker.php
@@ -116,7 +116,8 @@
                        $status = CheckResult::STATUS_VIOLATION;
                }
 
-               return new CheckResult( $context, $constraint, $parameters, 
$status, $message );
+               return ( new CheckResult( $context, $constraint, $parameters, 
$status, $message ) )
+                       ->setCachingMetadata( $result->getCachingMetadata() );
        }
 
        public function checkConstraintParameters( Constraint $constraint ) {
diff --git a/includes/ConstraintCheck/Checker/UniqueValueChecker.php 
b/includes/ConstraintCheck/Checker/UniqueValueChecker.php
index 421cdaa..bce8ed3 100644
--- a/includes/ConstraintCheck/Checker/UniqueValueChecker.php
+++ b/includes/ConstraintCheck/Checker/UniqueValueChecker.php
@@ -3,6 +3,7 @@
 namespace WikibaseQuality\ConstraintReport\ConstraintCheck\Checker;
 
 use WikibaseQuality\ConstraintReport\Constraint;
+use WikibaseQuality\ConstraintReport\ConstraintCheck\Cache\CachingMetadata;
 use WikibaseQuality\ConstraintReport\ConstraintCheck\ConstraintChecker;
 use WikibaseQuality\ConstraintReport\ConstraintCheck\Context\Context;
 use WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\SparqlHelper;
@@ -76,6 +77,7 @@
                                );
                        }
                        $otherEntities = $result->getArray();
+                       $cachingMetadata = $result->getCachingMetadata();
 
                        if ( $otherEntities === [] ) {
                                $status = CheckResult::STATUS_COMPLIANCE;
@@ -92,9 +94,11 @@
                        $message = wfMessage( 
"wbqc-violation-message-not-yet-implemented" )
                                         ->rawParams( 
$this->constraintParameterRenderer->formatItemId( 
$constraint->getConstraintTypeItemId(), Role::CONSTRAINT_TYPE_ITEM ) )
                                         ->escaped();
+                       $cachingMetadata = CachingMetadata::fresh();
                }
 
-               return new CheckResult( $context, $constraint, $parameters, 
$status, $message );
+               return ( new CheckResult( $context, $constraint, $parameters, 
$status, $message ) )
+                       ->setCachingMetadata( $cachingMetadata );
        }
 
        public function checkConstraintParameters( Constraint $constraint ) {
diff --git a/includes/ConstraintCheck/Checker/ValueTypeChecker.php 
b/includes/ConstraintCheck/Checker/ValueTypeChecker.php
index 144cc19..c59b800 100644
--- a/includes/ConstraintCheck/Checker/ValueTypeChecker.php
+++ b/includes/ConstraintCheck/Checker/ValueTypeChecker.php
@@ -159,7 +159,8 @@
                        $status = CheckResult::STATUS_VIOLATION;
                }
 
-               return new CheckResult( $context, $constraint, $parameters, 
$status, $message );
+               return ( new CheckResult( $context, $constraint, $parameters, 
$status, $message ) )
+                       ->setCachingMetadata( $result->getCachingMetadata() );
        }
 
        public function checkConstraintParameters( Constraint $constraint ) {
diff --git a/includes/ConstraintCheck/Result/CheckResult.php 
b/includes/ConstraintCheck/Result/CheckResult.php
index 04b993f..4a094c8 100644
--- a/includes/ConstraintCheck/Result/CheckResult.php
+++ b/includes/ConstraintCheck/Result/CheckResult.php
@@ -6,6 +6,7 @@
 use Wikibase\DataModel\Snak\PropertyValueSnak;
 use Wikibase\DataModel\Entity\EntityId;
 use WikibaseQuality\ConstraintReport\Constraint;
+use WikibaseQuality\ConstraintReport\ConstraintCheck\Cache\CachingMetadata;
 use WikibaseQuality\ConstraintReport\ConstraintCheck\Context\Context;
 use LogicException;
 
@@ -90,6 +91,11 @@
        private $message;
 
        /**
+        * @var CachingMetadata
+        */
+       private $cachingMetadata;
+
+       /**
         * @param Context $context
         * @param Constraint $constraint
         * @param array[] $parameters (string => string[]) parsed constraint 
parameters
@@ -109,6 +115,7 @@
                $this->parameters = $parameters;
                $this->status = $status;
                $this->message = $message;
+               $this->cachingMetadata = CachingMetadata::fresh();
        }
 
        /**
@@ -196,4 +203,20 @@
                return $this->message;
        }
 
+       /**
+        * @param CachingMetadata $cm
+        * @return self
+        */
+       public function setCachingMetadata( CachingMetadata $cm ) {
+               $this->cachingMetadata = $cm;
+               return $this;
+       }
+
+       /**
+        * @return CachingMetadata
+        */
+       public function getCachingMetadata() {
+               return $this->cachingMetadata;
+       }
+
 }
diff --git a/tests/phpunit/Result/CheckResultTest.php 
b/tests/phpunit/Result/CheckResultTest.php
index 9057d61..f8ef02b 100644
--- a/tests/phpunit/Result/CheckResultTest.php
+++ b/tests/phpunit/Result/CheckResultTest.php
@@ -11,6 +11,7 @@
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
 use DataValues\StringValue;
 use WikibaseQuality\ConstraintReport\Constraint;
+use WikibaseQuality\ConstraintReport\ConstraintCheck\Cache\CachingMetadata;
 use WikibaseQuality\ConstraintReport\ConstraintCheck\Result\CheckResult;
 use WikibaseQuality\ConstraintReport\Tests\Fake\FakeSnakContext;
 
@@ -33,8 +34,10 @@
                $status = CheckResult::STATUS_COMPLIANCE;
                $message = 'All right';
                $context = new FakeSnakContext( $snak, new Item( $entityId ) );
+               $cachingMetadata = CachingMetadata::ofMaximumAgeInSeconds( 42 );
 
                $checkResult = new CheckResult( $context, $constraint, 
$parameters, $status, $message );
+               $checkResult->setCachingMetadata( $cachingMetadata );
 
                $this->assertSame( $context, $checkResult->getContext() );
                $this->assertSame( $entityId, $checkResult->getEntityId() );
@@ -45,6 +48,7 @@
                $this->assertSame( $parameters, $checkResult->getParameters() );
                $this->assertSame( $status, $checkResult->getStatus() );
                $this->assertSame( $message, $checkResult->getMessage() );
+               $this->assertSame( $cachingMetadata, 
$checkResult->getCachingMetadata() );
        }
 
        public function testWithWrongSnakType() {

-- 
To view, visit https://gerrit.wikimedia.org/r/391281
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic0b2e362084f26ffc6400ab39adecd8530a9332b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to