From 1e332ed075f3aec5a869784bea68d87b91459c02 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Thu, 1 Feb 2024 09:08:39 -0500 Subject: [PATCH] split RenderMode and Runtime configuration --- Oqtane.Client/Installer/Installer.razor | 5 +- Oqtane.Client/Modules/Admin/Site/Index.razor | 26 +- Oqtane.Client/Modules/Admin/Sites/Add.razor | 248 +++++++++--------- .../Resources/Modules/Admin/Site/Index.resx | 6 + .../Resources/Modules/Admin/Sites/Add.resx | 6 + Oqtane.Client/Resources/SharedResources.resx | 21 +- Oqtane.Client/Routes.razor | 6 +- Oqtane.Client/UI/PageState.cs | 2 +- Oqtane.Client/UI/RenderMode.cs | 10 +- Oqtane.Client/UI/SiteRouter.razor | 6 +- Oqtane.Server/Components/App.razor | 18 +- .../Controllers/InstallationController.cs | 4 +- Oqtane.Server/Controllers/SiteController.cs | 4 +- Oqtane.Server/Controllers/SystemController.cs | 3 +- .../Infrastructure/DatabaseManager.cs | 1 + .../Infrastructure/UpgradeManager.cs | 21 +- .../Tenant/05010004_AddSitePrerender.cs | 4 +- Oqtane.Shared/Enums/Runtime.cs | 4 +- Oqtane.Shared/Models/Site.cs | 9 +- Oqtane.Shared/Shared/InstallConfig.cs | 1 + Oqtane.Shared/Shared/RenderModes.cs | 7 +- Oqtane.Shared/Shared/Runtimes.cs | 8 + 22 files changed, 251 insertions(+), 169 deletions(-) create mode 100644 Oqtane.Shared/Shared/Runtimes.cs diff --git a/Oqtane.Client/Installer/Installer.razor b/Oqtane.Client/Installer/Installer.razor index 2cbc4d44..a37da1d8 100644 --- a/Oqtane.Client/Installer/Installer.razor +++ b/Oqtane.Client/Installer/Installer.razor @@ -261,8 +261,9 @@ SiteName = Constants.DefaultSite, Register = _register, SiteTemplate = _template, - RenderMode = RenderModes.InteractiveServer - }; + RenderMode = RenderModes.Interactive, + Runtime = Runtimes.Server + }; var installation = await InstallationService.Install(config); if (installation.Success) diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index d22d498d..f879f028 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -314,15 +314,24 @@
- @if (_rendermode != RenderModes.StaticServer) + @if (_rendermode == RenderModes.Interactive) { +
+ +
+ +
+
@@ -419,7 +428,8 @@ private int _aliasid = -1; private string _aliasname; private string _defaultalias; - private string _rendermode = RenderModes.InteractiveServer; + private string _rendermode = RenderModes.Interactive; + private string _runtime = Runtimes.Server; private string _prerender = "True"; private string _hybrid = "False"; private string _tenant = string.Empty; @@ -506,6 +516,7 @@ // hosting model _rendermode = site.RenderMode; + _runtime = site.Runtime; _prerender = site.Prerender.ToString(); _hybrid = site.Hybrid.ToString(); @@ -645,9 +656,10 @@ // hosting model if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { - if (site.RenderMode != _rendermode || site.Prerender != bool.Parse(_prerender) || site.Hybrid != bool.Parse(_hybrid)) + if (site.RenderMode != _rendermode || site.Runtime != _runtime || site.Prerender != bool.Parse(_prerender) || site.Hybrid != bool.Parse(_hybrid)) { site.RenderMode = _rendermode; + site.Runtime = _runtime; site.Prerender = bool.Parse(_prerender); site.Hybrid = bool.Parse(_hybrid); reload = true; // needs to be reloaded on serve diff --git a/Oqtane.Client/Modules/Admin/Sites/Add.razor b/Oqtane.Client/Modules/Admin/Sites/Add.razor index 889b496f..e9ee4a1c 100644 --- a/Oqtane.Client/Modules/Admin/Sites/Add.razor +++ b/Oqtane.Client/Modules/Admin/Sites/Add.razor @@ -74,13 +74,25 @@ else
+ @if (_rendermode == RenderModes.Interactive) + { +
+ +
+ +
+
+ }
@@ -194,7 +206,8 @@ else private string _themetype = "-"; private string _containertype = "-"; private string _sitetemplatetype = "-"; - private string _rendermode = RenderModes.InteractiveServer; + private string _rendermode = RenderModes.Interactive; + private string _runtime = Runtimes.Server; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; @@ -220,137 +233,137 @@ else _sitetemplatetype = Constants.DefaultSiteTemplate; } - _databases = await DatabaseService.GetDatabasesAsync(); - if (_databases.Exists(item => item.IsDefault)) - { - _databaseName = _databases.Find(item => item.IsDefault).Name; - } - else - { - _databaseName = "LocalDB"; - } - LoadDatabaseConfigComponent(); - } + _databases = await DatabaseService.GetDatabasesAsync(); + if (_databases.Exists(item => item.IsDefault)) + { + _databaseName = _databases.Find(item => item.IsDefault).Name; + } + else + { + _databaseName = "LocalDB"; + } + LoadDatabaseConfigComponent(); + } - private void DatabaseChanged(ChangeEventArgs eventArgs) - { - try - { - _databaseName = (string)eventArgs.Value; - _showConnectionString = false; - LoadDatabaseConfigComponent(); - } - catch - { - AddModuleMessage(Localizer["Error.Database.LoadConfig"], MessageType.Error); - } - } + private void DatabaseChanged(ChangeEventArgs eventArgs) + { + try + { + _databaseName = (string)eventArgs.Value; + _showConnectionString = false; + LoadDatabaseConfigComponent(); + } + catch + { + AddModuleMessage(Localizer["Error.Database.LoadConfig"], MessageType.Error); + } + } - private void LoadDatabaseConfigComponent() - { - var database = _databases.SingleOrDefault(d => d.Name == _databaseName); - if (database != null) - { - _databaseConfigType = Type.GetType(database.ControlType); - DatabaseConfigComponent = builder => - { - builder.OpenComponent(0, _databaseConfigType); - builder.AddComponentReferenceCapture(1, inst => { _databaseConfig = Convert.ChangeType(inst, _databaseConfigType); }); - builder.CloseComponent(); - }; - } - } + private void LoadDatabaseConfigComponent() + { + var database = _databases.SingleOrDefault(d => d.Name == _databaseName); + if (database != null) + { + _databaseConfigType = Type.GetType(database.ControlType); + DatabaseConfigComponent = builder => + { + builder.OpenComponent(0, _databaseConfigType); + builder.AddComponentReferenceCapture(1, inst => { _databaseConfig = Convert.ChangeType(inst, _databaseConfigType); }); + builder.CloseComponent(); + }; + } + } - private void TenantChanged(ChangeEventArgs e) - { - _tenantid = (string)e.Value; - if (string.IsNullOrEmpty(_tenantName)) - { - _tenantName = _name; - } - StateHasChanged(); - } + private void TenantChanged(ChangeEventArgs e) + { + _tenantid = (string)e.Value; + if (string.IsNullOrEmpty(_tenantName)) + { + _tenantName = _name; + } + StateHasChanged(); + } - private async void ThemeChanged(ChangeEventArgs e) - { - try - { - _themetype = (string)e.Value; - if (_themetype != "-") - { - _containers = ThemeService.GetContainerControls(_themeList, _themetype); + private async void ThemeChanged(ChangeEventArgs e) + { + try + { + _themetype = (string)e.Value; + if (_themetype != "-") + { + _containers = ThemeService.GetContainerControls(_themeList, _themetype); _containertype = _containers.First().TypeName; } - else - { - _containers = new List(); + else + { + _containers = new List(); _containertype = "-"; } - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Containers For Theme {ThemeType} {Error}", _themetype, ex.Message); - AddModuleMessage(Localizer["Error.Theme.LoadContainers"], MessageType.Error); - } - } + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Containers For Theme {ThemeType} {Error}", _themetype, ex.Message); + AddModuleMessage(Localizer["Error.Theme.LoadContainers"], MessageType.Error); + } + } - private async Task SaveSite() - { - validated = true; - var interop = new Interop(JSRuntime); - if (await interop.FormValid(form)) - { - if (_tenantid != "-" && _name != string.Empty && _urls != string.Empty && _themetype != "-" && _containertype != "-" && _sitetemplatetype != "-") - { - _urls = Regex.Replace(_urls, @"\r\n?|\n", ","); - var duplicates = new List(); - var aliases = await AliasService.GetAliasesAsync(); - foreach (string name in _urls.Split(',', StringSplitOptions.RemoveEmptyEntries)) - { - if (aliases.Exists(item => item.Name == name)) - { - duplicates.Add(name); - } - } + private async Task SaveSite() + { + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) + { + if (_tenantid != "-" && _name != string.Empty && _urls != string.Empty && _themetype != "-" && _containertype != "-" && _sitetemplatetype != "-") + { + _urls = Regex.Replace(_urls, @"\r\n?|\n", ","); + var duplicates = new List(); + var aliases = await AliasService.GetAliasesAsync(); + foreach (string name in _urls.Split(',', StringSplitOptions.RemoveEmptyEntries)) + { + if (aliases.Exists(item => item.Name == name)) + { + duplicates.Add(name); + } + } - if (duplicates.Count == 0) - { - InstallConfig config = new InstallConfig(); + if (duplicates.Count == 0) + { + InstallConfig config = new InstallConfig(); - if (_tenantid == "+") - { - if (!string.IsNullOrEmpty(_tenantName) && !_tenants.Exists(item => item.Name == _tenantName)) - { - // validate host credentials - var user = new User(); - user.SiteId = PageState.Site.SiteId; - user.Username = _hostusername; - user.Password = _hostpassword; - user.LastIPAddress = PageState.RemoteIPAddress; - user = await UserService.LoginUserAsync(user, false, false); + if (_tenantid == "+") + { + if (!string.IsNullOrEmpty(_tenantName) && !_tenants.Exists(item => item.Name == _tenantName)) + { + // validate host credentials + var user = new User(); + user.SiteId = PageState.Site.SiteId; + user.Username = _hostusername; + user.Password = _hostpassword; + user.LastIPAddress = PageState.RemoteIPAddress; + user = await UserService.LoginUserAsync(user, false, false); if (user.IsAuthenticated) { - var database = _databases.SingleOrDefault(d => d.Name == _databaseName); - var connectionString = String.Empty; - if (_showConnectionString) - { - connectionString = _connectionString; - } - else - { - if (_databaseConfig is IDatabaseConfigControl databaseConfigControl) - { - connectionString = databaseConfigControl.GetConnectionString(); - } - } + var database = _databases.SingleOrDefault(d => d.Name == _databaseName); + var connectionString = String.Empty; + if (_showConnectionString) + { + connectionString = _connectionString; + } + else + { + if (_databaseConfig is IDatabaseConfigControl databaseConfigControl) + { + connectionString = databaseConfigControl.GetConnectionString(); + } + } if (connectionString != "") { config.TenantName = _tenantName; config.DatabaseType = database.DBType; config.ConnectionString = connectionString; - config.HostUsername = _hostusername; + config.HostUsername = _hostusername; config.HostPassword = _hostpassword; config.HostEmail = user.Email; config.HostName = user.DisplayName; @@ -392,6 +405,7 @@ else config.DefaultAdminContainer = ""; config.SiteTemplate = _sitetemplatetype; config.RenderMode = _rendermode; + config.Runtime = _runtime; ShowProgressIndicator(); diff --git a/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx index 65a918e7..1e4609a7 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx @@ -423,4 +423,10 @@ Hybrid Enabled? + + The interactive render mode for the site + + + Interactivity: + \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/Sites/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Sites/Add.resx index 903dc147..64f8fb7c 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Sites/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Sites/Add.resx @@ -246,4 +246,10 @@ Enter Connection String + + The interactive render mode for the site + + + Interactivity: + \ No newline at end of file diff --git a/Oqtane.Client/Resources/SharedResources.resx b/Oqtane.Client/Resources/SharedResources.resx index 464732c4..cc721f5b 100644 --- a/Oqtane.Client/Resources/SharedResources.resx +++ b/Oqtane.Client/Resources/SharedResources.resx @@ -312,11 +312,11 @@ Not Specified - - Interactive Server Rendering + + Server Rendering - - Interactive WebAssembly Rendering + + WebAssembly Rendering Static Server Rendering @@ -441,7 +441,16 @@ Effective Date cannot be after Expiry Date. - - Interactive Auto Rendering + + Auto Rendering + + + Headless API (No Rendering) + + + Global Interactivity + + + Static Server Rendering \ No newline at end of file diff --git a/Oqtane.Client/Routes.razor b/Oqtane.Client/Routes.razor index fa1d4e8d..16c99c52 100644 --- a/Oqtane.Client/Routes.razor +++ b/Oqtane.Client/Routes.razor @@ -16,7 +16,7 @@
- +
@@ -35,10 +35,10 @@ public string AntiForgeryToken { get; set; } [Parameter] - public string Runtime { get; set; } + public string RenderMode { get; set; } [Parameter] - public string RenderMode { get; set; } + public string Runtime { get; set; } [Parameter] public int VisitorId { get; set; } diff --git a/Oqtane.Client/UI/PageState.cs b/Oqtane.Client/UI/PageState.cs index c9025622..7d8a5958 100644 --- a/Oqtane.Client/UI/PageState.cs +++ b/Oqtane.Client/UI/PageState.cs @@ -18,8 +18,8 @@ namespace Oqtane.UI public string Action { get; set; } public bool EditMode { get; set; } public DateTime LastSyncDate { get; set; } - public Shared.Runtime Runtime { get; set; } public string RenderMode { get; set; } + public Shared.Runtime Runtime { get; set; } public int VisitorId { get; set; } public string RemoteIPAddress { get; set; } public string ReturnUrl { get; set; } diff --git a/Oqtane.Client/UI/RenderMode.cs b/Oqtane.Client/UI/RenderMode.cs index fa41f3c1..c9cd3557 100644 --- a/Oqtane.Client/UI/RenderMode.cs +++ b/Oqtane.Client/UI/RenderMode.cs @@ -6,15 +6,15 @@ namespace Oqtane.UI { public static class RenderMode { - public static IComponentRenderMode GetInteractiveRenderMode(string interactiveRenderMode, bool prerender) + public static IComponentRenderMode GetInteractiveRenderMode(string runtime, bool prerender) { - switch (interactiveRenderMode) + switch (runtime) { - case RenderModes.InteractiveServer: + case Runtimes.Server: return new InteractiveServerRenderMode(prerender); - case RenderModes.InteractiveWebAssembly: + case Runtimes.WebAssembly: return new InteractiveWebAssemblyRenderMode(prerender); - case RenderModes.InteractiveAuto: + case Runtimes.Auto: return new InteractiveAutoRenderMode(prerender); } return null; diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index 3be45858..a378e637 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -30,10 +30,10 @@ private string _error = ""; [Parameter] - public string Runtime { get; set; } + public string RenderMode { get; set; } [Parameter] - public string RenderMode { get; set; } + public string Runtime { get; set; } [Parameter] public int VisitorId { get; set; } @@ -291,8 +291,8 @@ Action = action, EditMode = editmode, LastSyncDate = lastsyncdate, - Runtime = (Shared.Runtime)Enum.Parse(typeof(Shared.Runtime), Runtime), RenderMode = RenderMode, + Runtime = (Shared.Runtime)Enum.Parse(typeof(Shared.Runtime), Runtime), VisitorId = VisitorId, RemoteIPAddress = SiteState.RemoteIPAddress, ReturnUrl = returnurl, diff --git a/Oqtane.Server/Components/App.razor b/Oqtane.Server/Components/App.razor index 6770c849..f7526324 100644 --- a/Oqtane.Server/Components/App.razor +++ b/Oqtane.Server/Components/App.razor @@ -47,26 +47,26 @@ @((MarkupString)_styleSheets) - @if (_renderMode == RenderModes.StaticServer) + @if (_renderMode == RenderModes.Static) { } else { - + } @((MarkupString)_headResources) @if (string.IsNullOrEmpty(_message)) { - @if (_renderMode == RenderModes.StaticServer) + @if (_renderMode == RenderModes.Static) { - + } else { - + } @@ -90,7 +90,8 @@ @code { - private string _renderMode = RenderModes.InteractiveServer; + private string _renderMode = RenderModes.Interactive; + private string _runtime = Runtimes.Server; private bool _prerender = true; private int _visitorId = -1; private string _remoteIPAddress = ""; @@ -127,9 +128,10 @@ } var site = SiteRepository.GetSite(alias.SiteId); - if (site != null && (!site.IsDeleted || url.Contains("admin/site"))) + if (site != null && (!site.IsDeleted || url.Contains("admin/site")) && site.RenderMode != RenderModes.Headless) { _renderMode = site.RenderMode; + _runtime = site.Runtime; _prerender = site.Prerender; Route route = new Route(url, alias.Path); @@ -179,7 +181,7 @@ ManageStyleSheets(resources, alias, theme.ThemeName); // scripts - if (_renderMode == RenderModes.InteractiveServer) + if (_renderMode == RenderModes.Interactive && _runtime == Runtimes.Server) { _reconnectScript = CreateReconnectScript(); } diff --git a/Oqtane.Server/Controllers/InstallationController.cs b/Oqtane.Server/Controllers/InstallationController.cs index 39ef38aa..92e5b289 100644 --- a/Oqtane.Server/Controllers/InstallationController.cs +++ b/Oqtane.Server/Controllers/InstallationController.cs @@ -119,7 +119,7 @@ namespace Oqtane.Controllers var assemblyList = new List(); var site = _sites.GetSite(alias.SiteId); - if (site != null && (site.RenderMode == "InteractiveWebAssembly" || site.Hybrid)) + if (site != null && (site.Runtime == Runtimes.WebAssembly || site.Hybrid)) { var binFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); @@ -201,7 +201,7 @@ namespace Oqtane.Controllers private byte[] GetZIP(string list, Alias alias) { var site = _sites.GetSite(alias.SiteId); - if (site != null && (site.RenderMode == "InteractiveWebAssembly" || site.Hybrid)) + if (site != null && (site.Runtime == Runtimes.WebAssembly || site.Hybrid)) { var binFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); diff --git a/Oqtane.Server/Controllers/SiteController.cs b/Oqtane.Server/Controllers/SiteController.cs index daa904c6..81df67bb 100644 --- a/Oqtane.Server/Controllers/SiteController.cs +++ b/Oqtane.Server/Controllers/SiteController.cs @@ -13,8 +13,6 @@ using System.Globalization; using Microsoft.Extensions.Caching.Memory; using Oqtane.Extensions; using System; -using Oqtane.UI; -using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace Oqtane.Controllers { @@ -212,7 +210,7 @@ namespace Oqtane.Controllers site = _sites.UpdateSite(site); _syncManager.AddSyncEvent(_alias.TenantId, EntityNames.Site, site.SiteId, SyncEventActions.Update); string action = SyncEventActions.Refresh; - if (current.RenderMode != site.RenderMode) + if (current.RenderMode != site.RenderMode || current.Runtime != site.Runtime) { action = SyncEventActions.Reload; } diff --git a/Oqtane.Server/Controllers/SystemController.cs b/Oqtane.Server/Controllers/SystemController.cs index d0eacf27..8c0dce62 100644 --- a/Oqtane.Server/Controllers/SystemController.cs +++ b/Oqtane.Server/Controllers/SystemController.cs @@ -46,7 +46,8 @@ namespace Oqtane.Controllers break; case "configuration": systeminfo.Add("InstallationId", _configManager.GetInstallationId()); - systeminfo.Add("RenderMode", _configManager.GetSetting("RenderMode", RenderModes.InteractiveServer)); + systeminfo.Add("RenderMode", _configManager.GetSetting("RenderMode", RenderModes.Interactive)); + systeminfo.Add("Runtime", _configManager.GetSetting("Runtime", Runtimes.Server)); systeminfo.Add("DetailedErrors", _configManager.GetSetting("DetailedErrors", "false")); systeminfo.Add("Logging:LogLevel:Default", _configManager.GetSetting("Logging:LogLevel:Default", "Information")); systeminfo.Add("Logging:LogLevel:Notify", _configManager.GetSetting("Logging:LogLevel:Notify", "Error")); diff --git a/Oqtane.Server/Infrastructure/DatabaseManager.cs b/Oqtane.Server/Infrastructure/DatabaseManager.cs index 18986016..043d7aa2 100644 --- a/Oqtane.Server/Infrastructure/DatabaseManager.cs +++ b/Oqtane.Server/Infrastructure/DatabaseManager.cs @@ -557,6 +557,7 @@ namespace Oqtane.Infrastructure AdminContainerType = (!string.IsNullOrEmpty(install.DefaultAdminContainer)) ? install.DefaultAdminContainer : Constants.DefaultAdminContainer, SiteTemplateType = install.SiteTemplate, RenderMode = (!string.IsNullOrEmpty(install.RenderMode)) ? install.RenderMode : _configManager.GetSection("RenderMode").Value, + Runtime = (!string.IsNullOrEmpty(install.Runtime)) ? install.Runtime : _configManager.GetSection("Runtime").Value, Prerender = true, Hybrid = false }; diff --git a/Oqtane.Server/Infrastructure/UpgradeManager.cs b/Oqtane.Server/Infrastructure/UpgradeManager.cs index 3af4b4b7..a81b5ca0 100644 --- a/Oqtane.Server/Infrastructure/UpgradeManager.cs +++ b/Oqtane.Server/Infrastructure/UpgradeManager.cs @@ -63,6 +63,9 @@ namespace Oqtane.Infrastructure case "3.3.0": Upgrade_3_3_0(tenant, scope); break; + case "5.1.0": + Upgrade_5_1_0(tenant, scope); + break; } } } @@ -111,7 +114,11 @@ namespace Oqtane.Infrastructure _configManager.RemoveSetting("Localization:SupportedCultures", true); if (_configManager.GetSetting("RenderMode", "") == "") { - _configManager.AddOrUpdateSetting("RenderMode", "ServerPrerendered", true); + _configManager.AddOrUpdateSetting("RenderMode", RenderModes.Interactive, true); + } + if (_configManager.GetSetting("Runtime", "") == "") + { + _configManager.AddOrUpdateSetting("Runtime", Runtimes.Server, true); } } } @@ -349,5 +356,17 @@ namespace Oqtane.Infrastructure Debug.WriteLine($"Oqtane Error: Error In 3.3.0 Upgrade Logic - {ex}"); } } + + private void Upgrade_5_1_0(Tenant tenant, IServiceScope scope) + { + if (tenant.Name == TenantNames.Master) + { + var rendermode = _configManager.GetSetting("RenderMode", ""); + if (rendermode.Contains("Prerendered")) + { + _configManager.AddOrUpdateSetting("RenderMode", rendermode.Replace("Prerendered", ""), true); + } + } + } } } diff --git a/Oqtane.Server/Migrations/Tenant/05010004_AddSitePrerender.cs b/Oqtane.Server/Migrations/Tenant/05010004_AddSitePrerender.cs index f0194dfc..997798ca 100644 --- a/Oqtane.Server/Migrations/Tenant/05010004_AddSitePrerender.cs +++ b/Oqtane.Server/Migrations/Tenant/05010004_AddSitePrerender.cs @@ -19,15 +19,13 @@ namespace Oqtane.Migrations.Tenant { var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder, ActiveDatabase); - siteEntityBuilder.UpdateColumn("RenderMode", $"'{RenderModes.InteractiveServer}'"); + siteEntityBuilder.UpdateColumn("RenderMode", $"'{RenderModes.Interactive}'"); siteEntityBuilder.AddBooleanColumn("Prerender", true); siteEntityBuilder.UpdateColumn("Prerender", "1", "bool", ""); siteEntityBuilder.AddBooleanColumn("Hybrid", true); siteEntityBuilder.UpdateColumn("Hybrid", "0", "bool", ""); - - siteEntityBuilder.DropColumn("Runtime"); siteEntityBuilder.DropColumn("HybridEnabled"); } diff --git a/Oqtane.Shared/Enums/Runtime.cs b/Oqtane.Shared/Enums/Runtime.cs index a755b7c1..2043e743 100644 --- a/Oqtane.Shared/Enums/Runtime.cs +++ b/Oqtane.Shared/Enums/Runtime.cs @@ -2,7 +2,9 @@ namespace Oqtane.Shared { public enum Runtime { - Web, + Server, + WebAssembly, + Auto, Hybrid } } diff --git a/Oqtane.Shared/Models/Site.cs b/Oqtane.Shared/Models/Site.cs index fc1109c9..aa2f2900 100644 --- a/Oqtane.Shared/Models/Site.cs +++ b/Oqtane.Shared/Models/Site.cs @@ -69,12 +69,17 @@ namespace Oqtane.Models public string SiteGuid { get; set; } /// - /// The default render mode for the site (ie. Static,InteractiveServer,InteractiveWebAssembly,InteractiveAuto) + /// The default render mode for the site ie. Static,Interactive,Headless /// public string RenderMode { get; set; } /// - /// If the site supports prerendering (only applies to Interactive rendering) + /// The interactive render mode for the site ie. Server,WebAssembly,Auto (only applies to Interactive rendermode) + /// + public string Runtime { get; set; } + + /// + /// If the site supports prerendering (only applies to Interactive rendermode) /// public bool Prerender { get; set; } diff --git a/Oqtane.Shared/Shared/InstallConfig.cs b/Oqtane.Shared/Shared/InstallConfig.cs index e5371867..64747d4f 100644 --- a/Oqtane.Shared/Shared/InstallConfig.cs +++ b/Oqtane.Shared/Shared/InstallConfig.cs @@ -18,6 +18,7 @@ namespace Oqtane.Shared public string DefaultContainer { get; set; } public string DefaultAdminContainer { get; set; } public string RenderMode { get; set; } + public string Runtime { get; set; } public bool Register { get; set; } } } diff --git a/Oqtane.Shared/Shared/RenderModes.cs b/Oqtane.Shared/Shared/RenderModes.cs index bb0aaa88..864cf05c 100644 --- a/Oqtane.Shared/Shared/RenderModes.cs +++ b/Oqtane.Shared/Shared/RenderModes.cs @@ -1,8 +1,7 @@ namespace Oqtane.Shared { public class RenderModes { - public const string StaticServer = "StaticServer"; - public const string InteractiveServer = "InteractiveServer"; - public const string InteractiveWebAssembly = "InteractiveWebAssembly"; - public const string InteractiveAuto = "InteractiveAuto"; + public const string Static = "Static"; + public const string Interactive = "Interactive"; + public const string Headless = "Headless"; } } diff --git a/Oqtane.Shared/Shared/Runtimes.cs b/Oqtane.Shared/Shared/Runtimes.cs new file mode 100644 index 00000000..8ab73d1e --- /dev/null +++ b/Oqtane.Shared/Shared/Runtimes.cs @@ -0,0 +1,8 @@ +namespace Oqtane.Shared { + public class Runtimes { + public const string Server = "Server"; + public const string WebAssembly = "WebAssembly"; + public const string Auto = "Auto"; + public const string Hybrid = "Hybrid"; + } +}