diff --git a/migrations/0003_JMDict_FTS5_Ttables.sql b/migrations/0003_JMDict_FTS5_Ttables.sql new file mode 100644 index 0000000..33adf3c --- /dev/null +++ b/migrations/0003_JMDict_FTS5_Ttables.sql @@ -0,0 +1,55 @@ +CREATE VIRTUAL TABLE "JMdict_KanjiElementFTS" USING FTS5("entryId" UNINDEXED, "reading"); + +CREATE TRIGGER "JMdict_KanjiElement_InsertFTS" +AFTER INSERT ON "JMdict_KanjiElement" +BEGIN + INSERT INTO "JMdict_KanjiElementFTS"("entryId", "reading") + VALUES (NEW."entryId", NEW."reading"); +END; + +CREATE TRIGGER "JMdict_KanjiElement_UpdateFTS" +AFTER UPDATE OF "entryId", "reading" +ON "JMdict_KanjiElement" +BEGIN + UPDATE "JMdict_KanjiElementFTS" + SET + "entryId" = NEW."entryId", + "reading" = NEW."reading" + WHERE "entryId" = OLD."entryId"; +END; + +CREATE TRIGGER "JMdict_KanjiElement_DeleteFTS" +AFTER DELETE ON "JMdict_KanjiElement" +BEGIN + DELETE FROM "JMdict_KanjiElementFTS" + WHERE "entryId" = OLD."entryId"; +END; + + + +CREATE VIRTUAL TABLE "JMdict_ReadingElementFTS" USING FTS5("entryId" UNINDEXED, "reading"); + +CREATE TRIGGER "JMdict_ReadingElement_InsertFTS" +AFTER INSERT ON "JMdict_ReadingElement" +BEGIN + INSERT INTO "JMdict_ReadingElementFTS"("entryId", "reading") + VALUES (NEW."entryId", NEW."reading"); +END; + +CREATE TRIGGER "JMdict_ReadingElement_UpdateFTS" +AFTER UPDATE OF "entryId", "reading" +ON "JMdict_ReadingElement" +BEGIN + UPDATE "JMdict_ReadingElementFTS" + SET + "entryId" = NEW."entryId", + "reading" = NEW."reading" + WHERE "entryId" = OLD."entryId"; +END; + +CREATE TRIGGER "JMdict_ReadingElement_DeleteFTS" +AFTER DELETE ON "JMdict_ReadingElement" +BEGIN + DELETE FROM "JMdict_ReadingElementFTS" + WHERE "entryId" = OLD."entryId"; +END; diff --git a/migrations/0007_TANOS_JLPT_TAGS.sql b/migrations/0004_JMDict_tanos_jlpt_tags.sql similarity index 100% rename from migrations/0007_TANOS_JLPT_TAGS.sql rename to migrations/0004_JMDict_tanos_jlpt_tags.sql diff --git a/migrations/0003_RADKFILE.sql b/migrations/0005_RADKFILE.sql similarity index 100% rename from migrations/0003_RADKFILE.sql rename to migrations/0005_RADKFILE.sql diff --git a/migrations/0004_KANJIDIC2.sql b/migrations/0006_KANJIDIC2.sql similarity index 100% rename from migrations/0004_KANJIDIC2.sql rename to migrations/0006_KANJIDIC2.sql diff --git a/migrations/0005_XREF__KANJIDIC_Radical___RADKFILE.sql b/migrations/0007_XREF__KANJIDIC_Radical___RADKFILE.sql similarity index 100% rename from migrations/0005_XREF__KANJIDIC_Radical___RADKFILE.sql rename to migrations/0007_XREF__KANJIDIC_Radical___RADKFILE.sql diff --git a/migrations/0006_XREF__JMdict_KanjiElement__KANJIDIC_Character.sql b/migrations/0008_XREF__JMdict_KanjiElement__KANJIDIC_Character.sql similarity index 100% rename from migrations/0006_XREF__JMdict_KanjiElement__KANJIDIC_Character.sql rename to migrations/0008_XREF__JMdict_KanjiElement__KANJIDIC_Character.sql diff --git a/migrations/0009_Views.sql b/migrations/0009_Views.sql new file mode 100644 index 0000000..0b568c2 --- /dev/null +++ b/migrations/0009_Views.sql @@ -0,0 +1,20 @@ +-- TODO: Make it possible to match words that contain the +-- kanji as an infix + +CREATE VIEW "KANJIDIC_ExampleEntries"("kanji", "entryId") +AS +SELECT + "JMdict_KanjiElement"."entryId", + "KANJIDIC_Character"."literal" AS "kanji", + "JMdict_KanjiElement"."reading" +FROM + "KANJIDIC_Character" +JOIN "JMdict_KanjiElementFTS" + ON "JMdict_KanjiElementFTS"."reading" MATCH "KANJIDIC_Character"."literal" || '*' +JOIN "JMdict_KanjiElement" + ON "JMdict_KanjiElementFTS"."entryId" = "JMdict_KanjiElement"."entryId" + AND "JMdict_KanjiElementFTS"."reading" LIKE '%' || "JMdict_KanjiElement"."reading" +WHERE "JMdict_KanjiElement".news = 1 + OR "JMdict_KanjiElement".ichi = 1 + OR "JMdict_KanjiElement".spec = 1 + OR "JMdict_KanjiElement".gai = 1;