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.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
+12 -12
View File
@@ -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)')
@@ -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 safelink from './002-safelink.js'
export default {
'001': init,
'002': safelink,
}