@using Newtonsoft.Json.Linq
@using Rms.Risk.Mango.Components.JForms
@inherits CmdBase
@attribute [MongoCommand(CmdType.Read, "List databases", "Informational")]
@if (Parameters != null)
@*
* dbMango
*
* Copyright 2025 Deutsche Bank AG
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*@
{
}
@code {
private readonly TemplateRec _template = new()
{
Parameters =
[
]
};
protected override string CommandTemplate => @"{
""listDatabases"" : 1
}";
private class ResultItem
{
public string Name { get; set; } = string.Empty;
public long Size { get; set; }
public bool IsEmpty { get; set; }
}
protected override void OnAfterRender(bool firstRender)
{
if (!firstRender)
return;
if (Parameters != null)
{
Parameters.RequiredConnectionType = CommandParams.DatabaseConnectionType.Admin;
Parameters.NeedConfirmation = false;
}
}
private IReadOnlyCollection GetParsedResult()
{
var list = new List();
if (Result == null)
return list;
var res = JsonUtils.FromJson(Result);
if (res == null)
return list;
var databases = res["databases"]?.Value();
if (databases == null)
return list;
foreach (var doc in databases)
{
var name = doc["name"]?.Value() ?? "???";
var size = doc["sizeOnDisk"]?.Value() ?? 0L;
var isEmpty = doc["empty"]?.Value() ?? true;
list.Add(new()
{
Name = name,
Size = size,
IsEmpty = isEmpty
});
}
return list;
}
}