Addshore has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/335068 )

Change subject: Simplify row construction in CognateStore
......................................................................

Simplify row construction in CognateStore

Change-Id: Ic4521a4468386e1456ee68c5ba857a881df6caf8
---
M src/CognateStore.php
1 file changed, 43 insertions(+), 31 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Cognate 
refs/changes/68/335068/1

diff --git a/src/CognateStore.php b/src/CognateStore.php
index 9bff1e9..2ff6f12 100644
--- a/src/CognateStore.php
+++ b/src/CognateStore.php
@@ -3,6 +3,7 @@
 namespace Cognate;
 
 use MediaWiki\Linker\LinkTarget;
+use TitleValue;
 use Wikimedia\Rdbms\ConnectionManager;
 
 /**
@@ -58,32 +59,26 @@
        public function insertPage( $dbName, LinkTarget $linkTarget ) {
                $dbw = $this->connectionManager->getWriteConnectionRef();
 
-               $dbKey = $linkTarget->getDBkey();
-               $namespace = $linkTarget->getNamespace();
-
-               $titleHash = $this->getStringHash( $dbKey );
-               $normalizedTitleHash = $this->getNormalizedStringHash( $dbKey );
-               $siteHash = $this->getStringHash( $dbName );
+               list( $pagesToInsert, $titlesToInsert ) = $this->buildRows(
+                       $linkTarget,
+                       $dbName
+               );
 
                $row = $dbw->selectRow(
                        self::TITLES_TABLE_NAME,
                        [ 'cgti_raw' ],
-                       [ 'cgti_raw_key' => $titleHash ],
+                       [ 'cgti_raw_key' => $this->getStringHash( 
$linkTarget->getDBkey() ) ],
                        __METHOD__
                );
 
-               if ( $row && $row->cgti_raw !== $dbKey ) {
+               if ( $row && $row->cgti_raw !== $linkTarget->getDBkey() ) {
                        return false;
                }
 
                if ( !$row ) {
                        $dbw->insert(
                                self::TITLES_TABLE_NAME,
-                               [
-                                       'cgti_raw' => $dbKey,
-                                       'cgti_raw_key' => $titleHash,
-                                       'cgti_normalized_key' => 
$normalizedTitleHash,
-                               ],
+                               $titlesToInsert,
                                __METHOD__,
                                [ 'IGNORE' ]
                        );
@@ -91,11 +86,7 @@
 
                $dbw->insert(
                        self::PAGES_TABLE_NAME,
-                       [
-                               'cgpa_site' => $siteHash,
-                               'cgpa_namespace' => $namespace,
-                               'cgpa_title' => $titleHash,
-                       ],
+                       $pagesToInsert,
                        __METHOD__,
                        [ 'IGNORE' ]
                );
@@ -212,19 +203,12 @@
                $pagesToInsert = [];
                $titlesToInsert = [];
                foreach ( $pageDetailsArray as $pageDetails ) {
-                       $titleHash = $this->getStringHash( 
$pageDetails['title'] );
-                       $normalizedTitleHash = $this->getNormalizedStringHash( 
$pageDetails['title'] );
-                       $siteHash = $this->getStringHash( $pageDetails['site'] 
);
-                       $pagesToInsert[] = [
-                               'cgpa_site' => $siteHash,
-                               'cgpa_namespace' => $pageDetails['namespace'],
-                               'cgpa_title' => $titleHash,
-                       ];
-                       $titlesToInsert[] = [
-                               'cgti_raw' => $pageDetails['title'],
-                               'cgti_raw_key' => $titleHash,
-                               'cgti_normalized_key' => $normalizedTitleHash,
-                       ];
+                       $this->buildRows(
+                               new TitleValue( $pageDetails['namespace'], 
$pageDetails['title'] ),
+                               $pageDetails['site'],
+                               $pagesToInsert,
+                               $titlesToInsert
+                       );
                }
 
                $dbw->insert(
@@ -243,6 +227,34 @@
        }
 
        /**
+        * @param LinkTarget $linkTarget
+        * @param string $site
+        * @param array[] $pagesToInsert
+        * @param array[] $titlesToInsert
+        *
+        * @return array 0 => $pagesToInsert, 1 => $titleToInsert
+        */
+       private function buildRows(
+               LinkTarget $linkTarget,
+               $site,
+               array &$pagesToInsert = [],
+               array &$titlesToInsert = []
+       ) {
+               $pagesToInsert[] = [
+                       'cgpa_site' => $this->getStringHash( $site ),
+                       'cgpa_namespace' => $linkTarget->getNamespace(),
+                       'cgpa_title' => $this->getStringHash( 
$linkTarget->getDBkey() ),
+               ];
+               $titlesToInsert[] = [
+                       'cgti_raw' => $linkTarget->getDBkey(),
+                       'cgti_raw_key' => $this->getStringHash( 
$linkTarget->getDBkey() ),
+                       'cgti_normalized_key' => 
$this->getNormalizedStringHash( $linkTarget->getDBkey() ),
+               ];
+
+               return array( $pagesToInsert, $titlesToInsert );
+       }
+
+       /**
         * @param string[] $sites keys of site dbname => values of interwiki 
prefix
         *        e.g. 'enwiktionary' => 'en'
         */

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic4521a4468386e1456ee68c5ba857a881df6caf8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Cognate
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>

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

Reply via email to