import { db } from "../../../../db/postgre.js";
import define from "../../define.js";
export const meta = {
    requireCredential: true,
    requireModerator: true,
    tags: [
        "admin"
    ],
    res: {
        type: "object",
        optional: false,
        nullable: false,
        example: {
            migrations: {
                count: 66,
                size: 32768
            }
        }
    }
};
export const paramDef = {
    type: "object",
    properties: {},
    required: []
};
export default define(meta, paramDef, async ()=>{
    const sizes = await db.query(`
			SELECT relname AS "table", reltuples as "count", pg_total_relation_size(C.oid) AS "size"
			FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
			WHERE nspname NOT IN ('pg_catalog', 'information_schema')
				AND C.relkind <> 'i'
				AND nspname !~ '^pg_toast';`).then((recs)=>{
        const res = {};
        for (const rec of recs){
            res[rec.table] = {
                count: parseInt(rec.count, 10),
                size: parseInt(rec.size, 10)
            };
        }
        return res;
    });
    return sizes;
});
