add migration:

This commit is contained in:
Hailey
2025-08-31 14:08:25 -07:00
parent f3949569c8
commit c770d687ae
4 changed files with 53 additions and 15 deletions
+4 -3
View File
@@ -32,9 +32,9 @@ export class SafelinkClient {
this.db = db this.db = db
this.ozoneAgent = new OzoneAgent( this.ozoneAgent = new OzoneAgent(
cfg.ozoneUrl!, cfg.safelinkPdsUrl!,
cfg.ozoneAgentHandle!, cfg.safelinkAgentIdentifier!,
cfg.ozoneAgentPass!, cfg.safelinkAgentPass!,
) )
} }
@@ -185,6 +185,7 @@ export class SafelinkClient {
return '' return ''
} }
// @ts-ignore TODO: fix this
this.cursor = res.cursor this.cursor = res.cursor
} }
return this.cursor return this.cursor
+12 -12
View File
@@ -11,9 +11,9 @@ export type ServiceConfig = {
hostnames: string[] hostnames: string[]
appHostname: string appHostname: string
safelinkEnabled: boolean safelinkEnabled: boolean
ozoneUrl?: string safelinkPdsUrl?: string
ozoneAgentHandle?: string safelinkAgentIdentifier?: string
ozoneAgentPass?: string safelinkAgentPass?: string
} }
export type DbConfig = { export type DbConfig = {
@@ -41,9 +41,9 @@ export type Environment = {
dbPostgresPoolMaxUses?: number dbPostgresPoolMaxUses?: number
dbPostgresPoolIdleTimeoutMs?: number dbPostgresPoolIdleTimeoutMs?: number
safelinkEnabled?: boolean safelinkEnabled?: boolean
ozoneUrl?: string safelinkPdsUrl?: string
ozoneAgentHandle?: string safelinkAgentIdentifier?: string
ozoneAgentPass?: string safelinkAgentPass?: string
} }
export const readEnv = (): Environment => { export const readEnv = (): Environment => {
@@ -61,9 +61,9 @@ export const readEnv = (): Environment => {
'LINK_DB_POSTGRES_POOL_IDLE_TIMEOUT_MS', 'LINK_DB_POSTGRES_POOL_IDLE_TIMEOUT_MS',
), ),
safelinkEnabled: envBool('SAFELINK_ENABLED'), safelinkEnabled: envBool('SAFELINK_ENABLED'),
ozoneUrl: envStr('OZONE_URL'), safelinkPdsUrl: envStr('SAFELINK_PDS_URL'),
ozoneAgentHandle: envStr('OZONE_AGENT_HANDLE'), safelinkAgentIdentifier: envStr('SAFELINK_AGENT_IDENTIFIER'),
ozoneAgentPass: envStr('OZONE_AGENT_PASS'), safelinkAgentPass: envStr('SAFELINK_AGENT_PASS'),
} }
} }
@@ -74,9 +74,9 @@ export const envToCfg = (env: Environment): Config => {
hostnames: env.hostnames, hostnames: env.hostnames,
appHostname: env.appHostname ?? 'bsky.app', appHostname: env.appHostname ?? 'bsky.app',
safelinkEnabled: env.safelinkEnabled ?? false, safelinkEnabled: env.safelinkEnabled ?? false,
ozoneUrl: env.ozoneUrl, safelinkPdsUrl: env.safelinkPdsUrl,
ozoneAgentHandle: env.ozoneAgentHandle, safelinkAgentIdentifier: env.safelinkAgentIdentifier,
ozoneAgentPass: env.ozoneAgentPass, safelinkAgentPass: env.safelinkAgentPass,
} }
if (!env.dbPostgresUrl) { if (!env.dbPostgresUrl) {
throw new Error('Must configure postgres url (LINK_DB_POSTGRES_URL)') throw new Error('Must configure postgres url (LINK_DB_POSTGRES_URL)')
@@ -0,0 +1,35 @@
import {type Kysely} from 'kysely'
export async function up(db: Kysely<unknown>): Promise<void> {
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<unknown>): Promise<void> {
await db.schema.dropIndex('safelink_rule_url_pattern_idx').execute()
await db.schema.dropTable('safelink_rule').execute()
await db.schema.dropTable('safelink_cursor').execute()
}
+2
View File
@@ -1,5 +1,7 @@
import * as init from './001-init.js' import * as init from './001-init.js'
import * as safelink from './002-safelink.js'
export default { export default {
'001': init, '001': init,
'002': safelink,
} }