update database
This commit is contained in:
1 parent
6e2c025e2a
commit
6d2ea0ead7
6 files changed
+63
-10
No files matched your search
+13
-3
@@ -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")
|
||||
|
||||
Reference in new issue
Block a user