using System; using System.Collections.Generic; using zero.Core.Database.Indexes; using zero.Core.Entities; namespace zero.Core.Options { public class ZeroOptions : IZeroOptions { public ZeroOptions() { SupportedLanguages = new string[2] { "en-US", "de-DE" }; DefaultLanguage = SupportedLanguages[0]; TokenExpiration = 60 * 3; BackofficePath = "/zero"; ExcludedPaths = new() { }; Raven = new() { CollectionPrefix = String.Empty }; Sections = new(); Features = new(); Pages = new(); Modules = new(); Permissions = new(); Settings = new(); Spaces = new(); Integrations = new(); Icons = new(); Services = new(); Routing = new(); Interceptors = new(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Raven.Indexes.Add(); Search = new(); } /// public bool SetupCompleted => !String.IsNullOrEmpty(Raven?.Database); /// public string ZeroVersion { get; set; } /// public string DefaultLanguage { get; set; } /// public string[] SupportedLanguages { get; private set; } /// public int TokenExpiration { get; set; } /// public RavenOptions Raven { get; set; } /// public string BackofficePath { get; set; } /// /// Paths in the backoffice which are not handled by zero /// public List ExcludedPaths { get; private set; } /// //public IZeroPluginConfiguration Backoffice { get; set; } /// public SectionOptions Sections { get; private set; } /// public FeatureOptions Features { get; private set; } /// public PageOptions Pages { get; private set; } /// public ModuleOptions Modules { get; private set; } /// public PermissionOptions Permissions { get; private set; } /// public SettingsOptions Settings { get; private set; } /// public SpaceOptions Spaces { get; private set; } /// public IntegrationOptions Integrations { get; private set; } /// public IconOptions Icons { get; private set; } /// public ServiceOptions Services { get; private set; } /// public RoutingOptions Routing { get; private set; } /// public InterceptorOptions Interceptors { get; private set; } /// public SearchOptions Search { get; private set; } } public interface IZeroOptions { /// /// Whether the zero setup has already been completed and the instance is ready for use /// bool SetupCompleted { get; } /// /// The currently active version /// This should not be set manually, as it is used for setup and migrations and incremented automatically /// string ZeroVersion { get; set; } /// /// Default language ISO code /// string DefaultLanguage { get; set; } /// /// Language ISO codes which are supported by the zero backoffice /// string[] SupportedLanguages { get; } /// /// Expiration in minutes of a generated change token for an entity /// int TokenExpiration { get; set; } /// /// RavenDB configuration data /// RavenOptions Raven { get; set; } /// /// URL path to the backoffice (defaults to /zero) /// string BackofficePath { get; set; } /// /// Paths in the backoffice which are not handled by zero /// List ExcludedPaths { get; } /// /// /// SectionOptions Sections { get; } /// /// /// FeatureOptions Features { get; } /// /// /// PageOptions Pages { get; } /// /// /// ModuleOptions Modules { get; } /// /// /// PermissionOptions Permissions { get; } /// /// /// SettingsOptions Settings { get; } /// /// /// SpaceOptions Spaces { get; } /// /// /// IntegrationOptions Integrations { get; } /// /// /// IconOptions Icons { get; } /// /// /// ServiceOptions Services { get; } /// /// /// RoutingOptions Routing { get; } /// /// /// InterceptorOptions Interceptors { get; } /// /// /// SearchOptions Search { get; } } }