From 53a47dfcad418fb5e1a377308e05c9f4594cf192 Mon Sep 17 00:00:00 2001 From: Pan Date: Sat, 21 Sep 2024 23:01:44 +0800 Subject: [PATCH 1/2] feat: change to use postgres --- .env.example | 5 + docker-compose.yml | 10 +- docker-compose/postgres.yml | 20 ++ drizzle.config.ts | 22 +- package.json | 12 +- src/configs/index.ts | 7 +- src/configs/pg-config.ts | 13 ++ src/db/client.ts | 16 -- src/db/index.ts | 2 +- src/db/migrations/0000_init.sql | 117 ++++++---- src/db/pg-client.ts | 9 + src/db/schema/doc-meta.ts | 15 +- src/db/schema/doc.ts | 8 +- src/db/schema/pubmed.ts | 9 +- src/db/schema/stem.ts | 11 +- src/db/schema/stemDocStats.ts | 7 +- src/db/schema/twitter.ts | 9 +- src/db/sqlite-client.ts | 16 ++ src/repositories/db/DocMetaRepository.ts | 12 +- src/repositories/db/DocRepository.ts | 12 +- src/repositories/db/PubmedRepository.ts | 12 +- src/repositories/db/StemDocStatsRepository.ts | 12 +- src/repositories/db/StemRepository.ts | 15 +- src/repositories/db/TwitterRepository.ts | 12 +- yarn.lock | 216 +++++++++++++++++- 25 files changed, 450 insertions(+), 149 deletions(-) create mode 100644 docker-compose/postgres.yml create mode 100644 src/configs/pg-config.ts delete mode 100644 src/db/client.ts create mode 100644 src/db/pg-client.ts create mode 100644 src/db/sqlite-client.ts diff --git a/.env.example b/.env.example index c1cec6b..74dbcfc 100644 --- a/.env.example +++ b/.env.example @@ -32,3 +32,8 @@ MEM_LIMIT=1073741824 # 1GB # Project namespace (defaults to the current folder name if not set) #COMPOSE_PROJECT_NAME=myproject + +# Postgres +POSTGRES_DB=text-indexing +POSTGRES_USER= +POSTGRES_PASSWORD= diff --git a/docker-compose.yml b/docker-compose.yml index de31eca..5d4eb77 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1 +1,9 @@ -# Empty currently +# services: +# setup: +# image: node:22.9.0-alpine +# volumes: +# - .:/app +# - /app/node_modules/ +# working_dir: /app +# # keep the container running +# command: tail -f /dev/null diff --git a/docker-compose/postgres.yml b/docker-compose/postgres.yml new file mode 100644 index 0000000..1862b84 --- /dev/null +++ b/docker-compose/postgres.yml @@ -0,0 +1,20 @@ +services: + postgresql: + image: postgres:15.8-alpine + environment: + - POSTGRES_DB=${POSTGRES_DB} + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - TZ=Asia/Hong_Kong + - PGTZ=Asia/Hong_Kong + ports: + - 5432:5432 + volumes: + - postgresql-data:/var/lib/postgresql/data + networks: + - shared + restart: always + +volumes: + postgresql-data: + driver: local diff --git a/drizzle.config.ts b/drizzle.config.ts index f7b7498..018f8c2 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -1,15 +1,29 @@ import "dotenv/config"; import { defineConfig } from "drizzle-kit"; +import { ConnectionOptions } from "tls"; import config from "./src/configs"; +type Credential = { + host: string; + port: number; + database: string; + user: string; + password: string; + ssl?: + | boolean + | "require" + | "allow" + | "prefer" + | "verify-full" + | ConnectionOptions; +}; + export default defineConfig({ schema: "src/db/schema/index.ts", out: "src/db/migrations", - dialect: "sqlite", - dbCredentials: { - url: `file:${config.databases.db}`, - }, + dialect: "postgresql", + dbCredentials: { ...config.databases.db, ssl: false } as Credential, // Print all statements verbose: true, // Always ask for my confirmation diff --git a/package.json b/package.json index e57b919..6c6e7e9 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "db:studio": "drizzle-kit studio", "test": "jest", "test:debug": "node --inspect node_modules/.bin/jest --runInBand", - "docker:up": "docker compose -f docker-compose.yml -f docker-compose/elasticsearch.yml up -d", - "docker:down": "docker compose -f docker-compose.yml -f docker-compose/elasticsearch.yml down" + "docker:up": "docker compose -f docker-compose.yml -f docker-compose/elasticsearch.yml -f docker-compose/postgres.yml up -d", + "docker:down": "docker compose -f docker-compose.yml -f docker-compose/elasticsearch.yml -f docker-compose/postgres.yml down" }, "dependencies": { "better-sqlite3": "11.3.0", @@ -25,15 +25,17 @@ "drizzle-orm": "0.33.0", "env-var": "7.5.0", "fast-xml-parser": "4.5.0", - "winston": "^3.14.2" + "pg": "8.13.0", + "winston": "3.14.2" }, "devDependencies": { "@elastic/elasticsearch": "8.15.0", - "@types/benchmark": "^2.1.5", + "@types/benchmark": "2.1.5", "@types/better-sqlite3": "7.6.11", "@types/jest": "29.5.12", "@types/node": "22.5.5", - "benchmark": "^2.1.4", + "@types/pg": "8.11.10", + "benchmark": "2.1.4", "drizzle-kit": "0.22.8", "jest": "29.7.0", "ts-jest": "29.2.5", diff --git a/src/configs/index.ts b/src/configs/index.ts index 57d59ee..6bb0df0 100644 --- a/src/configs/index.ts +++ b/src/configs/index.ts @@ -1,10 +1,13 @@ import esConfig from "./elasticsearch-config"; -import sqliteConfig from "./sqlite-config"; +import pgConfig from "./pg-config"; +// import sqliteConfig from "./sqlite-config"; const config = { databases: { elasticsearch: esConfig, - db: sqliteConfig, + // not in use anymore + // db: sqliteConfig, + db: pgConfig, }, }; diff --git a/src/configs/pg-config.ts b/src/configs/pg-config.ts new file mode 100644 index 0000000..288462f --- /dev/null +++ b/src/configs/pg-config.ts @@ -0,0 +1,13 @@ +import { PoolConfig } from "pg"; +import * as env from "env-var"; + +const pgConfig: PoolConfig = { + host: "localhost", + port: 5432, + database: env.get("POSTGRES_DB").required().asString(), + user: env.get("POSTGRES_USER").required().asString(), + password: env.get("POSTGRES_PASSWORD").required().asString(), + // max: 1, +}; + +export default pgConfig; diff --git a/src/db/client.ts b/src/db/client.ts deleted file mode 100644 index 3a6ed2d..0000000 --- a/src/db/client.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { drizzle } from "drizzle-orm/better-sqlite3"; -import Database from "better-sqlite3"; -import config from "../configs"; -import * as schema from "./schema"; - -// Initialize the SQLite database -const sqlite = new Database(config.databases.db); - -// Create the Drizzle ORM instance -const db = drizzle(sqlite, { - schema, -}); - -export default db; - -export type DbClient = typeof db; diff --git a/src/db/index.ts b/src/db/index.ts index 02f9d33..e8f044a 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -1,4 +1,4 @@ -import db, { DbClient } from "./client"; +import db, { DbClient } from "./pg-client"; // Import all your schema definitions import * as schema from "./schema"; diff --git a/src/db/migrations/0000_init.sql b/src/db/migrations/0000_init.sql index 4014bb5..3667e9d 100644 --- a/src/db/migrations/0000_init.sql +++ b/src/db/migrations/0000_init.sql @@ -1,58 +1,83 @@ -CREATE TABLE `doc` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `type` text NOT NULL +CREATE TABLE IF NOT EXISTS "doc" ( + "id" serial PRIMARY KEY NOT NULL, + "type" text NOT NULL ); --> statement-breakpoint -CREATE TABLE `doc_meta` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `doc_id` integer NOT NULL, - `hash` text NOT NULL, - `char_count` integer NOT NULL, - `word_count` integer NOT NULL, - `sentence_count` integer NOT NULL, - FOREIGN KEY (`doc_id`) REFERENCES `doc`(`id`) ON UPDATE no action ON DELETE no action +CREATE TABLE IF NOT EXISTS "doc_meta" ( + "id" serial PRIMARY KEY NOT NULL, + "doc_id" integer NOT NULL, + "hash" text NOT NULL, + "char_count" integer NOT NULL, + "word_count" integer NOT NULL, + "sentence_count" integer NOT NULL ); --> statement-breakpoint -CREATE TABLE `pubmed` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `doc_id` integer NOT NULL, - `title` text NOT NULL, - `abstract` text NOT NULL, - FOREIGN KEY (`doc_id`) REFERENCES `doc`(`id`) ON UPDATE no action ON DELETE no action +CREATE TABLE IF NOT EXISTS "pubmed" ( + "id" serial PRIMARY KEY NOT NULL, + "doc_id" integer NOT NULL, + "title" text NOT NULL, + "abstract" text NOT NULL ); --> statement-breakpoint -CREATE TABLE `stem` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `term` text NOT NULL +CREATE TABLE IF NOT EXISTS "stem" ( + "id" serial PRIMARY KEY NOT NULL, + "term" text NOT NULL ); --> statement-breakpoint -CREATE TABLE `stem_doc_stats` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `stem_id` integer NOT NULL, - `doc_id` integer NOT NULL, - `doc_type` text NOT NULL, - `count` integer NOT NULL, - FOREIGN KEY (`stem_id`) REFERENCES `stem`(`id`) ON UPDATE no action ON DELETE no action, - FOREIGN KEY (`doc_id`) REFERENCES `doc`(`id`) ON UPDATE no action ON DELETE no action +CREATE TABLE IF NOT EXISTS "stem_doc_stats" ( + "id" serial PRIMARY KEY NOT NULL, + "stem_id" integer NOT NULL, + "doc_id" integer NOT NULL, + "doc_type" text NOT NULL, + "count" integer NOT NULL ); --> statement-breakpoint -CREATE TABLE `twitter` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `doc_id` integer NOT NULL, - `content` text NOT NULL, - FOREIGN KEY (`doc_id`) REFERENCES `doc`(`id`) ON UPDATE no action ON DELETE no action +CREATE TABLE IF NOT EXISTS "twitter" ( + "id" serial PRIMARY KEY NOT NULL, + "doc_id" integer NOT NULL, + "content" text NOT NULL ); --> statement-breakpoint -CREATE INDEX `doc_type_idx` ON `doc` (`type`);--> statement-breakpoint -CREATE UNIQUE INDEX `doc_meta_doc_id_idx` ON `doc_meta` (`doc_id`);--> statement-breakpoint -CREATE INDEX `doc_meta_hash_idx` ON `doc_meta` (`hash`);--> statement-breakpoint -CREATE INDEX `doc_meta_char_count_idx` ON `doc_meta` (`char_count`);--> statement-breakpoint -CREATE INDEX `doc_meta_word_count_idx` ON `doc_meta` (`word_count`);--> statement-breakpoint -CREATE INDEX `doc_meta_sentence_count_idx` ON `doc_meta` (`sentence_count`);--> statement-breakpoint -CREATE UNIQUE INDEX `pubmed_doc_id_idx` ON `pubmed` (`doc_id`);--> statement-breakpoint -CREATE UNIQUE INDEX `stem_term_idx` ON `stem` (`term`);--> statement-breakpoint -CREATE INDEX `stem_doc_stats_doc_id_count_idx` ON `stem_doc_stats` (`doc_id`,`count`);--> statement-breakpoint -CREATE INDEX `stem_doc_stats_stem_id_count_idx` ON `stem_doc_stats` (`stem_id`,`count`);--> statement-breakpoint -CREATE INDEX `stem_doc_stats_doc_type_count_idx` ON `stem_doc_stats` (`doc_type`,`count`);--> statement-breakpoint -CREATE INDEX `stem_doc_stats_count_idx` ON `stem_doc_stats` (`count`);--> statement-breakpoint -CREATE UNIQUE INDEX `twitter_doc_id_idx` ON `twitter` (`doc_id`); \ No newline at end of file +DO $$ BEGIN + ALTER TABLE "doc_meta" ADD CONSTRAINT "doc_meta_doc_id_doc_id_fk" FOREIGN KEY ("doc_id") REFERENCES "public"."doc"("id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "pubmed" ADD CONSTRAINT "pubmed_doc_id_doc_id_fk" FOREIGN KEY ("doc_id") REFERENCES "public"."doc"("id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "stem_doc_stats" ADD CONSTRAINT "stem_doc_stats_stem_id_stem_id_fk" FOREIGN KEY ("stem_id") REFERENCES "public"."stem"("id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "stem_doc_stats" ADD CONSTRAINT "stem_doc_stats_doc_id_doc_id_fk" FOREIGN KEY ("doc_id") REFERENCES "public"."doc"("id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "twitter" ADD CONSTRAINT "twitter_doc_id_doc_id_fk" FOREIGN KEY ("doc_id") REFERENCES "public"."doc"("id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "doc_type_idx" ON "doc" USING btree ("type");--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "doc_meta_doc_id_idx" ON "doc_meta" USING btree ("doc_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "doc_meta_hash_idx" ON "doc_meta" USING btree ("hash");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "doc_meta_char_count_idx" ON "doc_meta" USING btree ("char_count");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "doc_meta_word_count_idx" ON "doc_meta" USING btree ("word_count");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "doc_meta_sentence_count_idx" ON "doc_meta" USING btree ("sentence_count");--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "pubmed_doc_id_idx" ON "pubmed" USING btree ("doc_id");--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "stem_term_idx" ON "stem" USING btree ("term");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "stem_doc_stats_doc_id_count_idx" ON "stem_doc_stats" USING btree ("doc_id","count");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "stem_doc_stats_stem_id_count_idx" ON "stem_doc_stats" USING btree ("stem_id","count");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "stem_doc_stats_doc_type_count_idx" ON "stem_doc_stats" USING btree ("doc_type","count");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "stem_doc_stats_count_idx" ON "stem_doc_stats" USING btree ("count");--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "twitter_doc_id_idx" ON "twitter" USING btree ("doc_id"); \ No newline at end of file diff --git a/src/db/pg-client.ts b/src/db/pg-client.ts new file mode 100644 index 0000000..a58329b --- /dev/null +++ b/src/db/pg-client.ts @@ -0,0 +1,9 @@ +import { drizzle } from "drizzle-orm/node-postgres"; +import { Pool } from "pg"; +import config from "../configs"; + +const db = drizzle(new Pool(config.databases.db)); + +export default db; + +export type DbClient = typeof db; diff --git a/src/db/schema/doc-meta.ts b/src/db/schema/doc-meta.ts index d84d843..f499415 100644 --- a/src/db/schema/doc-meta.ts +++ b/src/db/schema/doc-meta.ts @@ -1,12 +1,17 @@ -import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"; +import { + index, + integer, + pgTable, + serial, + text, + uniqueIndex, +} from "drizzle-orm/pg-core"; import doc from "./doc"; -import { uniqueIndex } from "drizzle-orm/sqlite-core"; -import { index } from "drizzle-orm/sqlite-core"; -const docMeta = sqliteTable( +const docMeta = pgTable( "doc_meta", { - id: integer("id").primaryKey({ autoIncrement: true }), + id: serial("id").primaryKey(), docId: integer("doc_id") .references(() => doc.id) .notNull(), diff --git a/src/db/schema/doc.ts b/src/db/schema/doc.ts index 7fc5b06..86900a4 100644 --- a/src/db/schema/doc.ts +++ b/src/db/schema/doc.ts @@ -1,12 +1,10 @@ -// import { sql } from "drizzle-orm"; -import { table } from "console"; -import { sqliteTable, text, integer, index } from "drizzle-orm/sqlite-core"; +import { pgTable, text, index, serial } from "drizzle-orm/pg-core"; import { DocTypeValues } from "../../constants/DocType"; -const doc = sqliteTable( +const doc = pgTable( "doc", { - id: integer("id").primaryKey({ autoIncrement: true }), + id: serial("id").primaryKey(), type: text("type", { enum: DocTypeValues, }).notNull(), diff --git a/src/db/schema/pubmed.ts b/src/db/schema/pubmed.ts index 6195251..787cea5 100644 --- a/src/db/schema/pubmed.ts +++ b/src/db/schema/pubmed.ts @@ -1,15 +1,16 @@ import { integer, - sqliteTable, + pgTable, + serial, text, uniqueIndex, -} from "drizzle-orm/sqlite-core"; +} from "drizzle-orm/pg-core"; import doc from "./doc"; -const pubmed = sqliteTable( +const pubmed = pgTable( "pubmed", { - id: integer("id").primaryKey({ autoIncrement: true }), + id: serial("id").primaryKey(), docId: integer("doc_id") .references(() => doc.id) .notNull(), diff --git a/src/db/schema/stem.ts b/src/db/schema/stem.ts index 5210283..361151e 100644 --- a/src/db/schema/stem.ts +++ b/src/db/schema/stem.ts @@ -1,14 +1,9 @@ -import { - integer, - sqliteTable, - text, - uniqueIndex, -} from "drizzle-orm/sqlite-core"; +import { serial, pgTable, text, uniqueIndex } from "drizzle-orm/pg-core"; -const stem = sqliteTable( +const stem = pgTable( "stem", { - id: integer("id").primaryKey({ autoIncrement: true }), + id: serial("id").primaryKey(), term: text("term").notNull(), }, (table) => ({ diff --git a/src/db/schema/stemDocStats.ts b/src/db/schema/stemDocStats.ts index a753210..b337776 100644 --- a/src/db/schema/stemDocStats.ts +++ b/src/db/schema/stemDocStats.ts @@ -1,13 +1,12 @@ -import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"; +import { index, integer, pgTable, serial, text } from "drizzle-orm/pg-core"; import doc from "./doc"; import stem from "./stem"; -import { index } from "drizzle-orm/sqlite-core"; import { DocTypeValues } from "../../constants/DocType"; -const stemDocStats = sqliteTable( +const stemDocStats = pgTable( "stem_doc_stats", { - id: integer("id").primaryKey({ autoIncrement: true }), + id: serial("id").primaryKey(), stemId: integer("stem_id") .references(() => stem.id) .notNull(), diff --git a/src/db/schema/twitter.ts b/src/db/schema/twitter.ts index ab4a22f..69551e6 100644 --- a/src/db/schema/twitter.ts +++ b/src/db/schema/twitter.ts @@ -1,15 +1,16 @@ import { integer, - sqliteTable, + pgTable, + serial, text, uniqueIndex, -} from "drizzle-orm/sqlite-core"; +} from "drizzle-orm/pg-core"; import doc from "./doc"; -const twitter = sqliteTable( +const twitter = pgTable( "twitter", { - id: integer("id").primaryKey({ autoIncrement: true }), + id: serial("id").primaryKey(), docId: integer("doc_id") .references(() => doc.id) .notNull(), diff --git a/src/db/sqlite-client.ts b/src/db/sqlite-client.ts new file mode 100644 index 0000000..96515ec --- /dev/null +++ b/src/db/sqlite-client.ts @@ -0,0 +1,16 @@ +// import { drizzle } from "drizzle-orm/better-sqlite3"; +// import Database from "better-sqlite3"; +// import config from "../configs"; +// import * as schema from "./schema"; + +// // Initialize the SQLite database +// const sqlite = new Database(config.databases.db); + +// // Create the Drizzle ORM instance +// const db = drizzle(sqlite, { +// schema, +// }); + +// export default db; + +// export type DbClient = typeof db; diff --git a/src/repositories/db/DocMetaRepository.ts b/src/repositories/db/DocMetaRepository.ts index 5e5bc4d..2d8e407 100644 --- a/src/repositories/db/DocMetaRepository.ts +++ b/src/repositories/db/DocMetaRepository.ts @@ -1,10 +1,8 @@ import { eq, SQL } from "drizzle-orm"; -import { DbClient } from "../../db"; -import { - SQLiteInsertValue, - SQLiteUpdateSetSource, -} from "drizzle-orm/sqlite-core"; +import { PgInsertValue, PgUpdateSetSource } from "drizzle-orm/pg-core"; import { GetSelectTableSelection } from "drizzle-orm/query-builders/select.types"; + +import { DbClient } from "../../db"; import { DocMetaTable } from "../../db/schema/doc-meta"; import { int } from "../../types/alias"; @@ -53,8 +51,8 @@ class DocMetaRepository { export default DocMetaRepository; -type InsertDocMeta = SQLiteInsertValue; -type UpdateDocMeta = SQLiteUpdateSetSource; +type InsertDocMeta = PgInsertValue; +type UpdateDocMeta = PgUpdateSetSource; type Filter = | ((aliases: GetSelectTableSelection) => SQL | undefined) | SQL diff --git a/src/repositories/db/DocRepository.ts b/src/repositories/db/DocRepository.ts index 91e743a..db05478 100644 --- a/src/repositories/db/DocRepository.ts +++ b/src/repositories/db/DocRepository.ts @@ -1,10 +1,8 @@ import { eq, SQL } from "drizzle-orm"; -import { DbClient } from "../../db"; -import { - SQLiteInsertValue, - SQLiteUpdateSetSource, -} from "drizzle-orm/sqlite-core"; +import { PgInsertValue, PgUpdateSetSource } from "drizzle-orm/pg-core"; import { GetSelectTableSelection } from "drizzle-orm/query-builders/select.types"; + +import { DbClient } from "../../db"; import { DocTable } from "../../db/schema/doc"; import { int } from "../../types/alias"; @@ -51,8 +49,8 @@ class DocRepository { export default DocRepository; -type InsertDoc = SQLiteInsertValue; -type UpdateDoc = SQLiteUpdateSetSource; +type InsertDoc = PgInsertValue; +type UpdateDoc = PgUpdateSetSource; type Filter = | ((aliases: GetSelectTableSelection) => SQL | undefined) | SQL diff --git a/src/repositories/db/PubmedRepository.ts b/src/repositories/db/PubmedRepository.ts index 1f79f90..69aff34 100644 --- a/src/repositories/db/PubmedRepository.ts +++ b/src/repositories/db/PubmedRepository.ts @@ -1,10 +1,8 @@ import { eq, SQL } from "drizzle-orm"; -import { DbClient } from "../../db"; -import { - SQLiteInsertValue, - SQLiteUpdateSetSource, -} from "drizzle-orm/sqlite-core"; +import { PgInsertValue, PgUpdateSetSource } from "drizzle-orm/pg-core"; import { GetSelectTableSelection } from "drizzle-orm/query-builders/select.types"; + +import { DbClient } from "../../db"; import { PubmedTable } from "../../db/schema/pubmed"; import { int } from "../../types/alias"; @@ -60,8 +58,8 @@ class PubmedRepository { export default PubmedRepository; -type InsertPubmed = SQLiteInsertValue; -type UpdatePubmed = SQLiteUpdateSetSource; +type InsertPubmed = PgInsertValue; +type UpdatePubmed = PgUpdateSetSource; type Filter = | ((aliases: GetSelectTableSelection) => SQL | undefined) | SQL diff --git a/src/repositories/db/StemDocStatsRepository.ts b/src/repositories/db/StemDocStatsRepository.ts index 0a5929c..b946ee3 100644 --- a/src/repositories/db/StemDocStatsRepository.ts +++ b/src/repositories/db/StemDocStatsRepository.ts @@ -1,10 +1,8 @@ import { eq, SQL } from "drizzle-orm"; -import { DbClient } from "../../db"; -import { - SQLiteInsertValue, - SQLiteUpdateSetSource, -} from "drizzle-orm/sqlite-core"; +import { PgInsertValue, PgUpdateSetSource } from "drizzle-orm/pg-core"; import { GetSelectTableSelection } from "drizzle-orm/query-builders/select.types"; + +import { DbClient } from "../../db"; import { StemDocStatsTable } from "../../db/schema/stemDocStats"; import { int } from "../../types/alias"; @@ -54,8 +52,8 @@ class StemDocStatsRepository { export default StemDocStatsRepository; -type InsertStemDocStats = SQLiteInsertValue; -type UpdateStemDocStats = SQLiteUpdateSetSource; +type InsertStemDocStats = PgInsertValue; +type UpdateStemDocStats = PgUpdateSetSource; type Filter = | ((aliases: GetSelectTableSelection) => SQL | undefined) | SQL diff --git a/src/repositories/db/StemRepository.ts b/src/repositories/db/StemRepository.ts index c464b03..43a16f1 100644 --- a/src/repositories/db/StemRepository.ts +++ b/src/repositories/db/StemRepository.ts @@ -27,12 +27,21 @@ class StemRepository { .returning(); } + // sqlite version + // async upsert(term: string) { + // const [stem] = await this.search(term); + + // if (stem) return stem; + + // return this.create(term); + // } + async upsert(term: string) { - const [stem] = await this.search(term); + await this.db.insert(this.table).values({ term }).onConflictDoNothing(); - if (stem) return stem; + const [stem] = await this.search(term); - return this.create(term); + return stem!; } async search(term: string | string[]) { diff --git a/src/repositories/db/TwitterRepository.ts b/src/repositories/db/TwitterRepository.ts index 126e252..fb9fe8d 100644 --- a/src/repositories/db/TwitterRepository.ts +++ b/src/repositories/db/TwitterRepository.ts @@ -1,10 +1,8 @@ import { eq, SQL } from "drizzle-orm"; -import { DbClient } from "../../db"; -import { - SQLiteInsertValue, - SQLiteUpdateSetSource, -} from "drizzle-orm/sqlite-core"; +import { PgInsertValue, PgUpdateSetSource } from "drizzle-orm/pg-core"; import { GetSelectTableSelection } from "drizzle-orm/query-builders/select.types"; + +import { DbClient } from "../../db"; import { TwitterTable } from "../../db/schema/twitter"; import { int } from "../../types/alias"; @@ -54,8 +52,8 @@ class TwitterRepository { export default TwitterRepository; -type InsertTwitter = SQLiteInsertValue; -type UpdateTwitter = SQLiteUpdateSetSource; +type InsertTwitter = PgInsertValue; +type UpdateTwitter = PgUpdateSetSource; type Filter = | ((aliases: GetSelectTableSelection) => SQL | undefined) | SQL diff --git a/yarn.lock b/yarn.lock index 72d95b2..61adac0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1360,7 +1360,7 @@ __metadata: languageName: node linkType: hard -"@types/benchmark@npm:^2.1.5": +"@types/benchmark@npm:2.1.5": version: 2.1.5 resolution: "@types/benchmark@npm:2.1.5" checksum: 10c0/31ca163891bea0dbe28ad517ae95d18531518049e95cfac218e082590b33edd75cda23fc3e4abf72112b3928e844488c9b029b33aa29f825a83a16d2ed202154 @@ -1438,6 +1438,17 @@ __metadata: languageName: node linkType: hard +"@types/pg@npm:8.11.10": + version: 8.11.10 + resolution: "@types/pg@npm:8.11.10" + dependencies: + "@types/node": "npm:*" + pg-protocol: "npm:*" + pg-types: "npm:^4.0.1" + checksum: 10c0/c8800d0ab2c6424308e6c6b40c73f19583ee1aed758462bd07694844b0a551b5841442205a4ee05207b80109ba502f33f20241b1bd9b4902e713611fb9e08f6c + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" @@ -1668,7 +1679,7 @@ __metadata: languageName: node linkType: hard -"benchmark@npm:^2.1.4": +"benchmark@npm:2.1.4": version: 2.1.4 resolution: "benchmark@npm:2.1.4" dependencies: @@ -4069,6 +4080,13 @@ __metadata: languageName: node linkType: hard +"obuf@npm:~1.1.2": + version: 1.1.2 + resolution: "obuf@npm:1.1.2" + checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 + languageName: node + linkType: hard + "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -4196,6 +4214,109 @@ __metadata: languageName: node linkType: hard +"pg-cloudflare@npm:^1.1.1": + version: 1.1.1 + resolution: "pg-cloudflare@npm:1.1.1" + checksum: 10c0/a68b957f755be6af813d68ccaf4c906a000fd2ecb362cd281220052cc9e2f6c26da3b88792742387008c30b3bf0d2fa3a0eff04aeb8af4414023c99ae78e07bd + languageName: node + linkType: hard + +"pg-connection-string@npm:^2.7.0": + version: 2.7.0 + resolution: "pg-connection-string@npm:2.7.0" + checksum: 10c0/50a1496a1c858f9495d78a2c7a66d93ef3602e718aff2953bb5738f3ea616d7f727f32fc20513c9bed127650cd14c1ddc7b458396f4000e689d4b64c65c5c51e + languageName: node + linkType: hard + +"pg-int8@npm:1.0.1": + version: 1.0.1 + resolution: "pg-int8@npm:1.0.1" + checksum: 10c0/be6a02d851fc2a4ae3e9de81710d861de3ba35ac927268973eb3cb618873a05b9424656df464dd43bd7dc3fc5295c3f5b3c8349494f87c7af50ec59ef14e0b98 + languageName: node + linkType: hard + +"pg-numeric@npm:1.0.2": + version: 1.0.2 + resolution: "pg-numeric@npm:1.0.2" + checksum: 10c0/43dd9884e7b52c79ddc28d2d282d7475fce8bba13452d33c04ceb2e0a65f561edf6699694e8e1c832ff9093770496363183c950dd29608e1bdd98f344b25bca9 + languageName: node + linkType: hard + +"pg-pool@npm:^3.7.0": + version: 3.7.0 + resolution: "pg-pool@npm:3.7.0" + peerDependencies: + pg: ">=8.0" + checksum: 10c0/9128673cf941f288c0cb1a74ca959a9b4f6075ef73b2cc7dece5d4db3dd7043784869e7c12bce2e69ca0df22132a419cc45c2050b4373632856fe8bae9eb94b5 + languageName: node + linkType: hard + +"pg-protocol@npm:*, pg-protocol@npm:^1.7.0": + version: 1.7.0 + resolution: "pg-protocol@npm:1.7.0" + checksum: 10c0/c4af854d9b843c808231c0040fed89f2b9101006157df8da2bb2f62a7dde702de748d852228dc22df41cc7ffddfb526af3bcb34b278b581e9f76a060789186c1 + languageName: node + linkType: hard + +"pg-types@npm:^2.1.0": + version: 2.2.0 + resolution: "pg-types@npm:2.2.0" + dependencies: + pg-int8: "npm:1.0.1" + postgres-array: "npm:~2.0.0" + postgres-bytea: "npm:~1.0.0" + postgres-date: "npm:~1.0.4" + postgres-interval: "npm:^1.1.0" + checksum: 10c0/ab3f8069a323f601cd2d2279ca8c425447dab3f9b61d933b0601d7ffc00d6200df25e26a4290b2b0783b59278198f7dd2ed03e94c4875797919605116a577c65 + languageName: node + linkType: hard + +"pg-types@npm:^4.0.1": + version: 4.0.2 + resolution: "pg-types@npm:4.0.2" + dependencies: + pg-int8: "npm:1.0.1" + pg-numeric: "npm:1.0.2" + postgres-array: "npm:~3.0.1" + postgres-bytea: "npm:~3.0.0" + postgres-date: "npm:~2.1.0" + postgres-interval: "npm:^3.0.0" + postgres-range: "npm:^1.1.1" + checksum: 10c0/780fccda2f3fa2a34e85a72e8e7dadb7d88fbe71ce88f126cb3313f333ad836d02488ec4ff3d94d0c1e5846f735d6e6c6281f8059e6b8919d2180429acaec3e2 + languageName: node + linkType: hard + +"pg@npm:8.13.0": + version: 8.13.0 + resolution: "pg@npm:8.13.0" + dependencies: + pg-cloudflare: "npm:^1.1.1" + pg-connection-string: "npm:^2.7.0" + pg-pool: "npm:^3.7.0" + pg-protocol: "npm:^1.7.0" + pg-types: "npm:^2.1.0" + pgpass: "npm:1.x" + peerDependencies: + pg-native: ">=3.0.1" + dependenciesMeta: + pg-cloudflare: + optional: true + peerDependenciesMeta: + pg-native: + optional: true + checksum: 10c0/1521189063d2293d62f3fac61e797a3096a62a69668c223827d00b83c17a320805f31f0b5316feb80f8d9eed0c6c32f95146d8aca866af05816a66fd2ba8e32a + languageName: node + linkType: hard + +"pgpass@npm:1.x": + version: 1.0.5 + resolution: "pgpass@npm:1.0.5" + dependencies: + split2: "npm:^4.1.0" + checksum: 10c0/5ea6c9b2de04c33abb08d33a2dded303c4a3c7162a9264519cbe85c0a9857d712463140ba42fad0c7cd4b21f644dd870b45bb2e02fcbe505b4de0744fd802c1d + languageName: node + linkType: hard + "picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": version: 1.1.0 resolution: "picocolors@npm:1.1.0" @@ -4233,6 +4354,73 @@ __metadata: languageName: node linkType: hard +"postgres-array@npm:~2.0.0": + version: 2.0.0 + resolution: "postgres-array@npm:2.0.0" + checksum: 10c0/cbd56207e4141d7fbf08c86f2aebf21fa7064943d3f808ec85f442ff94b48d891e7a144cc02665fb2de5dbcb9b8e3183a2ac749959e794b4a4cfd379d7a21d08 + languageName: node + linkType: hard + +"postgres-array@npm:~3.0.1": + version: 3.0.2 + resolution: "postgres-array@npm:3.0.2" + checksum: 10c0/644aa071f67a66a59f641f8e623887d2b915bc102a32643e2aa8b54c11acd343c5ad97831ea444dd37bd4b921ba35add4aa2cb0c6b76700a8252c2324aeba5b4 + languageName: node + linkType: hard + +"postgres-bytea@npm:~1.0.0": + version: 1.0.0 + resolution: "postgres-bytea@npm:1.0.0" + checksum: 10c0/febf2364b8a8953695cac159eeb94542ead5886792a9627b97e33f6b5bb6e263bc0706ab47ec221516e79fbd6b2452d668841830fb3b49ec6c0fc29be61892ce + languageName: node + linkType: hard + +"postgres-bytea@npm:~3.0.0": + version: 3.0.0 + resolution: "postgres-bytea@npm:3.0.0" + dependencies: + obuf: "npm:~1.1.2" + checksum: 10c0/41c79cc48aa730c5ba3eda6ab989a940034f07a1f57b8f2777dce56f1b8cca16c5870582932b5b10cc605048aef9b6157e06253c871b4717cafc6d00f55376aa + languageName: node + linkType: hard + +"postgres-date@npm:~1.0.4": + version: 1.0.7 + resolution: "postgres-date@npm:1.0.7" + checksum: 10c0/0ff91fccc64003e10b767fcfeefb5eaffbc522c93aa65d5051c49b3c4ce6cb93ab091a7d22877a90ad60b8874202c6f1d0f935f38a7235ed3b258efd54b97ca9 + languageName: node + linkType: hard + +"postgres-date@npm:~2.1.0": + version: 2.1.0 + resolution: "postgres-date@npm:2.1.0" + checksum: 10c0/00a7472c10788f6b0d08d24108bf1eb80858de1bd6317740198a564918ea4a69b80c98148167b92ae688abd606483020d0de0dd3a36f3ea9a3e26bbeef3464f4 + languageName: node + linkType: hard + +"postgres-interval@npm:^1.1.0": + version: 1.2.0 + resolution: "postgres-interval@npm:1.2.0" + dependencies: + xtend: "npm:^4.0.0" + checksum: 10c0/c1734c3cb79e7f22579af0b268a463b1fa1d084e742a02a7a290c4f041e349456f3bee3b4ee0bb3f226828597f7b76deb615c1b857db9a742c45520100456272 + languageName: node + linkType: hard + +"postgres-interval@npm:^3.0.0": + version: 3.0.0 + resolution: "postgres-interval@npm:3.0.0" + checksum: 10c0/8b570b30ea37c685e26d136d34460f246f98935a1533defc4b53bb05ee23ae3dc7475b718ec7ea607a57894d8c6b4f1adf67ca9cc83a75bdacffd427d5c68de8 + languageName: node + linkType: hard + +"postgres-range@npm:^1.1.1": + version: 1.1.4 + resolution: "postgres-range@npm:1.1.4" + checksum: 10c0/254494ef81df208e0adeae6b66ce394aba37914ea14c7ece55a45fb6691b7db04bee74c825380a47c887a9f87158fd3d86f758f9cc60b76d3a38ce5aca7912e8 + languageName: node + linkType: hard + "prebuild-install@npm:^7.1.1": version: 7.1.2 resolution: "prebuild-install@npm:7.1.2" @@ -4584,6 +4772,13 @@ __metadata: languageName: node linkType: hard +"split2@npm:^4.1.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 + languageName: node + linkType: hard + "sprintf-js@npm:^1.1.3": version: 1.1.3 resolution: "sprintf-js@npm:1.1.3" @@ -4813,11 +5008,12 @@ __metadata: resolution: "text-indexing@workspace:." dependencies: "@elastic/elasticsearch": "npm:8.15.0" - "@types/benchmark": "npm:^2.1.5" + "@types/benchmark": "npm:2.1.5" "@types/better-sqlite3": "npm:7.6.11" "@types/jest": "npm:29.5.12" "@types/node": "npm:22.5.5" - benchmark: "npm:^2.1.4" + "@types/pg": "npm:8.11.10" + benchmark: "npm:2.1.4" better-sqlite3: "npm:11.3.0" commander: "npm:12.1.0" dotenv: "npm:16.4.5" @@ -4826,10 +5022,11 @@ __metadata: env-var: "npm:7.5.0" fast-xml-parser: "npm:4.5.0" jest: "npm:29.7.0" + pg: "npm:8.13.0" ts-jest: "npm:29.2.5" tsx: "npm:4.19.1" typescript: "npm:5.6.2" - winston: "npm:^3.14.2" + winston: "npm:3.14.2" bin: cli: ./dist/cli.js languageName: unknown @@ -5074,7 +5271,7 @@ __metadata: languageName: node linkType: hard -"winston@npm:^3.14.2": +"winston@npm:3.14.2": version: 3.14.2 resolution: "winston@npm:3.14.2" dependencies: @@ -5132,6 +5329,13 @@ __metadata: languageName: node linkType: hard +"xtend@npm:^4.0.0": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" From 316d3412acb19ef4d35c084e8e0ad687c103d481 Mon Sep 17 00:00:00 2001 From: Pan Date: Sat, 21 Sep 2024 23:16:48 +0800 Subject: [PATCH 2/2] chore: remove unused deps --- package.json | 2 - yarn.lock | 290 +-------------------------------------------------- 2 files changed, 4 insertions(+), 288 deletions(-) diff --git a/package.json b/package.json index 6c6e7e9..050245a 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "docker:down": "docker compose -f docker-compose.yml -f docker-compose/elasticsearch.yml -f docker-compose/postgres.yml down" }, "dependencies": { - "better-sqlite3": "11.3.0", "commander": "12.1.0", "dotenv": "16.4.5", "drizzle-orm": "0.33.0", @@ -31,7 +30,6 @@ "devDependencies": { "@elastic/elasticsearch": "8.15.0", "@types/benchmark": "2.1.5", - "@types/better-sqlite3": "7.6.11", "@types/jest": "29.5.12", "@types/node": "22.5.5", "@types/pg": "8.11.10", diff --git a/yarn.lock b/yarn.lock index 61adac0..d3fbefe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1367,15 +1367,6 @@ __metadata: languageName: node linkType: hard -"@types/better-sqlite3@npm:7.6.11": - version: 7.6.11 - resolution: "@types/better-sqlite3@npm:7.6.11" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/6a7b8e5765f872404242ff9626edf4b4dd7974047144ba7254a59f4f1c196d05f8001323d0b526e8bbb3842bf541e341d74ca0164e50bd38fceaf3ef5d2a673d - languageName: node - linkType: hard - "@types/graceful-fs@npm:^4.1.3": version: 4.1.9 resolution: "@types/graceful-fs@npm:4.1.9" @@ -1672,13 +1663,6 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.3.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf - languageName: node - linkType: hard - "benchmark@npm:2.1.4": version: 2.1.4 resolution: "benchmark@npm:2.1.4" @@ -1689,37 +1673,6 @@ __metadata: languageName: node linkType: hard -"better-sqlite3@npm:11.3.0": - version: 11.3.0 - resolution: "better-sqlite3@npm:11.3.0" - dependencies: - bindings: "npm:^1.5.0" - node-gyp: "npm:latest" - prebuild-install: "npm:^7.1.1" - checksum: 10c0/9adc99683300699581da5d7288e4a261b7d4381fd99c762fc6a0e9b1e1e226009c1333b46b10c1c453c356b20cb8be037a4616b1e717b3d1a00bd8493bec506e - languageName: node - linkType: hard - -"bindings@npm:^1.5.0": - version: 1.5.0 - resolution: "bindings@npm:1.5.0" - dependencies: - file-uri-to-path: "npm:1.0.0" - checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba - languageName: node - linkType: hard - -"bl@npm:^4.0.3": - version: 4.1.0 - resolution: "bl@npm:4.1.0" - dependencies: - buffer: "npm:^5.5.0" - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.4.0" - checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -1787,16 +1740,6 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.5.0": - version: 5.7.1 - resolution: "buffer@npm:5.7.1" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.1.13" - checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e - languageName: node - linkType: hard - "cacache@npm:^18.0.0": version: 18.0.4 resolution: "cacache@npm:18.0.4" @@ -1873,13 +1816,6 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^1.1.1": - version: 1.1.4 - resolution: "chownr@npm:1.1.4" - checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db - languageName: node - linkType: hard - "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -2056,15 +1992,6 @@ __metadata: languageName: node linkType: hard -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: "npm:^3.1.0" - checksum: 10c0/bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e - languageName: node - linkType: hard - "dedent@npm:^1.0.0": version: 1.5.3 resolution: "dedent@npm:1.5.3" @@ -2077,13 +2004,6 @@ __metadata: languageName: node linkType: hard -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 - languageName: node - linkType: hard - "deepmerge@npm:^4.2.2": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" @@ -2091,13 +2011,6 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.0": - version: 2.0.3 - resolution: "detect-libc@npm:2.0.3" - checksum: 10c0/88095bda8f90220c95f162bf92cad70bd0e424913e655c20578600e35b91edc261af27531cf160a331e185c0ced93944bc7e09939143225f56312d7fd800fdb7 - languageName: node - linkType: hard - "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -2286,15 +2199,6 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: "npm:^1.4.0" - checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 - languageName: node - linkType: hard - "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -2631,13 +2535,6 @@ __metadata: languageName: node linkType: hard -"expand-template@npm:^2.0.3": - version: 2.0.3 - resolution: "expand-template@npm:2.0.3" - checksum: 10c0/1c9e7afe9acadf9d373301d27f6a47b34e89b3391b1ef38b7471d381812537ef2457e620ae7f819d2642ce9c43b189b3583813ec395e2938319abe356a9b2f51 - languageName: node - linkType: hard - "expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" @@ -2692,13 +2589,6 @@ __metadata: languageName: node linkType: hard -"file-uri-to-path@npm:1.0.0": - version: 1.0.0 - resolution: "file-uri-to-path@npm:1.0.0" - checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 - languageName: node - linkType: hard - "filelist@npm:^1.0.4": version: 1.0.4 resolution: "filelist@npm:1.0.4" @@ -2744,13 +2634,6 @@ __metadata: languageName: node linkType: hard -"fs-constants@npm:^1.0.0": - version: 1.0.0 - resolution: "fs-constants@npm:1.0.0" - checksum: 10c0/a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8 - languageName: node - linkType: hard - "fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -2839,13 +2722,6 @@ __metadata: languageName: node linkType: hard -"github-from-package@npm:0.0.0": - version: 0.0.0 - resolution: "github-from-package@npm:0.0.0" - checksum: 10c0/737ee3f52d0a27e26332cde85b533c21fcdc0b09fb716c3f8e522cfaa9c600d4a631dec9fcde179ec9d47cca89017b7848ed4d6ae6b6b78f936c06825b1fcc12 - languageName: node - linkType: hard - "glob@npm:^10.2.2, glob@npm:^10.3.10": version: 10.4.5 resolution: "glob@npm:10.4.5" @@ -2970,13 +2846,6 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb - languageName: node - linkType: hard - "import-local@npm:^3.0.2": version: 3.2.0 resolution: "import-local@npm:3.2.0" @@ -3013,20 +2882,13 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4": +"inherits@npm:2, inherits@npm:^2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 languageName: node linkType: hard -"ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -3841,13 +3703,6 @@ __metadata: languageName: node linkType: hard -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 10c0/0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 - languageName: node - linkType: hard - "minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -3875,13 +3730,6 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.3": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 - languageName: node - linkType: hard - "minipass-collect@npm:^2.0.1": version: 2.0.1 resolution: "minipass-collect@npm:2.0.1" @@ -3966,13 +3814,6 @@ __metadata: languageName: node linkType: hard -"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": - version: 0.5.3 - resolution: "mkdirp-classic@npm:0.5.3" - checksum: 10c0/95371d831d196960ddc3833cc6907e6b8f67ac5501a6582f47dfae5eb0f092e9f8ce88e0d83afcae95d6e2b61a01741ba03714eeafb6f7a6e9dcc158ac85b168 - languageName: node - linkType: hard - "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -3989,13 +3830,6 @@ __metadata: languageName: node linkType: hard -"napi-build-utils@npm:^1.0.1": - version: 1.0.2 - resolution: "napi-build-utils@npm:1.0.2" - checksum: 10c0/37fd2cd0ff2ad20073ce78d83fd718a740d568b225924e753ae51cb69d68f330c80544d487e5e5bd18e28702ed2ca469c2424ad948becd1862c1b0209542b2e9 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -4010,15 +3844,6 @@ __metadata: languageName: node linkType: hard -"node-abi@npm:^3.3.0": - version: 3.67.0 - resolution: "node-abi@npm:3.67.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/72ce2edbdfb84745bc201a4e48aa7146fd88a0d2c80046b6b17f28439c9a7683eab846f40f1e819349c31f7d9331ed5c50d1e741208d938dd5f38b29cab2275e - languageName: node - linkType: hard - "node-gyp@npm:latest": version: 10.2.0 resolution: "node-gyp@npm:10.2.0" @@ -4087,7 +3912,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -4421,28 +4246,6 @@ __metadata: languageName: node linkType: hard -"prebuild-install@npm:^7.1.1": - version: 7.1.2 - resolution: "prebuild-install@npm:7.1.2" - dependencies: - detect-libc: "npm:^2.0.0" - expand-template: "npm:^2.0.3" - github-from-package: "npm:0.0.0" - minimist: "npm:^1.2.3" - mkdirp-classic: "npm:^0.5.3" - napi-build-utils: "npm:^1.0.1" - node-abi: "npm:^3.3.0" - pump: "npm:^3.0.0" - rc: "npm:^1.2.7" - simple-get: "npm:^4.0.0" - tar-fs: "npm:^2.0.0" - tunnel-agent: "npm:^0.6.0" - bin: - prebuild-install: bin.js - checksum: 10c0/e64868ba9ef2068fd7264f5b03e5298a901e02a450acdb1f56258d88c09dea601eefdb3d1dfdff8513fdd230a92961712be0676192626a3b4d01ba154d48bdd3 - languageName: node - linkType: hard - "pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" @@ -4481,16 +4284,6 @@ __metadata: languageName: node linkType: hard -"pump@npm:^3.0.0": - version: 3.0.2 - resolution: "pump@npm:3.0.2" - dependencies: - end-of-stream: "npm:^1.1.0" - once: "npm:^1.3.1" - checksum: 10c0/5ad655cb2a7738b4bcf6406b24ad0970d680649d996b55ad20d1be8e0c02394034e4c45ff7cd105d87f1e9b96a0e3d06fd28e11fae8875da26e7f7a8e2c9726f - languageName: node - linkType: hard - "pure-rand@npm:^6.0.0": version: 6.1.0 resolution: "pure-rand@npm:6.1.0" @@ -4498,20 +4291,6 @@ __metadata: languageName: node linkType: hard -"rc@npm:^1.2.7": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: "npm:^0.6.0" - ini: "npm:~1.3.0" - minimist: "npm:^1.2.0" - strip-json-comments: "npm:~2.0.1" - bin: - rc: ./cli.js - checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 - languageName: node - linkType: hard - "react-is@npm:^18.0.0": version: 18.3.1 resolution: "react-is@npm:18.3.1" @@ -4519,7 +4298,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.2": +"readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.2": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -4600,7 +4379,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -4676,24 +4455,6 @@ __metadata: languageName: node linkType: hard -"simple-concat@npm:^1.0.0": - version: 1.0.1 - resolution: "simple-concat@npm:1.0.1" - checksum: 10c0/62f7508e674414008910b5397c1811941d457dfa0db4fd5aa7fa0409eb02c3609608dfcd7508cace75b3a0bf67a2a77990711e32cd213d2c76f4fd12ee86d776 - languageName: node - linkType: hard - -"simple-get@npm:^4.0.0": - version: 4.0.1 - resolution: "simple-get@npm:4.0.1" - dependencies: - decompress-response: "npm:^6.0.0" - once: "npm:^1.3.1" - simple-concat: "npm:^1.0.0" - checksum: 10c0/b0649a581dbca741babb960423248899203165769747142033479a7dc5e77d7b0fced0253c731cd57cf21e31e4d77c9157c3069f4448d558ebc96cf9e1eebcf0 - languageName: node - linkType: hard - "simple-swizzle@npm:^0.2.2": version: 0.2.2 resolution: "simple-swizzle@npm:0.2.2" @@ -4898,13 +4659,6 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 - languageName: node - linkType: hard - "strnum@npm:^1.0.5": version: 1.0.5 resolution: "strnum@npm:1.0.5" @@ -4946,31 +4700,6 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:^2.0.0": - version: 2.1.1 - resolution: "tar-fs@npm:2.1.1" - dependencies: - chownr: "npm:^1.1.1" - mkdirp-classic: "npm:^0.5.2" - pump: "npm:^3.0.0" - tar-stream: "npm:^2.1.4" - checksum: 10c0/871d26a934bfb7beeae4c4d8a09689f530b565f79bd0cf489823ff0efa3705da01278160da10bb006d1a793fa0425cf316cec029b32a9159eacbeaff4965fb6d - languageName: node - linkType: hard - -"tar-stream@npm:^2.1.4": - version: 2.2.0 - resolution: "tar-stream@npm:2.2.0" - dependencies: - bl: "npm:^4.0.3" - end-of-stream: "npm:^1.4.1" - fs-constants: "npm:^1.0.0" - inherits: "npm:^2.0.3" - readable-stream: "npm:^3.1.1" - checksum: 10c0/2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692 - languageName: node - linkType: hard - "tar@npm:^6.1.11, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" @@ -5009,12 +4738,10 @@ __metadata: dependencies: "@elastic/elasticsearch": "npm:8.15.0" "@types/benchmark": "npm:2.1.5" - "@types/better-sqlite3": "npm:7.6.11" "@types/jest": "npm:29.5.12" "@types/node": "npm:22.5.5" "@types/pg": "npm:8.11.10" benchmark: "npm:2.1.4" - better-sqlite3: "npm:11.3.0" commander: "npm:12.1.0" dotenv: "npm:16.4.5" drizzle-kit: "npm:0.22.8" @@ -5122,15 +4849,6 @@ __metadata: languageName: node linkType: hard -"tunnel-agent@npm:^0.6.0": - version: 0.6.0 - resolution: "tunnel-agent@npm:0.6.0" - dependencies: - safe-buffer: "npm:^5.0.1" - checksum: 10c0/4c7a1b813e7beae66fdbf567a65ec6d46313643753d0beefb3c7973d66fcec3a1e7f39759f0a0b4465883499c6dc8b0750ab8b287399af2e583823e40410a17a - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8"