34 lines
1.3 KiB
SQL
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");
|