import { z } from "zod";
import { ToolContext } from "../types.js";
export const tableStatsSchema = {
description: "Obtiene estadísticas de una tabla: número de filas, tamaño en disco, última actualización",
inputSchema: {
table_name: z.string().describe("Nombre de la tabla"),
schema: z.string().optional().describe("Nombre del schema (por defecto: 'public')"),
},
};
export async function tableStatsHandler(
args: { table_name: string; schema?: string },
context: ToolContext
) {
const tableName = args.table_name;
const schema = args.schema || context.defaultSchema;
const result = await context.pool.query(
`SELECT
schemaname,
tablename,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size,
n_live_tup AS row_count,
last_vacuum,
last_autovacuum,
last_analyze,
last_autoanalyze
FROM pg_stat_user_tables
WHERE schemaname = $1 AND tablename = $2`,
[schema, tableName]
);
if (result.rows.length === 0) {
throw new Error(`Tabla ${schema}.${tableName} no encontrada`);
}
return {
content: [
{
type: "text" as const,
text: JSON.stringify(result.rows[0], null, 2),
},
],
};
}