using System.ComponentModel.DataAnnotations.Schema; namespace Oqtane.Models { /// /// An Alias maps a url like `oqtane.my` or `oqtane.my/products` to a and /// public class Alias : ModelBase { /// /// The primary ID for internal use. It's also used in API calls to identify the site. /// public int AliasId { get; set; } /// /// The Alias Name = URL. /// The Name contains the entire path - so it can be `oqtane.me`, `www.oqtane.me` or `oqtane.me/products` /// public string Name { get; set; } /// /// The Tenant this Alias (and the Site) references. /// It's important, as anything related to the Alias must be requested from a database, which is found by the Tenant it's in. /// public int TenantId { get; set; } /// /// The Site this Alias references. /// public int SiteId { get; set; } /// /// Specifies if the alias is the default for the tenant/site. Requests for non-default aliases are redirected to the default alias. /// public bool IsDefault { get; set; } /// /// The path contains the url-part after the first slash. /// * If the Name is `oqtane.me` the Path is empty /// * if the Name is `oqtane.me/products` the Path is `products` /// [NotMapped] public string Path { get { if (Name != null && Name.Contains("/")) { return Name.Substring(Name.IndexOf("/") + 1); } else { return ""; } } } /// /// Unique key used for identifying a site within a runtime process (ie. cache, file system, etc...) /// [NotMapped] public string SiteKey { get { return TenantId.ToString() + ":" + SiteId.ToString(); } } /// /// Protocol for the request from which the alias was resolved (ie. http or https ) /// [NotMapped] public string Protocol { get; set; } = "https"; // default value /// /// Base Url for static resources (note that this will only be set for remote clients) /// [NotMapped] public string BaseUrl { get; set; } } }