Skip to content

Commit 43f6c3e

Browse files
jenkins-botGerrit Code Review
authored andcommitted
Merge "EntitySourceDefinitions: use false as DB name if pointing to current wiki"
2 parents dfdda1c + 05da3ea commit 43f6c3e

File tree

4 files changed

+39
-6
lines changed

4 files changed

+39
-6
lines changed

client/WikibaseClient.ServiceWiring.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use MediaWiki\Site\Site;
1414
use MediaWiki\StubObject\StubObject;
1515
use MediaWiki\User\ExternalUserNames;
16+
use MediaWiki\WikiMap\WikiMap;
1617
use Psr\Log\LoggerInterface;
1718
use Serializers\DispatchingSerializer;
1819
use Serializers\Serializer;
@@ -446,7 +447,7 @@ function ( EntityNamespaceLookup $nsLookup, DatabaseEntitySource $source ): Enti
446447
$subEntityTypesMapper = new SubEntityTypesMapper( WikibaseClient::getEntityTypeDefinitions( $services )
447448
->get( EntityTypeDefinitions::SUB_ENTITY_TYPES ) );
448449

449-
$configParser = new EntitySourceDefinitionsConfigParser();
450+
$configParser = new EntitySourceDefinitionsConfigParser( WikiMap::getCurrentWikiId() );
450451

451452
return $configParser->newDefinitionsFromConfigArray( $settings->getSetting( 'entitySources' ), $subEntityTypesMapper );
452453
},

data-access/src/EntitySourceDefinitionsConfigParser.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
*/
1616
class EntitySourceDefinitionsConfigParser {
1717

18+
public function __construct( private string $mediawikiCurrentWikiId ) {
19+
}
20+
1821
/**
1922
* @param array[] $sourceConfig
2023
* @param SubEntityTypesMapper $subEntityTypesMapper
@@ -37,9 +40,14 @@ public function newDefinitionsFromConfigArray( array $sourceConfig, SubEntityTyp
3740
];
3841

3942
}
43+
$repoDatabase = $sourceData['repoDatabase'];
44+
if ( $repoDatabase === $this->mediawikiCurrentWikiId ) {
45+
$repoDatabase = false;
46+
}
47+
4048
$sources[] = new DatabaseEntitySource(
4149
$sourceName,
42-
$sourceData['repoDatabase'],
50+
$repoDatabase,
4351
$namespaceSlotData,
4452
$sourceData['baseUri'],
4553
$sourceData['rdfNodeNamespacePrefix'],

data-access/tests/phpunit/EntitySourceDefinitionsConfigParserTest.php

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public function testGivenSingleSourceConfig_newDefinitionsFromConfigArrayParsesS
3030
],
3131
];
3232

33-
$parser = new EntitySourceDefinitionsConfigParser();
33+
$parser = new EntitySourceDefinitionsConfigParser( $paramIrrelevantForTest = 'mywikidb' );
3434

3535
$sourceDefinitions = $parser->newDefinitionsFromConfigArray( $config, new SubEntityTypesMapper( [] ) );
3636

@@ -74,7 +74,7 @@ public function testGivenMultipleSourceConfig_newDefinitionsFromConfigArrayParse
7474
],
7575
];
7676

77-
$parser = new EntitySourceDefinitionsConfigParser();
77+
$parser = new EntitySourceDefinitionsConfigParser( $paramIrrelevantForTest = 'mywikidb' );
7878

7979
$sourceDefinitions = $parser->newDefinitionsFromConfigArray( $config, new SubEntityTypesMapper( [] ) );
8080

@@ -103,11 +103,34 @@ public function testGivenMultipleSourceConfig_newDefinitionsFromConfigArrayParse
103103
$this->assertInstanceOf( ApiEntitySource::class, $sources[2] );
104104
}
105105

106+
public function testGivenLocalDatabaseName_getDatabaseNameOfSourceReturnsFalse() {
107+
$localDatabaseName = 'local';
108+
109+
$config = [
110+
'local' => [
111+
'entityNamespaces' => [ 'item' => 100, 'property' => 200 ],
112+
'repoDatabase' => $localDatabaseName,
113+
'baseUri' => 'http://example.com/entity/',
114+
'rdfNodeNamespacePrefix' => 'wd',
115+
'rdfPredicateNamespacePrefix' => '',
116+
'interwikiPrefix' => 'localwiki',
117+
],
118+
];
119+
120+
$parser = new EntitySourceDefinitionsConfigParser( $localDatabaseName );
121+
122+
$sourceDefinitions = $parser->newDefinitionsFromConfigArray( $config, new SubEntityTypesMapper( [] ) );
123+
124+
$sources = $sourceDefinitions->getSources();
125+
126+
$this->assertFalse( $sources[0]->getDatabaseName() );
127+
}
128+
106129
/**
107130
* @dataProvider provideInvalidConfig
108131
*/
109132
public function testGivenInvalidConfig_throwsException( $config ) {
110-
$parser = new EntitySourceDefinitionsConfigParser();
133+
$parser = new EntitySourceDefinitionsConfigParser( $paramIrrelevantForTest = 'mywikidb' );
111134

112135
$this->expectException( \InvalidArgumentException::class );
113136

repo/WikibaseRepo.ServiceWiring.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use MediaWiki\Registration\ExtensionRegistry;
1818
use MediaWiki\Site\MediaWikiPageNameNormalizer;
1919
use MediaWiki\SpecialPage\SpecialPage;
20+
use MediaWiki\WikiMap\WikiMap;
2021
use Psr\Log\LoggerInterface;
2122
use Serializers\DispatchingSerializer;
2223
use Serializers\Serializer;
@@ -1031,7 +1032,7 @@ function ( EntityNamespaceLookup $nsLookup, DatabaseEntitySource $source ): Enti
10311032
$settings = WikibaseRepo::getSettings( $services );
10321033
$subEntityTypesMapper = WikibaseRepo::getSubEntityTypesMapper( $services );
10331034

1034-
$configParser = new EntitySourceDefinitionsConfigParser();
1035+
$configParser = new EntitySourceDefinitionsConfigParser( WikiMap::getCurrentWikiId() );
10351036

10361037
$entitySourceDefinitions = $configParser->newDefinitionsFromConfigArray(
10371038
$settings->getSetting( 'entitySources' ),

0 commit comments

Comments
 (0)