Files
database/initdb.d/23-library.sql
T
2021-10-15 12:43:17 +07:00

34 lines
1.3 KiB
SQL

CREATE TABLE "library" (
"id" UUID NOT NULL PRIMARY KEY DEFAULT uuid_generate_v4(),
"createdAt" TIMESTAMPTZ DEFAULT now(),
"updatedAt" TIMESTAMPTZ DEFAULT now(),
"userId" UUID NOT NULL REFERENCES "user"("id") ON DELETE CASCADE,
"isShared" BOOLEAN,
"type" TEXT NOT NULL,
"entry" TEXT[] NOT NULL CHECK ("entry"[1] IS NOT NULL),
"entry.meta" JSONB DEFAULT '{}',
"title" TEXT NOT NULL,
"description" TEXT NOT NULL DEFAULT '',
"tag" TEXT[] NOT NULL DEFAULT '{}'
);
CREATE TRIGGER "t_library_updatedAt"
BEFORE UPDATE ON "library"
FOR EACH ROW
EXECUTE PROCEDURE "f_updatedAt"();
CREATE INDEX "idx_library_updatedAt" ON "library" ("updatedAt");
CREATE INDEX "idx_library_userId" ON "library" ("userId");
CREATE INDEX "idx_library_isShared" ON "library" ("isShared");
CREATE INDEX "idx_library_type" ON "library" ("type");
CREATE INDEX "idx_library_entry" ON "library"
USING pgroonga("entry");
CREATE INDEX "idx_library_title_description" ON "library"
USING pgroonga(
"title",
"description"
)
WITH (plugins='token_filters/stem', token_filters='TokenFilterStem');
CREATE INDEX "idx_library_tag" ON "library" USING pgroonga ("tag");