From e15ed2c5094c903126ac2591e836242f3f116829 Mon Sep 17 00:00:00 2001 From: Ronald Barendse Date: Thu, 10 Jun 2021 15:11:32 +0200 Subject: [PATCH] Update database structure to hierarchical property groups --- .../Install/DatabaseSchemaCreator.cs | 1 - .../Migrations/Upgrade/UmbracoPlan.cs | 8 ++-- .../V_8_13_0/AddPropertyTypeTabsTable.cs | 26 ------------- .../AddPropertyTypeGroupParentIdColumn.cs | 19 ++++++++++ .../Persistence/Constants-DatabaseSchema.cs | 1 - .../Persistence/Dtos/PropertyTypeDto.cs | 5 --- .../Persistence/Dtos/PropertyTypeGroupDto.cs | 12 +++++- .../Persistence/Dtos/PropertyTypeTabDto.cs | 38 ------------------- .../Dtos/PropertyTypeTabReadOnlyDto.cs | 26 ------------- src/Umbraco.Core/Umbraco.Core.csproj | 4 +- 10 files changed, 35 insertions(+), 105 deletions(-) delete mode 100644 src/Umbraco.Core/Migrations/Upgrade/V_8_13_0/AddPropertyTypeTabsTable.cs create mode 100644 src/Umbraco.Core/Migrations/Upgrade/V_8_15_0/AddPropertyTypeGroupParentIdColumn.cs delete mode 100644 src/Umbraco.Core/Persistence/Dtos/PropertyTypeTabDto.cs delete mode 100644 src/Umbraco.Core/Persistence/Dtos/PropertyTypeTabReadOnlyDto.cs diff --git a/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs b/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs index 5bd37e1897..c3756cfaad 100644 --- a/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs +++ b/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs @@ -55,7 +55,6 @@ namespace Umbraco.Core.Migrations.Install typeof (MemberPropertyTypeDto), typeof (MemberDto), typeof (Member2MemberGroupDto), - typeof (PropertyTypeTabDto), typeof (PropertyTypeGroupDto), typeof (PropertyTypeDto), typeof (PropertyDataDto), diff --git a/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs b/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs index fb77487964..b570617cdc 100644 --- a/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs +++ b/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs @@ -9,7 +9,7 @@ using Umbraco.Core.Migrations.Upgrade.V_8_1_0; using Umbraco.Core.Migrations.Upgrade.V_8_6_0; using Umbraco.Core.Migrations.Upgrade.V_8_9_0; using Umbraco.Core.Migrations.Upgrade.V_8_10_0; -using Umbraco.Core.Migrations.Upgrade.V_8_13_0; +using Umbraco.Core.Migrations.Upgrade.V_8_15_0; namespace Umbraco.Core.Migrations.Upgrade { @@ -199,12 +199,12 @@ namespace Umbraco.Core.Migrations.Upgrade // to 8.9.0 To("{B5838FF5-1D22-4F6C-BCEB-F83ACB14B575}"); - + // to 8.10.0 To("{D6A8D863-38EC-44FB-91EC-ACD6A668BD18}"); - // t0 8.13.0 - Guess whos back, back again... TABS is back... tell a friend - To("{153865E9-7332-4C2A-9F9D-F20AEE078EC7}"); + // t0 8.15.0 - Guess whos back, back again... TABS is back... tell a friend + To("{153865E9-7332-4C2A-9F9D-F20AEE078EC7}"); //FINAL } diff --git a/src/Umbraco.Core/Migrations/Upgrade/V_8_13_0/AddPropertyTypeTabsTable.cs b/src/Umbraco.Core/Migrations/Upgrade/V_8_13_0/AddPropertyTypeTabsTable.cs deleted file mode 100644 index 321c66fa5e..0000000000 --- a/src/Umbraco.Core/Migrations/Upgrade/V_8_13_0/AddPropertyTypeTabsTable.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Linq; -using Umbraco.Core.Persistence.Dtos; - -namespace Umbraco.Core.Migrations.Upgrade.V_8_13_0 -{ - public class AddPropertyTypeTabsTable : MigrationBase - { - public AddPropertyTypeTabsTable(IMigrationContext context) - : base(context) - { } - - public override void Migrate() - { - var tables = SqlSyntax.GetTablesInSchema(Context.Database); - if (tables.InvariantContains(Constants.DatabaseSchema.Tables.PropertyTypeTab)) return; - - // A brand new table/DTO for storing Tabs - // and references to Proprty Types/DocTypes/Content Types - Create.Table(true).Do(); - - // Add key reference into the PropertyType Table to our new table - var columns = SqlSyntax.GetColumnsInSchema(Context.Database).ToList(); - AddColumnIfNotExists(columns, "propertyTypeTabId"); - } - } -} diff --git a/src/Umbraco.Core/Migrations/Upgrade/V_8_15_0/AddPropertyTypeGroupParentIdColumn.cs b/src/Umbraco.Core/Migrations/Upgrade/V_8_15_0/AddPropertyTypeGroupParentIdColumn.cs new file mode 100644 index 0000000000..35b2f48c4f --- /dev/null +++ b/src/Umbraco.Core/Migrations/Upgrade/V_8_15_0/AddPropertyTypeGroupParentIdColumn.cs @@ -0,0 +1,19 @@ +using System.Linq; +using Umbraco.Core.Persistence.Dtos; + +namespace Umbraco.Core.Migrations.Upgrade.V_8_15_0 +{ + public class AddPropertyTypeGroupParentIdColumn : MigrationBase + { + public AddPropertyTypeGroupParentIdColumn(IMigrationContext context) + : base(context) + { } + + public override void Migrate() + { + var columns = SqlSyntax.GetColumnsInSchema(Context.Database).ToList(); + + AddColumnIfNotExists(columns, "parentId"); + } + } +} diff --git a/src/Umbraco.Core/Persistence/Constants-DatabaseSchema.cs b/src/Umbraco.Core/Persistence/Constants-DatabaseSchema.cs index 5aedab38c4..8e29c0e946 100644 --- a/src/Umbraco.Core/Persistence/Constants-DatabaseSchema.cs +++ b/src/Umbraco.Core/Persistence/Constants-DatabaseSchema.cs @@ -34,7 +34,6 @@ namespace Umbraco.Core public const string PropertyType = /*TableNamePrefix*/ "cms" + "PropertyType"; public const string PropertyTypeGroup = /*TableNamePrefix*/ "cms" + "PropertyTypeGroup"; - public const string PropertyTypeTab = "cmsPropertyTypeTab"; public const string PropertyData = TableNamePrefix + "PropertyData"; diff --git a/src/Umbraco.Core/Persistence/Dtos/PropertyTypeDto.cs b/src/Umbraco.Core/Persistence/Dtos/PropertyTypeDto.cs index 52f154e08a..f22e4453f4 100644 --- a/src/Umbraco.Core/Persistence/Dtos/PropertyTypeDto.cs +++ b/src/Umbraco.Core/Persistence/Dtos/PropertyTypeDto.cs @@ -27,11 +27,6 @@ namespace Umbraco.Core.Persistence.Dtos [ForeignKey(typeof(PropertyTypeGroupDto))] public int? PropertyTypeGroupId { get; set; } - [Column("propertyTypeTabId")] - [NullSetting(NullSetting = NullSettings.Null)] - [ForeignKey(typeof(PropertyTypeTabDto))] - public int? PropertyTypeTabId { get; set; } - [Index(IndexTypes.NonClustered, Name = "IX_cmsPropertyTypeAlias")] [Column("Alias")] public string Alias { get; set; } diff --git a/src/Umbraco.Core/Persistence/Dtos/PropertyTypeGroupDto.cs b/src/Umbraco.Core/Persistence/Dtos/PropertyTypeGroupDto.cs index c48a6697ef..14e5b75404 100644 --- a/src/Umbraco.Core/Persistence/Dtos/PropertyTypeGroupDto.cs +++ b/src/Umbraco.Core/Persistence/Dtos/PropertyTypeGroupDto.cs @@ -6,19 +6,29 @@ using Umbraco.Core.Persistence.DatabaseModelDefinitions; namespace Umbraco.Core.Persistence.Dtos { - [TableName(Constants.DatabaseSchema.Tables.PropertyTypeGroup)] + [TableName(TableName)] [PrimaryKey("id", AutoIncrement = true)] [ExplicitColumns] internal class PropertyTypeGroupDto { + public const string TableName = Constants.DatabaseSchema.Tables.PropertyTypeGroup; + [Column("id")] [PrimaryKeyColumn(IdentitySeed = 12)] public int Id { get; set; } + [Column("parentId")] + [NullSetting(NullSetting = NullSettings.Null)] + public int? ParentId { get; set; } + [Column("contenttypeNodeId")] [ForeignKey(typeof(ContentTypeDto), Column = "nodeId")] public int ContentTypeNodeId { get; set; } + [Column("icon")] + [NullSetting(NullSetting = NullSettings.Null)] + public string Icon { get; set; } + [Column("text")] public string Text { get; set; } diff --git a/src/Umbraco.Core/Persistence/Dtos/PropertyTypeTabDto.cs b/src/Umbraco.Core/Persistence/Dtos/PropertyTypeTabDto.cs deleted file mode 100644 index 756b13bec1..0000000000 --- a/src/Umbraco.Core/Persistence/Dtos/PropertyTypeTabDto.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections.Generic; -using NPoco; -using Umbraco.Core.Persistence.DatabaseAnnotations; -using Umbraco.Core.Persistence.DatabaseModelDefinitions; - -namespace Umbraco.Core.Persistence.Dtos -{ - [TableName(Constants.DatabaseSchema.Tables.PropertyTypeTab)] - [PrimaryKey("id", AutoIncrement = true)] - [ExplicitColumns] - internal class PropertyTypeTabDto - { - [Column("id")] - [PrimaryKeyColumn(IdentitySeed = 12)] - public int Id { get; set; } - - [Column("contenttypeNodeId")] - [ForeignKey(typeof(ContentTypeDto), Column = "nodeId")] - public int ContentTypeNodeId { get; set; } - - [Column("name")] - public string Name { get; set; } - - [Column("sortorder")] - public int SortOrder { get; set; } - - [ResultColumn] - [Reference(ReferenceType.Many, ReferenceMemberName = "propertyTypeTabId")] - public List PropertyTypeDtos { get; set; } - - [Column("uniqueID")] - [NullSetting(NullSetting = NullSettings.NotNull)] - [Constraint(Default = SystemMethods.NewGuid)] - [Index(IndexTypes.UniqueNonClustered, Name = "IX_cmsPropertyTypeTabUniqueID")] - public Guid UniqueId { get; set; } - } -} diff --git a/src/Umbraco.Core/Persistence/Dtos/PropertyTypeTabReadOnlyDto.cs b/src/Umbraco.Core/Persistence/Dtos/PropertyTypeTabReadOnlyDto.cs deleted file mode 100644 index f7ff3044f5..0000000000 --- a/src/Umbraco.Core/Persistence/Dtos/PropertyTypeTabReadOnlyDto.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using NPoco; - -namespace Umbraco.Core.Persistence.Dtos -{ - [TableName(Constants.DatabaseSchema.Tables.PropertyTypeTab)] - [PrimaryKey("id", AutoIncrement = true)] - [ExplicitColumns] - internal class PropertyTypeTabReadOnlyDto - { - [Column("PropertyTypeTabId")] - public int? Id { get; set; } - - [Column("PropertyTabName")] - public string Name { get; set; } - - [Column("PropertyTabSortOrder")] - public int SortOrder { get; set; } - - [Column("contenttypeNodeId")] - public int ContentTypeNodeId { get; set; } - - [Column("PropertyTabUniqueID")] - public Guid UniqueId { get; set; } - } -} diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 29d441b02b..19ad987aa5 100755 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -140,7 +140,7 @@ - + @@ -160,8 +160,6 @@ - -