20240214102900_add_extensions.sql

 1CREATE TABLE IF NOT EXISTS extensions (
 2    id SERIAL PRIMARY KEY,
 3    name TEXT NOT NULL,
 4    external_id TEXT NOT NULL,
 5    latest_version TEXT NOT NULL,
 6    total_download_count BIGINT NOT NULL DEFAULT 0
 7);
 8
 9CREATE TABLE IF NOT EXISTS extension_versions (
10    extension_id INTEGER REFERENCES extensions(id),
11    version TEXT NOT NULL,
12    published_at TIMESTAMP NOT NULL DEFAULT now(),
13    authors TEXT NOT NULL,
14    repository TEXT NOT NULL,
15    description TEXT NOT NULL,
16    download_count BIGINT NOT NULL DEFAULT 0,
17    PRIMARY KEY(extension_id, version)
18);
19
20CREATE UNIQUE INDEX "index_extensions_external_id" ON "extensions" ("external_id");
21CREATE INDEX "trigram_index_extensions_name" ON "extensions" USING GIN(name gin_trgm_ops);
22CREATE INDEX "index_extensions_total_download_count" ON "extensions" ("total_download_count");