diff --git a/src/rust/liblektor-rs/migrations/2022-09-30-204512_initial/up.sql b/src/rust/liblektor-rs/migrations/2022-09-30-204512_initial/up.sql index 8b01a905d5d1e85524b1431e19e598db98e7a987..005e63bf6fd6e74ce7e536a66dd941e27cde0693 100644 --- a/src/rust/liblektor-rs/migrations/2022-09-30-204512_initial/up.sql +++ b/src/rust/liblektor-rs/migrations/2022-09-30-204512_initial/up.sql @@ -23,7 +23,7 @@ CREATE TABLE kara , song_type TEXT NOT NULL , song_origin TEXT NOT NULL , source_name TEXT NOT NULL - , language TEXT NOT NULL REFERENCES ISO_639_1(code) + , language TEXT NOT NULL REFERENCES iso_639_1(code) , kara_hash TEXT NOT NULL -- TEXT ABOVE + HASH OF FILE IN FS ); @@ -58,7 +58,43 @@ CREATE TABLE history -- The list of ISO 639-1 languages with their associated codes. -- Should add an entry in the api to query available languages. -CREATE TABLE ISO_639_1 - ( code TEXT NOT NULL PRIMARY KEY - , name_en TEXT NOT NULL UNIQUE - ); \ No newline at end of file +CREATE TABLE iso_639_1 + ( code TEXT NOT NULL PRIMARY KEY + , name_en TEXT NOT NULL UNIQUE + , is_iso BOOLEAN NOT NULL DEFAULT false + , is_macro BOOLEAN NOT NULL DEFAULT false + ); + +-- As defined in ISO 639-1: +-- https://archive.wikiwix.com/cache/index2.php?url=http%3A%2F%2Fwww.sil.org%2Fiso639-3%2Fcodes.asp%3Forder%3D639_1%26letter%3D%2525#federation=archive.wikiwix.com&tab=url +INSERT OR REPLACE INTO iso_639_1 (is_macro, is_iso, code, name_en) VALUES + ( true, true, "ar", "Arabic" ), + ( false, true, "br", "Breton" ), + ( false, true, "ca", "Catalan" ), + ( false, true, "de", "German" ), + ( false, true, "el", "Greek" ), + ( false, true, "en", "English" ), + ( false, true, "eo", "Esperanto" ), + ( false, true, "es", "Spanish" ), + ( false, true, "eu", "Basque" ), + ( true, true, "fa", "Persian" ), + ( false, true, "fr", "French" ), + ( false, true, "he", "Hebrew" ), + ( true, true, "ie", "Interlingue" ), + ( false, true, "it", "Italian" ), + ( false, true, "ja", "Japanese" ), + ( false, true, "ko", "Korean" ), + ( false, true, "la", "Latin" ), + ( false, true, "nl", "Dutch" ), + ( false, true, "no", "Norwegian" ), + ( false, true, "oc", "Occitan" ), + ( false, true, "pl", "Polish" ), + ( false, true, "pt", "Portuguese" ), + ( false, true, "ru", "Russian" ), + ( false, true, "sv", "Swedish" ), + ( false, true, "vi", "Vietnamese" ), + ( false, true, "zh", "Chinese" ), + ( false, true, "zu", "Zulu" ), + -- ... + ( true, false, "fiction", "Fictional" ), + ( true, false, "autre", "Joker" ); diff --git a/src/rust/liblektor-rs/src/database/schema.rs b/src/rust/liblektor-rs/src/database/schema.rs index dc22363e565f1fd0ce40167ca87168b51bf9af85..78d438654b092080469df80b1d632119f5a9329b 100644 --- a/src/rust/liblektor-rs/src/database/schema.rs +++ b/src/rust/liblektor-rs/src/database/schema.rs @@ -1,16 +1,18 @@ // @generated automatically by Diesel CLI. diesel::table! { - ISO_639_1 (code) { - code -> Text, - name_en -> Text, + history (epoch) { + id -> Integer, + epoch -> Integer, } } diesel::table! { - history (epoch) { - id -> Integer, - epoch -> Integer, + iso_639_1 (code) { + code -> Text, + name_en -> Text, + is_iso -> Bool, + is_macro -> Bool, } } @@ -65,7 +67,7 @@ diesel::table! { } diesel::joinable!(history -> kara (id)); -diesel::joinable!(kara -> ISO_639_1 (language)); +diesel::joinable!(kara -> iso_639_1 (language)); diesel::joinable!(kara_makers -> kara (id)); diesel::joinable!(kara_tags -> kara (kara_id)); diesel::joinable!(kara_tags -> tag (tag_id)); @@ -73,8 +75,8 @@ diesel::joinable!(repo_kara -> kara (local_kara_id)); diesel::joinable!(repo_kara -> repo (repo_id)); diesel::allow_tables_to_appear_in_same_query!( - ISO_639_1, history, + iso_639_1, kara, kara_makers, kara_tags,