jenkins-bot has submitted this change and it was merged.

Change subject: Submit updates via the job queue for PageAssessments
......................................................................


Submit updates via the job queue for PageAssessments

Bug:T121069
Change-Id: I51444fa543a75446bed3d950e166321736749c1d
---
M PageAssessmentsBody.php
A PageAssessmentsSaveJob.php
M extension.json
3 files changed, 79 insertions(+), 9 deletions(-)

Approvals:
  Kaldari: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/PageAssessmentsBody.php b/PageAssessmentsBody.php
index 2843d2c..0b53332 100644
--- a/PageAssessmentsBody.php
+++ b/PageAssessmentsBody.php
@@ -41,6 +41,7 @@
                $toInsert = array_diff( $projects, $projectsInDb );
                $toDelete = array_diff( $projectsInDb, $projects );
                $toUpdate = array_intersect( $projects, $projectsInDb );
+               $jobs = array();
 
                foreach ( $assessmentData as $parserData ) {
                        $project = $parserData[0];
@@ -56,14 +57,23 @@
                                'pa_page_revision' => $revisionId
                        );
                        if ( in_array( $project, $toInsert ) ) {
-                               PageAssessmentsBody::insertRecord( $values );
+                               $values['job_type'] = 'insert';
                        } elseif ( in_array( $project, $toUpdate ) ) {
-                               PageAssessmentsBody::updateRecord( $values );
+                               $values['job_type'] = 'update';
                        }
+                       $jobs[] = new PageAssessmentsSaveJob( $titleObj, 
$values );
                }
+               // Add deletion jobs to job array
                foreach ( $toDelete as $project ) {
-                       PageAssessmentsBody::deleteRecord( $pageTitle, $project 
);
+                       $values = array(
+                               'pa_page_name' => $pageTitle,
+                               'pa_project' => $project,
+                               'job_type' => 'delete'
+                       );
+                       $jobs[] = new PageAssessmentsSaveJob( $titleObj, 
$values );
                }
+
+               JobQueueGroup::singleton()->push( $jobs );
                return;
        }
 
@@ -121,15 +131,14 @@
 
        /**
         * Delete a record from DB
-        * @param string $title Page title
-        * @param string $project Project
+        * @param array $values Conditions for looking up records to delete
         * @return bool True/False on query success/fail
         */
-       public static function deleteRecord ( $title, $project ) {
+       public static function deleteRecord ( $values ) {
                $dbw = wfGetDB( DB_MASTER );
                $conds = array(
-                       'pa_page_name' => $title,
-                       'pa_project' => $project
+                       'pa_page_name' => $values['pa_page_name'],
+                       'pa_project' => $values['pa_project']
                );
                $dbw->delete( 'page_assessments', $conds, __METHOD__ );
                return true;
diff --git a/PageAssessmentsSaveJob.php b/PageAssessmentsSaveJob.php
new file mode 100644
index 0000000..b11054d
--- /dev/null
+++ b/PageAssessmentsSaveJob.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Database writes for the PageAssessments extension using the job queue
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+class PageAssessmentsSaveJob extends Job {
+
+       public function __construct ( $title, $params ) {
+               parent::__construct( 'AssessmentSaveJob', $title, $params );
+       }
+
+       /**
+        * Execute the job
+        *
+        * @return bool
+        */
+       public function run () {
+               $jobType = $this->params['job_type'];
+               // Perform updates
+               if ( $jobType == 'insert' ) {
+                       // Compile the array to be inserted to the DB
+                       $values = array(
+                               'pa_page_id' => $this->params['pa_page_id'],
+                               'pa_page_name' => $this->params['pa_page_name'],
+                               'pa_page_namespace' => 
$this->params['pa_page_namespace'],
+                               'pa_project' => $this->params['pa_project'],
+                               'pa_class' => $this->params['pa_class'],
+                               'pa_importance' => 
$this->params['pa_importance'],
+                               'pa_page_revision' => 
$this->params['pa_page_revision']
+                       );
+                       PageAssessmentsBody::insertRecord( $values );
+               } elseif ( $jobType == 'update' ) {
+                       // Compile the array to be inserted to the DB
+                       $values = array(
+                               'pa_page_id' => $this->params['pa_page_id'],
+                               'pa_page_name' => $this->params['pa_page_name'],
+                               'pa_page_namespace' => 
$this->params['pa_page_namespace'],
+                               'pa_project' => $this->params['pa_project'],
+                               'pa_class' => $this->params['pa_class'],
+                               'pa_importance' => 
$this->params['pa_importance'],
+                               'pa_page_revision' => 
$this->params['pa_page_revision']
+                       );
+                       PageAssessmentsBody::updateRecord( $values );
+               } elseif ( $jobType == 'delete' ) {
+                       $values = array(
+                               'pa_page_name' => $this->params['pa_page_name'],
+                               'pa_project' => $this->params['pa_project']
+                       );
+                       PageAssessmentsBody::deleteRecord( $values );
+               }
+               return true;
+       }
+
+}
diff --git a/extension.json b/extension.json
index 82e1927..0799e78 100644
--- a/extension.json
+++ b/extension.json
@@ -10,7 +10,8 @@
        "type": "parserhook",
        "AutoloadClasses": {
                "PageAssessmentsHooks": "PageAssessments.hooks.php",
-               "PageAssessmentsBody": "PageAssessmentsBody.php"
+               "PageAssessmentsBody": "PageAssessmentsBody.php",
+               "PageAssessmentsSaveJob": "PageAssessmentsSaveJob.php"
        },
        "ExtensionMessagesFiles": {
                "PageAssessmentsMagic": "PageAssessments.i18n.magic.php"
@@ -31,6 +32,9 @@
                        "i18n"
                ]
        },
+       "JobClasses": {
+               "AssessmentSaveJob": "PageAssessmentsSaveJob"
+       },
        "ResourceFileModulePaths": {
                "localBasePath": "",
                "remoteExtPath": "examples/PageAssessments"

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I51444fa543a75446bed3d950e166321736749c1d
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/PageAssessments
Gerrit-Branch: master
Gerrit-Owner: Niharika29 <[email protected]>
Gerrit-Reviewer: Kaldari <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to