From c770d687ae08a591299e4d9abb6f290ae435344e Mon Sep 17 00:00:00 2001 From: Hailey Date: Sun, 31 Aug 2025 14:08:25 -0700 Subject: [PATCH] add migration: --- bskylink/src/cache/safelinkClient.ts | 7 +++-- bskylink/src/config.ts | 24 +++++++-------- bskylink/src/db/migrations/002-safelink.ts | 35 ++++++++++++++++++++++ bskylink/src/db/migrations/index.ts | 2 ++ 4 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 bskylink/src/db/migrations/002-safelink.ts diff --git a/bskylink/src/cache/safelinkClient.ts b/bskylink/src/cache/safelinkClient.ts index eae0797520..253dae7ccf 100644 --- a/bskylink/src/cache/safelinkClient.ts +++ b/bskylink/src/cache/safelinkClient.ts @@ -32,9 +32,9 @@ export class SafelinkClient { this.db = db this.ozoneAgent = new OzoneAgent( - cfg.ozoneUrl!, - cfg.ozoneAgentHandle!, - cfg.ozoneAgentPass!, + cfg.safelinkPdsUrl!, + cfg.safelinkAgentIdentifier!, + cfg.safelinkAgentPass!, ) } @@ -185,6 +185,7 @@ export class SafelinkClient { return '' } + // @ts-ignore TODO: fix this this.cursor = res.cursor } return this.cursor diff --git a/bskylink/src/config.ts b/bskylink/src/config.ts index c73015ecb3..13a1991bdb 100644 --- a/bskylink/src/config.ts +++ b/bskylink/src/config.ts @@ -11,9 +11,9 @@ export type ServiceConfig = { hostnames: string[] appHostname: string safelinkEnabled: boolean - ozoneUrl?: string - ozoneAgentHandle?: string - ozoneAgentPass?: string + safelinkPdsUrl?: string + safelinkAgentIdentifier?: string + safelinkAgentPass?: string } export type DbConfig = { @@ -41,9 +41,9 @@ export type Environment = { dbPostgresPoolMaxUses?: number dbPostgresPoolIdleTimeoutMs?: number safelinkEnabled?: boolean - ozoneUrl?: string - ozoneAgentHandle?: string - ozoneAgentPass?: string + safelinkPdsUrl?: string + safelinkAgentIdentifier?: string + safelinkAgentPass?: string } export const readEnv = (): Environment => { @@ -61,9 +61,9 @@ export const readEnv = (): Environment => { 'LINK_DB_POSTGRES_POOL_IDLE_TIMEOUT_MS', ), safelinkEnabled: envBool('SAFELINK_ENABLED'), - ozoneUrl: envStr('OZONE_URL'), - ozoneAgentHandle: envStr('OZONE_AGENT_HANDLE'), - ozoneAgentPass: envStr('OZONE_AGENT_PASS'), + safelinkPdsUrl: envStr('SAFELINK_PDS_URL'), + safelinkAgentIdentifier: envStr('SAFELINK_AGENT_IDENTIFIER'), + safelinkAgentPass: envStr('SAFELINK_AGENT_PASS'), } } @@ -74,9 +74,9 @@ export const envToCfg = (env: Environment): Config => { hostnames: env.hostnames, appHostname: env.appHostname ?? 'bsky.app', safelinkEnabled: env.safelinkEnabled ?? false, - ozoneUrl: env.ozoneUrl, - ozoneAgentHandle: env.ozoneAgentHandle, - ozoneAgentPass: env.ozoneAgentPass, + safelinkPdsUrl: env.safelinkPdsUrl, + safelinkAgentIdentifier: env.safelinkAgentIdentifier, + safelinkAgentPass: env.safelinkAgentPass, } if (!env.dbPostgresUrl) { throw new Error('Must configure postgres url (LINK_DB_POSTGRES_URL)') diff --git a/bskylink/src/db/migrations/002-safelink.ts b/bskylink/src/db/migrations/002-safelink.ts new file mode 100644 index 0000000000..c3f035357e --- /dev/null +++ b/bskylink/src/db/migrations/002-safelink.ts @@ -0,0 +1,35 @@ +import {type Kysely} from 'kysely' + +export async function up(db: Kysely): Promise { + await db.schema + .createTable('safelink_rule') + .addColumn('id', 'bigserial', col => col.primaryKey()) + .addColumn('eventType', 'varchar', col => col.notNull()) + .addColumn('url', 'varchar', col => col.notNull()) + .addColumn('pattern', 'varchar', col => col.notNull()) + .addColumn('action', 'varchar', col => col.notNull()) + .addColumn('reason', 'varchar', col => col.notNull()) + .addColumn('createdBy', 'varchar', col => col.notNull()) + .addColumn('createdAt', 'timestamptz', col => col.notNull()) + .addColumn('comment', 'varchar', col => col.notNull()) + .execute() + + await db.schema + .createTable('safelink_cursor') + .addColumn('id', 'bigserial', col => col.primaryKey()) + .addColumn('cursor', 'varchar', col => col.notNull()) + .addColumn('createdAt', 'timestamptz', col => col.notNull()) + .execute() + + await db.schema + .createIndex('safelink_rule_url_pattern_idx') + .on('safelink_rule') + .columns(['url', 'pattern']) + .execute() +} + +export async function down(db: Kysely): Promise { + await db.schema.dropIndex('safelink_rule_url_pattern_idx').execute() + await db.schema.dropTable('safelink_rule').execute() + await db.schema.dropTable('safelink_cursor').execute() +} diff --git a/bskylink/src/db/migrations/index.ts b/bskylink/src/db/migrations/index.ts index 05e4de9377..1f7385ab18 100644 --- a/bskylink/src/db/migrations/index.ts +++ b/bskylink/src/db/migrations/index.ts @@ -1,5 +1,7 @@ import * as init from './001-init.js' +import * as safelink from './002-safelink.js' export default { '001': init, + '002': safelink, }