UNPKG

forge-sql-orm

Version:

Drizzle ORM integration for Forge-SQL in Atlassian Forge applications.

186 lines (179 loc) 4.76 kB
import { bigint, mysqlTable, timestamp, varchar } from "drizzle-orm/mysql-core"; import { Table } from "drizzle-orm"; import { sql } from "@forge/sql"; export const migrations = mysqlTable("__migrations", { id: bigint("id", { mode: "number" }).primaryKey().autoincrement(), name: varchar("name", { length: 255 }).notNull(), migratedAt: timestamp("migratedAt").defaultNow().notNull(), }); export interface ExplainAnalyzeRow { id: string; estRows?: string; estCost?: string; actRows?: string; task?: string; accessObject?: string; executionInfo?: string; operatorInfo?: string; memory?: string; disk?: string; } export interface SlowQueryNormalized { time: string; txnStartTs: number; user: string; host: string; connId: number; db: string; query: string; digest: string; queryTime: number; compileTime: number; optimizeTime: number; processTime: number; waitTime: number; parseTime: number; rewriteTime: number; copTime: number; copProcAvg: number; copProcMax: number; copProcP90: number; copProcAddr: string; copWaitAvg: number; copWaitMax: number; copWaitP90: number; copWaitAddr: string; memMax: number; diskMax: number; totalKeys: number; processKeys: number; requestCount: number; kvTotal: number; pdTotal: number; resultRows: number; rocksdbBlockCacheHitCount: number; rocksdbBlockReadCount: number; rocksdbBlockReadByte: number; plan: string; parsedPlan?: ExplainAnalyzeRow[]; binaryPlan: string; planDigest: string; } export interface ClusterStatementRowCamelCase { instance: string; summaryBeginTime: string; summaryEndTime: string; stmtType: string; schemaName: string; digest: string; digestText: string; tableNames: string; indexNames: string | null; sampleUser: string; execCount: number; sumErrors: number; sumWarnings: number; sumLatency: number; maxLatency: number; minLatency: number; avgLatency: number; avgParseLatency: number; maxParseLatency: number; avgCompileLatency: number; maxCompileLatency: number; sumCopTaskNum: number; maxCopProcessTime: number; maxCopProcessAddress: string; maxCopWaitTime: number; maxCopWaitAddress: string; avgProcessTime: number; maxProcessTime: number; avgWaitTime: number; maxWaitTime: number; avgBackoffTime: number; maxBackoffTime: number; avgTotalKeys: number; maxTotalKeys: number; avgProcessedKeys: number; maxProcessedKeys: number; avgRocksdbDeleteSkippedCount: number; maxRocksdbDeleteSkippedCount: number; avgRocksdbKeySkippedCount: number; maxRocksdbKeySkippedCount: number; avgRocksdbBlockCacheHitCount: number; maxRocksdbBlockCacheHitCount: number; avgRocksdbBlockReadCount: number; maxRocksdbBlockReadCount: number; avgRocksdbBlockReadByte: number; maxRocksdbBlockReadByte: number; avgPrewriteTime: number; maxPrewriteTime: number; avgCommitTime: number; maxCommitTime: number; avgGetCommitTsTime: number; maxGetCommitTsTime: number; avgCommitBackoffTime: number; maxCommitBackoffTime: number; avgResolveLockTime: number; maxResolveLockTime: number; avgLocalLatchWaitTime: number; maxLocalLatchWaitTime: number; avgWriteKeys: number; maxWriteKeys: number; avgWriteSize: number; maxWriteSize: number; avgPrewriteRegions: number; maxPrewriteRegions: number; avgTxnRetry: number; maxTxnRetry: number; sumExecRetry: number; sumExecRetryTime: number; sumBackoffTimes: number; backoffTypes: string | null; avgMem: number; maxMem: number; avgDisk: number; maxDisk: number; avgKvTime: number; avgPdTime: number; avgBackoffTotalTime: number; avgWriteSqlRespTime: number; avgTidbCpuTime: number; avgTikvCpuTime: number; maxResultRows: number; minResultRows: number; avgResultRows: number; prepared: number; avgAffectedRows: number; firstSeen: string; lastSeen: string; planInCache: number; planCacheHits: number; planInBinding: number; querySampleText: string; prevSampleText: string; planDigest: string; plan: string; binaryPlan: string; charset: string; collation: string; planHint: string; maxRequestUnitRead: number; avgRequestUnitRead: number; maxRequestUnitWrite: number; avgRequestUnitWrite: number; maxQueuedRcTime: number; avgQueuedRcTime: number; resourceGroup: string; planCacheUnqualified: number; planCacheUnqualifiedLastReason: string; parsedPlan?: ExplainAnalyzeRow[]; } /** * Retrieves all tables from the database */ export async function getTables(): Promise<string[]> { const tables = await sql.executeDDL<string>("SHOW TABLES"); return tables.rows.flatMap((tableInfo) => Object.values(tableInfo)); } export const forgeSystemTables: Table[] = [migrations];