feat: 打通出库作业链路
This commit is contained in:
70
tools/mcp/sqlserver-mcp-server/dist/config.js
vendored
Normal file
70
tools/mcp/sqlserver-mcp-server/dist/config.js
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
export function loadConfig(env = process.env) {
|
||||
const serverName = requireEnv(env, "SERVER_NAME");
|
||||
const databases = parseList(env.DATABASES);
|
||||
const defaultDatabase = (env.DATABASE_NAME?.trim() || databases[0] || "").trim();
|
||||
if (!defaultDatabase) {
|
||||
throw new Error("DATABASE_NAME or DATABASES must be configured.");
|
||||
}
|
||||
const allowedDatabases = mergeUnique([defaultDatabase, ...databases]);
|
||||
return {
|
||||
serverName,
|
||||
defaultDatabase,
|
||||
allowedDatabases,
|
||||
user: optional(env.DB_USER),
|
||||
password: optional(env.DB_PASSWORD),
|
||||
readOnly: parseBoolean(env.READONLY, false),
|
||||
enableDdl: parseBoolean(env.ENABLE_DDL, false),
|
||||
encrypt: parseBoolean(env.DB_ENCRYPT ?? env.ENCRYPT, false),
|
||||
trustServerCertificate: parseBoolean(env.TRUST_SERVER_CERTIFICATE, false),
|
||||
connectionTimeoutMs: parsePositiveInt(env.CONNECTION_TIMEOUT, 30) * 1000,
|
||||
requestTimeoutMs: parsePositiveInt(env.QUERY_TIMEOUT_MS, 30000),
|
||||
maxRows: parsePositiveInt(env.MAX_ROWS, 1000),
|
||||
maxWriteRows: parsePositiveInt(env.MAX_WRITE_ROWS, 100)
|
||||
};
|
||||
}
|
||||
function requireEnv(env, name) {
|
||||
const value = env[name]?.trim();
|
||||
if (!value) {
|
||||
throw new Error(`${name} must be configured.`);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
function optional(value) {
|
||||
const trimmed = value?.trim();
|
||||
return trimmed ? trimmed : undefined;
|
||||
}
|
||||
function parseList(value) {
|
||||
return (value ?? "")
|
||||
.split(",")
|
||||
.map((item) => item.trim())
|
||||
.filter(Boolean);
|
||||
}
|
||||
function parseBoolean(value, fallback) {
|
||||
if (value === undefined || value.trim() === "") {
|
||||
return fallback;
|
||||
}
|
||||
return ["1", "true", "yes", "y", "on"].includes(value.trim().toLowerCase());
|
||||
}
|
||||
function parsePositiveInt(value, fallback) {
|
||||
if (value === undefined || value.trim() === "") {
|
||||
return fallback;
|
||||
}
|
||||
const parsed = Number.parseInt(value, 10);
|
||||
if (!Number.isFinite(parsed) || parsed <= 0) {
|
||||
throw new Error(`Expected a positive integer but received '${value}'.`);
|
||||
}
|
||||
return parsed;
|
||||
}
|
||||
function mergeUnique(values) {
|
||||
const seen = new Set();
|
||||
const result = [];
|
||||
for (const value of values) {
|
||||
const key = value.toLowerCase();
|
||||
if (!seen.has(key)) {
|
||||
seen.add(key);
|
||||
result.push(value);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
//# sourceMappingURL=config.js.map
|
||||
Reference in New Issue
Block a user