summaryrefslogtreecommitdiff
path: root/util/sql
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2010-02-02 18:33:51 +0100
committerYorhel <git@yorhel.nl>2010-02-02 18:33:51 +0100
commit1c0c4477f76dee105274aab7efe58b4381533b80 (patch)
tree39becf82b0c38ace8012697c1c7021350c56f437 /util/sql
parent3dc88eb0b242a1e26f7e6884d20fa63d30f5aab3 (diff)
SQL: Converted language columns to an ENUM type
And changed vn.c_languages to an array type while I was at it. This required some changes in the Perl code, and I found a bug in DBD::Pg while I was at it: https://rt.cpan.org/Ticket/Display.html?id=54224 Luckily, there's an easy workaround for that.
Diffstat (limited to 'util/sql')
-rw-r--r--util/sql/all.sql1
-rw-r--r--util/sql/func.sql4
-rw-r--r--util/sql/schema.sql6
3 files changed, 6 insertions, 5 deletions
diff --git a/util/sql/all.sql b/util/sql/all.sql
index e4f66d91..c012eba2 100644
--- a/util/sql/all.sql
+++ b/util/sql/all.sql
@@ -9,6 +9,7 @@ CREATE LANGUAGE plpgsql;
CREATE TYPE anime_type AS ENUM ('tv', 'ova', 'mov', 'oth', 'web', 'spe', 'mv');
CREATE TYPE dbentry_type AS ENUM ('v', 'r', 'p');
CREATE TYPE edit_rettype AS (iid integer, cid integer, rev integer);
+CREATE TYPE language AS ENUM('cs', 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'ru', 'sk', 'sv', 'tr', 'vi', 'zh');
CREATE TYPE medium AS ENUM ('cd', 'dvd', 'gdr', 'blr', 'flp', 'mrt', 'mem', 'umd', 'nod', 'in', 'otc');
CREATE TYPE notification_ntype AS ENUM ('pm');
CREATE TYPE notification_ltype AS ENUM ('t');
diff --git a/util/sql/func.sql b/util/sql/func.sql
index a0fe2c2f..2c5c12b2 100644
--- a/util/sql/func.sql
+++ b/util/sql/func.sql
@@ -26,7 +26,7 @@ CREATE OR REPLACE FUNCTION update_vncache(integer) RETURNS void AS $$
AND rr1.released <> 0
GROUP BY rv1.vid
), 0),
- c_languages = COALESCE(ARRAY_TO_STRING(ARRAY(
+ c_languages = ARRAY(
SELECT rl2.lang
FROM releases_rev rr2
JOIN releases_lang rl2 ON rl2.rid = rr2.id
@@ -38,7 +38,7 @@ CREATE OR REPLACE FUNCTION update_vncache(integer) RETURNS void AS $$
AND r2.hidden = FALSE
GROUP BY rl2.lang
ORDER BY rl2.lang
- ), '/'), ''),
+ ),
c_platforms = COALESCE(ARRAY_TO_STRING(ARRAY(
SELECT rp3.platform
FROM releases_platforms rp3
diff --git a/util/sql/schema.sql b/util/sql/schema.sql
index c496e01d..d5766073 100644
--- a/util/sql/schema.sql
+++ b/util/sql/schema.sql
@@ -64,7 +64,7 @@ CREATE TABLE producers_rev (
name varchar(200) NOT NULL DEFAULT '',
original varchar(200) NOT NULL DEFAULT '',
website varchar(250) NOT NULL DEFAULT '',
- lang varchar NOT NULL DEFAULT 'ja',
+ lang language NOT NULL DEFAULT 'ja',
"desc" text NOT NULL DEFAULT '',
alias varchar(500) NOT NULL DEFAULT '',
l_wp varchar(150)
@@ -88,7 +88,7 @@ CREATE TABLE releases (
-- releases_lang
CREATE TABLE releases_lang (
rid integer NOT NULL,
- lang varchar NOT NULL,
+ lang language NOT NULL,
PRIMARY KEY(rid, lang)
);
@@ -286,7 +286,7 @@ CREATE TABLE vn (
hidden boolean NOT NULL DEFAULT FALSE,
rgraph integer,
c_released integer NOT NULL DEFAULT 0,
- c_languages varchar(32) NOT NULL DEFAULT '',
+ c_languages language[] NOT NULL DEFAULT '{}',
c_platforms varchar(32) NOT NULL DEFAULT '',
c_popularity real,
c_rating real,