update database

This commit is contained in:
polv committed 2021-10-21 08:31:59 +07:00
1 parent 6e2c025e2a
commit 6d2ea0ead7
6 files changed
+63 -10

No files matched your search

+13 -3
View File
@@ -4,6 +4,10 @@ CREATE TABLE "entry" (
"updatedAt" TIMESTAMPTZ DEFAULT now(),
"userId" UUID NOT NULL REFERENCES "user"("id") ON DELETE CASCADE,
"type" TEXT NOT NULL,
"_type" TEXT[] GENERATED ALWAYS AS (CASE
WHEN "type" = 'character' THEN ARRAY['character', 'hanzi', 'kanji']
ELSE ARRAY["type"]
END) STORED,
"entry" TEXT[] NOT NULL CHECK ("entry"[1] IS NOT NULL),
"reading" JSONB NOT NULL DEFAULT '{}', -- TODO: jsonschema
"translation" JSONB NOT NULL DEFAULT '{}', -- TODO: jsonschema
@@ -11,9 +15,14 @@ CREATE TABLE "entry" (
"tag" TEXT[] NOT NULL DEFAULT '{}',
"level" FLOAT,
"level.kanji" INT,
"frequency" FLOAT,
"key" TEXT UNIQUE,
"_meta" JSONB, -- TODO: jsonschema
"priority" INT GENERATED ALWAYS AS (CASE
WHEN "type" = 'vocabulary' THEN 10
WHEN "type" = 'character' THEN 5
WHEN "type" = 'sentence' THEN 1
ELSE 0
END) STORED,
PRIMARY KEY ("id")
);
@@ -22,12 +31,13 @@ CREATE TRIGGER "t_entry_updatedAt"
FOR EACH ROW
EXECUTE PROCEDURE "f_updatedAt"();
CREATE INDEX "idx_entry_priority" ON "entry" ("priority");
CREATE INDEX "idx_entry_updatedAt" ON "entry" ("updatedAt");
CREATE INDEX "idx_entry_userId" ON "entry" ("userId");
CREATE INDEX "idx_entry_type" ON "entry" ("type");
CREATE INDEX "idx_entry_type" ON "entry" USING GIN("_type");
CREATE INDEX "idx_entry_level" ON "entry" ("level");
CREATE INDEX "idx_entry_level.kanji" ON "entry" ("level.kanji");
CREATE INDEX "idx_entry_frequency" ON "entry" ("frequency");
CREATE INDEX "idx_entry_description" ON "entry"
USING pgroonga("description")