wiki.techinc.nl/maintenance/sqlite/archives/patch-sites.sql
jeroendedauw 7389d7c690 Added sites functionality, a much more generic and flexible version of the existing interwiki code
This code is meant to replace the current interwiki code, but does not do so just yet. It is however used by the Wikibase extension. This allows us to try out some more things and have the code stabilize more before we migrate over existing interwiki functionality.

Change-Id: I23c47c2c3909a1500350fb560a5f2ec654e2c37e
2012-10-12 17:47:44 +02:00

71 lines
No EOL
2.9 KiB
SQL

-- Patch to add the sites and site_identifiers tables.
-- Licence: GNU GPL v2+
-- Author: Jeroen De Dauw < jeroendedauw@gmail.com >
-- Holds all the sites known to the wiki.
CREATE TABLE IF NOT EXISTS /*_*/sites (
-- Numeric id of the site
site_id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- Global identifier for the site, ie 'enwiktionary'
site_global_key varbinary(32) NOT NULL,
-- Type of the site, ie 'mediawiki'
site_type varbinary(32) NOT NULL,
-- Group of the site, ie 'wikipedia'
site_group varbinary(32) NOT NULL,
-- Source of the site data, ie 'local', 'wikidata', 'my-magical-repo'
site_source varbinary(32) NOT NULL,
-- Language code of the sites primary language.
site_language varbinary(32) NOT NULL,
-- Protocol of the site, ie 'http://', 'irc://', '//'
-- This field is an index for lookups and is build from type specific data in site_data.
site_protocol varbinary(32) NOT NULL,
-- Domain of the site in reverse order, ie 'org.mediawiki.www.'
-- This field is an index for lookups and is build from type specific data in site_data.
site_domain VARCHAR(255) NOT NULL,
-- Type dependent site data.
site_data BLOB NOT NULL,
-- If site.tld/path/key:pageTitle should forward users to the page on
-- the actual site, where "key" is the local identifier.
site_forward bool NOT NULL,
-- Type dependent site config.
-- For instance if template transclusion should be allowed if it's a MediaWiki.
site_config BLOB NOT NULL
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/sites_global_key ON /*_*/sites (site_global_key);
CREATE INDEX /*i*/sites_type ON /*_*/sites (site_type);
CREATE INDEX /*i*/sites_group ON /*_*/sites (site_group);
CREATE INDEX /*i*/sites_source ON /*_*/sites (site_source);
CREATE INDEX /*i*/sites_language ON /*_*/sites (site_language);
CREATE INDEX /*i*/sites_protocol ON /*_*/sites (site_protocol);
CREATE INDEX /*i*/sites_domain ON /*_*/sites (site_domain);
CREATE INDEX /*i*/sites_forward ON /*_*/sites (site_forward);
-- Links local site identifiers to their corresponding site.
CREATE TABLE IF NOT EXISTS /*_*/site_identifiers (
-- Key on site.site_id
si_site INT UNSIGNED NOT NULL,
-- local key type, ie 'interwiki' or 'langlink'
si_type varbinary(32) NOT NULL,
-- local key value, ie 'en' or 'wiktionary'
si_key varbinary(32) NOT NULL
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/site_ids_type ON /*_*/site_identifiers (si_type, si_key);
CREATE INDEX /*i*/site_ids_site ON /*_*/site_identifiers (si_site);
CREATE INDEX /*i*/site_ids_key ON /*_*/site_identifiers (si_key);