From 90d57179280450082a8ac021ffd95ced90e55346 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Fri, 16 May 2025 18:43:58 +0200 Subject: [PATCH] migrations: move JMdict views to 0009_views --- migrations/0001_JMDict.sql | 55 ------------------------------------- migrations/0009_Views.sql | 56 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 55 deletions(-) diff --git a/migrations/0001_JMDict.sql b/migrations/0001_JMDict.sql index 491614e..2c12fed 100644 --- a/migrations/0001_JMDict.sql +++ b/migrations/0001_JMDict.sql @@ -240,58 +240,3 @@ CREATE TABLE "JMdict_ExampleSentence" ( "japanese" TEXT NOT NULL -- "type" TEXT NOT NULL DEFAULT "tat", ); - ---- - -CREATE VIEW "JMdict_EntryByKana"("kana", "entryId") -AS -SELECT - "JMdict_ReadingElement"."reading" AS "kana", - "JMdict_ReadingElement"."entryId" AS "entryId" -FROM "JMdict_ReadingElement"; - - -CREATE VIEW "JMdict_EntryByEnglish"("english", "entryId") -AS -SELECT - "JMdict_SenseGlossary"."phrase" AS "english", - "JMdict_Sense"."senseId" AS "entryId" -FROM "JMdict_SenseGlossary" JOIN "JMdict_Sense" USING("senseId"); - -CREATE VIEW "JMdict_BaseAndFurigana"("entryId", "base", "furigana", "kanjiOrderNum", "readingOrderNum") -AS -SELECT - "JMdict_Entry"."entryId" AS "entryId", - CASE WHEN ( - "JMdict_KanjiElement"."reading" IS NOT NULL - AND NOT "JMdict_ReadingElement"."readingDoesNotMatchKanji" - ) - THEN "JMdict_KanjiElement"."reading" - ELSE "JMdict_ReadingElement"."reading" - END AS "base", - CASE WHEN ( - "JMdict_KanjiElement"."reading" IS NOT NULL - AND NOT "JMdict_ReadingElement"."readingDoesNotMatchKanji" - ) - THEN "JMdict_ReadingElement"."reading" - ELSE NULL - END AS "furigana", - "JMdict_KanjiElement"."orderNum" AS "kanjiOrderNum", - "JMdict_ReadingElement"."orderNum" AS "readingOrderNum" -FROM "JMdict_Entry" -LEFT JOIN "JMdict_KanjiElement" USING("entryId") -LEFT JOIN "JMdict_ReadingElement" USING("entryId"); - -CREATE VIEW "JMdict_EntryCommon"("entryId") -AS -SELECT DISTINCT "entryId" -FROM "JMdict_KanjiElement" -FULL OUTER JOIN "JMdict_ReadingElement" USING("entryId") -WHERE "JMdict_ReadingElement"."news" = 1 - OR "JMdict_ReadingElement"."ichi" = 1 - OR "JMdict_ReadingElement"."spec" = 1 - OR "JMdict_ReadingElement"."gai" = 1 - OR "JMdict_KanjiElement"."news" = 1 - OR "JMdict_KanjiElement"."ichi" = 1 - OR "JMdict_KanjiElement"."spec" = 1 - OR "JMdict_KanjiElement"."gai" = 1; diff --git a/migrations/0009_Views.sql b/migrations/0009_Views.sql index 0b568c2..0562958 100644 --- a/migrations/0009_Views.sql +++ b/migrations/0009_Views.sql @@ -1,3 +1,59 @@ +CREATE VIEW "JMdict_EntryByKana"("kana", "entryId") +AS +SELECT + "JMdict_ReadingElement"."reading" AS "kana", + "JMdict_ReadingElement"."entryId" AS "entryId" +FROM "JMdict_ReadingElement"; + + +CREATE VIEW "JMdict_EntryByEnglish"("english", "entryId") +AS +SELECT + "JMdict_SenseGlossary"."phrase" AS "english", + "JMdict_Sense"."senseId" AS "entryId" +FROM "JMdict_SenseGlossary" JOIN "JMdict_Sense" USING("senseId"); + + +CREATE VIEW "JMdict_BaseAndFurigana"("entryId", "base", "furigana", "kanjiOrderNum", "readingOrderNum") +AS +SELECT + "JMdict_Entry"."entryId" AS "entryId", + CASE WHEN ( + "JMdict_KanjiElement"."reading" IS NOT NULL + AND NOT "JMdict_ReadingElement"."readingDoesNotMatchKanji" + ) + THEN "JMdict_KanjiElement"."reading" + ELSE "JMdict_ReadingElement"."reading" + END AS "base", + CASE WHEN ( + "JMdict_KanjiElement"."reading" IS NOT NULL + AND NOT "JMdict_ReadingElement"."readingDoesNotMatchKanji" + ) + THEN "JMdict_ReadingElement"."reading" + ELSE NULL + END AS "furigana", + "JMdict_KanjiElement"."orderNum" AS "kanjiOrderNum", + "JMdict_ReadingElement"."orderNum" AS "readingOrderNum" +FROM "JMdict_Entry" +LEFT JOIN "JMdict_KanjiElement" USING("entryId") +LEFT JOIN "JMdict_ReadingElement" USING("entryId"); + + +CREATE VIEW "JMdict_EntryCommon"("entryId") +AS +SELECT DISTINCT "entryId" +FROM "JMdict_KanjiElement" +FULL OUTER JOIN "JMdict_ReadingElement" USING("entryId") +WHERE "JMdict_ReadingElement"."news" = 1 + OR "JMdict_ReadingElement"."ichi" = 1 + OR "JMdict_ReadingElement"."spec" = 1 + OR "JMdict_ReadingElement"."gai" = 1 + OR "JMdict_KanjiElement"."news" = 1 + OR "JMdict_KanjiElement"."ichi" = 1 + OR "JMdict_KanjiElement"."spec" = 1 + OR "JMdict_KanjiElement"."gai" = 1; + + -- TODO: Make it possible to match words that contain the -- kanji as an infix