From 453849b6aa54b7b5c6e4bfb434f2d82e72ce3282 Mon Sep 17 00:00:00 2001 From: Jonah Snider Date: Mon, 3 Jun 2024 18:02:41 -0700 Subject: [PATCH] feat(api): update Drizzle Kit and ORM, start using hash indexes --- apps/api/package.json | 2 +- apps/api/src/db/schema.ts | 7 +- bun.lockb | Bin 458916 -> 449028 bytes drizzle.config.ts | 4 +- drizzle/0001_flawless_maria_hill.sql | 8 ++ drizzle/meta/0000_snapshot.json | 78 ++++++++---- drizzle/meta/0001_snapshot.json | 179 +++++++++++++++++++++++++++ drizzle/meta/_journal.json | 31 +++-- package.json | 4 +- 9 files changed, 271 insertions(+), 42 deletions(-) create mode 100644 drizzle/0001_flawless_maria_hill.sql create mode 100644 drizzle/meta/0001_snapshot.json diff --git a/apps/api/package.json b/apps/api/package.json index 7a21c842e..b2bbd6c50 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -23,7 +23,7 @@ "@trpc/server": "next", "cors": "2.8.5", "devalue": "4.3.2", - "drizzle-orm": "0.30.2", + "drizzle-orm": "0.31.0", "envalid": "8.0.0", "googleapis": "134.0.0", "ioredis": "5.3.2", diff --git a/apps/api/src/db/schema.ts b/apps/api/src/db/schema.ts index c3fe1f21b..e41fe8f42 100644 --- a/apps/api/src/db/schema.ts +++ b/apps/api/src/db/schema.ts @@ -1,4 +1,3 @@ -import { sql } from 'drizzle-orm'; import { boolean, index, pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core'; export const blockedHostnames = pgTable('blocked_hostnames', { @@ -20,9 +19,9 @@ export const urls = pgTable( }, (urls) => ({ // prettier-ignore - blockedIdx: index().on(urls.blocked).using(sql`hash`), + blockedIdx: index().using('hash', urls.blocked), // prettier-ignore - urlIdx: index().on(urls.url).using(sql`hash`), + urlIdx: index().using('hash', urls.url), }), ); @@ -37,7 +36,7 @@ export const visits = pgTable( }, (visits) => ({ // prettier-ignore - urlShortBase64Idx: index().on(visits.urlShortBase64).using(sql`hash`), + urlShortBase64Idx: index().using('hash', visits.urlShortBase64), timestampIdx: index().on(visits.timestamp), }), ); diff --git a/bun.lockb b/bun.lockb index 4085581c126415fd4af7d362da1b37f994430f4c..c33f1bcd33b06a8eca61c11dc953ff22c553f0d6 100755 GIT binary patch delta 87308 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 IpHr;<4`_PBqW}N^ diff --git a/drizzle.config.ts b/drizzle.config.ts index 37674936f..fdf9674b9 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -9,9 +9,9 @@ const env = cleanEnv(process.env, { // biome-ignore lint/style/noDefaultExport: This must be a default export export default { schema: 'apps/api/src/db/schema.ts', - driver: 'pg', + dialect: 'postgresql', dbCredentials: { - connectionString: env.DATABASE_URL, + url: env.DATABASE_URL, }, out: 'drizzle', } satisfies Config; diff --git a/drizzle/0001_flawless_maria_hill.sql b/drizzle/0001_flawless_maria_hill.sql new file mode 100644 index 000000000..350628f7e --- /dev/null +++ b/drizzle/0001_flawless_maria_hill.sql @@ -0,0 +1,8 @@ +DROP INDEX IF EXISTS "urls_blocked_index";--> statement-breakpoint +DROP INDEX IF EXISTS "urls_url_index";--> statement-breakpoint +DROP INDEX IF EXISTS "visits_url_short_base64_index";--> statement-breakpoint +DROP INDEX IF EXISTS "visits_timestamp_index";--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "urls_blocked_index" ON "urls" USING hash (blocked);--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "urls_url_index" ON "urls" USING hash (url);--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "visits_url_short_base64_index" ON "visits" USING hash (url_short_base64);--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "visits_timestamp_index" ON "visits" USING btree (timestamp); \ No newline at end of file diff --git a/drizzle/meta/0000_snapshot.json b/drizzle/meta/0000_snapshot.json index ac69f6919..3ea74b791 100644 --- a/drizzle/meta/0000_snapshot.json +++ b/drizzle/meta/0000_snapshot.json @@ -1,10 +1,8 @@ { - "id": "a1a9d125-cfb1-4769-baca-2f88b80c8dc9", - "prevId": "00000000-0000-0000-0000-000000000000", - "version": "5", - "dialect": "pg", + "version": "7", + "dialect": "postgresql", "tables": { - "blocked_hostnames": { + "public.blocked_hostnames": { "name": "blocked_hostnames", "schema": "", "columns": { @@ -27,7 +25,7 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "urls": { + "public.urls": { "name": "urls", "schema": "", "columns": { @@ -60,21 +58,39 @@ }, "indexes": { "urls_blocked_index": { + "columns": [ + { + "expression": "blocked", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], "name": "urls_blocked_index", - "columns": ["blocked"], - "isUnique": false + "isUnique": false, + "method": "btree", + "concurrently": false }, "urls_url_index": { + "columns": [ + { + "expression": "url", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], "name": "urls_url_index", - "columns": ["url"], - "isUnique": false + "isUnique": false, + "method": "btree", + "concurrently": false } }, "foreignKeys": {}, "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "visits": { + "public.visits": { "name": "visits", "schema": "", "columns": { @@ -100,25 +116,43 @@ }, "indexes": { "visits_url_short_base64_index": { + "columns": [ + { + "expression": "url_short_base64", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], "name": "visits_url_short_base64_index", - "columns": ["url_short_base64"], - "isUnique": false + "isUnique": false, + "method": "btree", + "concurrently": false }, "visits_timestamp_index": { + "columns": [ + { + "expression": "timestamp", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], "name": "visits_timestamp_index", - "columns": ["timestamp"], - "isUnique": false + "isUnique": false, + "method": "btree", + "concurrently": false } }, "foreignKeys": { "visits_url_short_base64_urls_short_base64_fk": { "name": "visits_url_short_base64_urls_short_base64_fk", "tableFrom": "visits", - "tableTo": "urls", "columnsFrom": ["url_short_base64"], + "tableTo": "urls", "columnsTo": ["short_base64"], - "onDelete": "cascade", - "onUpdate": "cascade" + "onUpdate": "cascade", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -128,8 +162,10 @@ "enums": {}, "schemas": {}, "_meta": { - "columns": {}, "schemas": {}, - "tables": {} - } + "tables": {}, + "columns": {} + }, + "id": "a1a9d125-cfb1-4769-baca-2f88b80c8dc9", + "prevId": "00000000-0000-0000-0000-000000000000" } diff --git a/drizzle/meta/0001_snapshot.json b/drizzle/meta/0001_snapshot.json new file mode 100644 index 000000000..acb78705c --- /dev/null +++ b/drizzle/meta/0001_snapshot.json @@ -0,0 +1,179 @@ +{ + "id": "5285b7db-7d21-4825-98dc-077f7612ee83", + "prevId": "a1a9d125-cfb1-4769-baca-2f88b80c8dc9", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.blocked_hostnames": { + "name": "blocked_hostnames", + "schema": "", + "columns": { + "hostname": { + "name": "hostname", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.urls": { + "name": "urls", + "schema": "", + "columns": { + "blocked": { + "name": "blocked", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "short_base64": { + "name": "short_base64", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "urls_blocked_index": { + "name": "urls_blocked_index", + "columns": [ + { + "expression": "blocked", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "hash", + "with": {} + }, + "urls_url_index": { + "name": "urls_url_index", + "columns": [ + { + "expression": "url", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "hash", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.visits": { + "name": "visits", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "url_short_base64": { + "name": "url_short_base64", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "visits_url_short_base64_index": { + "name": "visits_url_short_base64_index", + "columns": [ + { + "expression": "url_short_base64", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "hash", + "with": {} + }, + "visits_timestamp_index": { + "name": "visits_timestamp_index", + "columns": [ + { + "expression": "timestamp", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "visits_url_short_base64_urls_short_base64_fk": { + "name": "visits_url_short_base64_urls_short_base64_fk", + "tableFrom": "visits", + "tableTo": "urls", + "columnsFrom": [ + "url_short_base64" + ], + "columnsTo": [ + "short_base64" + ], + "onDelete": "cascade", + "onUpdate": "cascade" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": {}, + "schemas": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index 19a0c2fb1..aa74c103e 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -1,13 +1,20 @@ { - "version": "5", - "dialect": "pg", - "entries": [ - { - "idx": 0, - "version": "5", - "when": 1711606474248, - "tag": "0000_sweet_marvel_apes", - "breakpoints": true - } - ] -} + "version": "5", + "dialect": "pg", + "entries": [ + { + "idx": 0, + "version": "5", + "when": 1711606474248, + "tag": "0000_sweet_marvel_apes", + "breakpoints": true + }, + { + "idx": 1, + "version": "7", + "when": 1717462907814, + "tag": "0001_flawless_maria_hill", + "breakpoints": true + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index 095f76689..abcf83df5 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,12 @@ "lint": "biome check .", "lint:fix": "biome check . --apply-unsafe", "migrate": "bun ./migrate.ts", - "migrate:create": "drizzle-kit generate:pg", + "migrate:create": "drizzle-kit generate", "test": "bun run lint && bun run format && turbo run build type-check", "type-check": "turbo run type-check" }, "dependencies": { - "drizzle-kit": "0.21.4", + "drizzle-kit": "0.22.1", "envalid": "8.0.0", "pg": "8.11.3", "pino": "9.1.0",