add migration:
This commit is contained in:
Vendored
+4
-3
@@ -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
@@ -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()
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user