mirror of
https://github.com/stablyai/orca.git
synced 2026-09-27 08:02:35 +00:00
Phase 6 of the relay split: the relay's deploy/operate surface moves under cloud/ with 24 cloud-* workflows gated on ORCA_CLOUD_OPERATIONS_ENABLED, the Cloud SQL rollout lease action, the relay Terraform root (dual-accept identities for both repositories), scripts, docs, CODEOWNERS, and a terraform validate job in Cloud Verify.
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import type {
|
|
RelayDatabase,
|
|
RelayLockOptions,
|
|
RelayTransactionOptions,
|
|
SqlRow
|
|
} from './database.js'
|
|
import { timedRelayOperation, type RelayRuntimeObserver } from './relay-observability.js'
|
|
|
|
export function observeRelayDatabase(
|
|
database: RelayDatabase,
|
|
observer: RelayRuntimeObserver
|
|
): RelayDatabase {
|
|
const query = (sql: string, params?: unknown[]): Promise<SqlRow[]> =>
|
|
timedRelayOperation(
|
|
() => database.query(sql, params),
|
|
(durationMs, success) => observer.recordSql(durationMs, success)
|
|
)
|
|
const queryLocked = (
|
|
sql: string,
|
|
params?: unknown[],
|
|
options?: RelayLockOptions
|
|
): Promise<SqlRow[]> =>
|
|
timedRelayOperation(
|
|
() => database.queryLocked(sql, params, options),
|
|
(durationMs, success) => observer.recordSql(durationMs, success),
|
|
(error) =>
|
|
// NOWAIT contention is an intentional sweep deferral, not a SQL-health failure.
|
|
options?.failIfUnavailable === true &&
|
|
error instanceof Error &&
|
|
error.message === 'database_lock_unavailable'
|
|
)
|
|
return {
|
|
dialect: database.dialect,
|
|
query,
|
|
queryLocked,
|
|
transaction: async <T>(
|
|
operation: (transaction: RelayDatabase) => Promise<T>,
|
|
options?: RelayTransactionOptions
|
|
): Promise<T> =>
|
|
await database.transaction(
|
|
async (transaction) => await operation(observeRelayDatabase(transaction, observer)),
|
|
options
|
|
),
|
|
close: async () => await database.close()
|
|
}
|
|
}
|