Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 81 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
SchemaHookHandler | |
0.00% |
0 / 81 |
|
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 1 |
onLoadExtensionSchemaUpdates | |
0.00% |
0 / 81 |
|
0.00% |
0 / 1 |
30 |
1 | <?php |
2 | |
3 | declare( strict_types=1 ); |
4 | |
5 | namespace MediaWiki\Extension\Translate; |
6 | |
7 | use DatabaseUpdater; |
8 | use MediaWiki\Extension\Translate\Diagnostics\SyncTranslatableBundleStatusMaintenanceScript; |
9 | use MediaWiki\Installer\Hook\LoadExtensionSchemaUpdatesHook; |
10 | |
11 | class SchemaHookHandler implements LoadExtensionSchemaUpdatesHook { |
12 | |
13 | /** @param DatabaseUpdater $updater */ |
14 | public function onLoadExtensionSchemaUpdates( $updater ) { |
15 | $dir = dirname( __DIR__, 1 ) . '/sql'; |
16 | $dbType = $updater->getDB()->getType(); |
17 | |
18 | if ( $dbType === 'mysql' || $dbType === 'sqlite' ) { |
19 | $updater->addExtensionTable( |
20 | 'translate_sections', |
21 | "{$dir}/{$dbType}/translate_sections.sql" |
22 | ); |
23 | $updater->addExtensionTable( |
24 | 'revtag', |
25 | "{$dir}/{$dbType}/revtag.sql" |
26 | ); |
27 | $updater->addExtensionTable( |
28 | 'translate_groupstats', |
29 | "{$dir}/{$dbType}/translate_groupstats.sql" |
30 | ); |
31 | $updater->addExtensionTable( |
32 | 'translate_reviews', |
33 | "{$dir}/{$dbType}/translate_reviews.sql" |
34 | ); |
35 | $updater->addExtensionTable( |
36 | 'translate_groupreviews', |
37 | "{$dir}/{$dbType}/translate_groupreviews.sql" |
38 | ); |
39 | $updater->addExtensionTable( |
40 | 'translate_tms', |
41 | "{$dir}/{$dbType}/translate_tm.sql" |
42 | ); |
43 | $updater->addExtensionTable( |
44 | 'translate_metadata', |
45 | "{$dir}/{$dbType}/translate_metadata.sql" |
46 | ); |
47 | $updater->addExtensionTable( |
48 | 'translate_messageindex', |
49 | "{$dir}/{$dbType}/translate_messageindex.sql" |
50 | ); |
51 | $updater->addExtensionTable( |
52 | 'translate_stash', |
53 | "{$dir}/{$dbType}/translate_stash.sql" |
54 | ); |
55 | $updater->addExtensionTable( |
56 | 'translate_translatable_bundles', |
57 | "{$dir}/{$dbType}/translate_translatable_bundles.sql" |
58 | ); |
59 | $updater->addExtensionTable( |
60 | 'translate_message_group_subscriptions', |
61 | "{$dir}/{$dbType}/translate_message_group_subscriptions.sql" |
62 | ); |
63 | |
64 | $updater->addExtensionTable( |
65 | 'translate_cache', |
66 | "{$dir}/{$dbType}/translate_cache.sql" |
67 | ); |
68 | |
69 | if ( $dbType === 'mysql' ) { |
70 | // 1.38 |
71 | $updater->modifyExtensionField( |
72 | 'translate_cache', |
73 | 'tc_key', |
74 | "{$dir}/{$dbType}/translate_cache-alter-varbinary.sql" |
75 | ); |
76 | } |
77 | } elseif ( $dbType === 'postgres' ) { |
78 | $updater->addExtensionTable( |
79 | 'translate_sections', |
80 | "{$dir}/{$dbType}/tables-generated.sql" |
81 | ); |
82 | $updater->addExtensionUpdate( [ |
83 | 'changeField', 'translate_cache', 'tc_exptime', 'TIMESTAMPTZ', 'th_timestamp::timestamp with time zone' |
84 | ] ); |
85 | } |
86 | |
87 | // 1.39 |
88 | $updater->dropExtensionIndex( |
89 | 'translate_messageindex', |
90 | 'tmi_key', |
91 | "{$dir}/{$dbType}/patch-translate_messageindex-unique-to-pk.sql" |
92 | ); |
93 | $updater->dropExtensionIndex( |
94 | 'translate_tmt', |
95 | 'tms_sid_lang', |
96 | "{$dir}/{$dbType}/patch-translate_tmt-unique-to-pk.sql" |
97 | ); |
98 | $updater->dropExtensionIndex( |
99 | 'revtag', |
100 | 'rt_type_page_revision', |
101 | "{$dir}/{$dbType}/patch-revtag-unique-to-pk.sql" |
102 | ); |
103 | |
104 | $updater->addPostDatabaseUpdateMaintenance( SyncTranslatableBundleStatusMaintenanceScript::class ); |
105 | } |
106 | } |