sozsoft-platform/api/modules/Sozsoft.Mcp/Sozsoft.Mcp.Application/McpCatalogQueries.cs

48 lines
1.7 KiB
C#
Raw Normal View History

2026-09-10 14:40:43 +00:00
namespace Sozsoft.Mcp;
/// <summary>
/// Kayitli nesneleri listelemek icin kullanilan katalog sorgulari. Parametre almazlar;
/// sabit metin oldugu icin string birlestirme riski yoktur.
/// </summary>
internal static class McpCatalogQueries
{
public const string SqlServer = """
SELECT
SCHEMA_NAME(o.schema_id) AS SchemaName,
o.name AS ObjectName,
CASE o.type
WHEN 'V' THEN 'VIEW'
WHEN 'P' THEN 'PROCEDURE'
WHEN 'IF' THEN 'TABLE_FUNCTION'
WHEN 'TF' THEN 'TABLE_FUNCTION'
WHEN 'FN' THEN 'SCALAR_FUNCTION'
END AS ObjectKind
FROM sys.objects o
WHERE o.is_ms_shipped = 0
AND o.type IN ('V', 'P', 'IF', 'TF', 'FN')
ORDER BY SchemaName, ObjectName
""";
public const string Postgres = """
SELECT n.nspname AS "SchemaName",
c.relname AS "ObjectName",
'VIEW' AS "ObjectKind"
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('v', 'm')
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
UNION ALL
SELECT n.nspname AS "SchemaName",
p.proname AS "ObjectName",
CASE
WHEN p.prokind = 'p' THEN 'PROCEDURE'
WHEN p.proretset THEN 'TABLE_FUNCTION'
ELSE 'SCALAR_FUNCTION'
END AS "ObjectKind"
FROM pg_proc p
JOIN pg_namespace n ON n.oid = p.pronamespace
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY 1, 2
""";
}