77 lines
2.1 KiB
TypeScript
77 lines
2.1 KiB
TypeScript
import { PrismaMssql } from "@prisma/adapter-mssql";
|
|
import { PrismaClient } from "./generated/prisma/client";
|
|
|
|
const connectionString = process.env.DATABASE_URL;
|
|
if (!connectionString) {
|
|
throw new Error("DATABASE_URL is not set.");
|
|
}
|
|
|
|
const prisma = new PrismaClient({
|
|
adapter: new PrismaMssql(connectionString),
|
|
});
|
|
|
|
try {
|
|
const rowSummary = await prisma.$queryRawUnsafe<
|
|
Array<{ total_rows: number; distinct_configs: number }>
|
|
>(`
|
|
SELECT
|
|
COUNT(*) AS total_rows,
|
|
COUNT(DISTINCT Config_RecID) AS distinct_configs
|
|
FROM dbo.Config_User_Defined_Field_Value;
|
|
`);
|
|
|
|
const relatedRowCounts = await prisma.$queryRawUnsafe<
|
|
Array<{
|
|
config_rows: number;
|
|
cs_result_detail_rows: number;
|
|
config_custom_field_nonempty: number;
|
|
}>
|
|
>(`
|
|
SELECT
|
|
(SELECT COUNT(*) FROM dbo.Config) AS config_rows,
|
|
(SELECT COUNT(*) FROM dbo.CS_Result_Detail) AS cs_result_detail_rows,
|
|
(SELECT COUNT(*)
|
|
FROM dbo.Config
|
|
WHERE Custom_Field IS NOT NULL
|
|
AND LEN(LTRIM(RTRIM(CONVERT(nvarchar(max), Custom_Field)))) > 0) AS config_custom_field_nonempty;
|
|
`);
|
|
|
|
const topConfigs = await prisma.$queryRawUnsafe<
|
|
Array<{ config_recid: number; field_count: number }>
|
|
>(`
|
|
SELECT TOP 10
|
|
Config_RecID AS config_recid,
|
|
COUNT(*) AS field_count
|
|
FROM dbo.Config_User_Defined_Field_Value
|
|
GROUP BY Config_RecID
|
|
ORDER BY field_count DESC, config_recid ASC;
|
|
`);
|
|
|
|
const customFieldSamples = await prisma.$queryRawUnsafe<
|
|
Array<{ config_recid: number; custom_field_prefix: string }>
|
|
>(`
|
|
SELECT TOP 5
|
|
Config_RecID AS config_recid,
|
|
LEFT(CONVERT(nvarchar(max), Custom_Field), 250) AS custom_field_prefix
|
|
FROM dbo.Config
|
|
WHERE Custom_Field IS NOT NULL
|
|
AND LEN(LTRIM(RTRIM(CONVERT(nvarchar(max), Custom_Field)))) > 0
|
|
ORDER BY Config_RecID ASC;
|
|
`);
|
|
|
|
console.log(
|
|
JSON.stringify(
|
|
{
|
|
rowSummary: rowSummary[0] ?? null,
|
|
relatedRowCounts: relatedRowCounts[0] ?? null,
|
|
topConfigs,
|
|
customFieldSamples,
|
|
},
|
|
null,
|
|
2,
|
|
),
|
|
);
|
|
} finally {
|
|
await prisma.$disconnect();
|
|
}
|