@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 (_results != null) { @if (_results.Count > 0) {
@foreach (KeyValuePair kvp in _results.First()) { @kvp.Key }
@foreach (KeyValuePair kvp in context) { @kvp.Value }
} else { @Localizer["Return.NoResult"] }

} } @code { private List _tenants; private string _tenantid = "-1"; private string _database = string.Empty; private string _connectionstring = string.Empty; private string _sql = string.Empty; private List> _results; 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 = 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); } } }