@namespace Oqtane.Modules.Admin.Sql @inherits ModuleBase @inject NavigationManager NavigationManager @inject ITenantService TenantService @inject IDatabaseService DatabaseService @inject ISqlService SqlService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer @if (_tenants == null) {

@SharedLocalizer["Loading"]

} else {
@if (_tenantid != "-1") {
}



@if (!string.IsNullOrEmpty(_results)) { @((MarkupString)_results)

} } @code { private List _tenants; private string _tenantid = "-1"; private string _database = string.Empty; private string _connectionstring = string.Empty; private string _sql = string.Empty; private string _results = string.Empty; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; protected override async Task OnInitializedAsync() { try { _tenants = await TenantService.GetTenantsAsync(); } catch (Exception ex) { await logger.LogError(ex, "Error Loading Tenants {Error}", ex.Message); AddModuleMessage(ex.Message, MessageType.Error); } } private async void TenantChanged(ChangeEventArgs e) { try { _tenantid = (string)e.Value; var tenants = await TenantService.GetTenantsAsync(); var _databases = await DatabaseService.GetDatabasesAsync(); var tenant = tenants.Find(item => item.TenantId == int.Parse(_tenantid)); if (tenant != null) { _database = _databases.Find(item => item.DBType == tenant.DBType)?.Name; _connectionstring = tenant.DBConnectionString; } StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Loading Tenant {TenantId} {Error}", _tenantid, ex.Message); AddModuleMessage(ex.Message, MessageType.Error); } } private async Task Execute() { try { if (_tenantid != "-1" && !string.IsNullOrEmpty(_sql)) { var sqlquery = new SqlQuery { TenantId = int.Parse(_tenantid), Query = _sql }; sqlquery = await SqlService.ExecuteQueryAsync(sqlquery); _results = DisplayResults(sqlquery.Results); AddModuleMessage(Localizer["Success.QueryExecuted"], MessageType.Success); } else { AddModuleMessage(Localizer["Message.Required.Tenant"], MessageType.Warning); } } catch (Exception ex) { await logger.LogError(ex, "Error Executing SQL Query {SQL} {Error}", _sql, ex.Message); AddModuleMessage(ex.Message, MessageType.Error); } } private string DisplayResults(List> results) { var table = string.Empty; foreach (Dictionary item in results) { if (table == string.Empty) { table = "
"; table += ""; foreach (KeyValuePair kvp in item) { table += ""; } table += ""; } table += ""; foreach (KeyValuePair kvp in item) { table += ""; } table += ""; } if (table != string.Empty) { table += "
" + kvp.Key + "
" + kvp.Value + "
"; } else { table = Localizer["Return.NoResult"]; } return table; } }