diff --git a/app/admin/fiori-service.cds b/app/admin/fiori-service.cds index fbb1d930..75ed712e 100644 --- a/app/admin/fiori-service.cds +++ b/app/admin/fiori-service.cds @@ -97,11 +97,11 @@ annotate AdminService.GenreHierarchy with { ID @UI.Hidden; }; -@Hierarchy.RecursiveHierarchyActions #GenreHierarchy: { +annotate AdminService.GenreHierarchy with @Hierarchy.RecursiveHierarchyActions #GenreHierarchy: { $Type : 'Hierarchy.RecursiveHierarchyActionsType', // any name can be the action name with namespace/no bound action name ChangeNextSiblingAction: 'AdminService.moveSibling', -} +}; annotate AdminService.GenreHierarchy with @UI: { PresentationVariant #VH: { @@ -210,8 +210,6 @@ annotate AdminService.ContentsHierarchy with @Hierarchy.RecursiveHierarchy#Conte LimitedDescendantCount: LimitedDescendantCount, DistanceFromRoot: DistanceFromRoot, DrillState: DrillState, - Matched: Matched, - MatchedDescendantCount: MatchedDescendantCount, LimitedRank: LimitedRank }; diff --git a/app/browse-genres/fiori-service.cds b/app/browse-genres/fiori-service.cds index 0fe951c0..809df04f 100644 --- a/app/browse-genres/fiori-service.cds +++ b/app/browse-genres/fiori-service.cds @@ -16,7 +16,5 @@ annotate CatalogService.GenreHierarchy with @Hierarchy.RecursiveHierarchy#GenreH LimitedDescendantCount: LimitedDescendantCount, DistanceFromRoot: DistanceFromRoot, DrillState: DrillState, - Matched: Matched, - MatchedDescendantCount: MatchedDescendantCount, LimitedRank: LimitedRank }; diff --git a/app/genres/fiori-service.cds b/app/genres/fiori-service.cds index 6c91516c..63862035 100644 --- a/app/genres/fiori-service.cds +++ b/app/genres/fiori-service.cds @@ -17,7 +17,5 @@ annotate AdminService.GenreHierarchy with @Aggregation.RecursiveHierarchy#GenreH LimitedDescendantCount: LimitedDescendantCount, DistanceFromRoot: DistanceFromRoot, DrillState: DrillState, - Matched: Matched, - MatchedDescendantCount: MatchedDescendantCount, LimitedRank: LimitedRank }; diff --git a/db/books.cds b/db/books.cds index 1d94da29..665587af 100644 --- a/db/books.cds +++ b/db/books.cds @@ -1,13 +1,9 @@ namespace my.bookshop; -using { - Currency, - sap, - managed, - cuid -} from '@sap/cds/common'; +using {Currency, sap, managed, cuid} from '@sap/cds/common'; using my.bookshop.Reviews from './reviews'; using my.bookshop.TechnicalBooleanFlag from './common'; +using {my.common.Hierarchy as Hierarchy} from './hierarchy'; @fiori.draft.enabled entity Books : cuid, managed { @@ -50,17 +46,20 @@ annotate Authors with /** * Hierarchically organized Code List for Genres */ -entity Genres : sap.common.CodeList { +entity Genres : sap.common.CodeList, Hierarchy { key ID : UUID; - siblingRank : Integer; + // move siblings + siblingRank : Integer; parent : Association to Genres; + // for cascade delete children : Composition of many Genres on children.parent = $self; } + /** * Hierarchically organized entity for Contents */ -entity Contents { +entity Contents: Hierarchy { key ID : UUID; name : String; page : Integer; diff --git a/srv/hierarchy.cds b/db/hierarchy.cds similarity index 76% rename from srv/hierarchy.cds rename to db/hierarchy.cds index f6619d98..f8ec83cb 100644 --- a/srv/hierarchy.cds +++ b/db/hierarchy.cds @@ -4,8 +4,6 @@ aspect Hierarchy { virtual LimitedDescendantCount : Integer64; virtual DistanceFromRoot : Integer64; virtual DrillState : String; - virtual Matched : Boolean; - virtual MatchedDescendantCount : Integer64; virtual LimitedRank : Integer64; } @@ -14,8 +12,6 @@ annotate Hierarchy with @Capabilities.FilterRestrictions.NonFilterableProperties 'LimitedDescendantCount', 'DistanceFromRoot', 'DrillState', - 'Matched', - 'MatchedDescendantCount', 'LimitedRank' ]; @@ -23,7 +19,5 @@ annotate Hierarchy with @Capabilities.SortRestrictions.NonSortableProperties: [ 'LimitedDescendantCount', 'DistanceFromRoot', 'DrillState', - 'Matched', - 'MatchedDescendantCount', 'LimitedRank' ]; diff --git a/srv/admin-service.cds b/srv/admin-service.cds index 62676766..83bb0a52 100644 --- a/srv/admin-service.cds +++ b/srv/admin-service.cds @@ -1,11 +1,9 @@ using {sap.common.Languages as CommonLanguages, cuid} from '@sap/cds/common'; using {my.bookshop as my} from '../db/index'; using {sap.changelog as changelog} from 'com.sap.cds/change-tracking'; -using {my.common.Hierarchy as Hierarchy} from './hierarchy'; using {sap.attachments.Attachments} from 'com.sap.cds/cds-feature-attachments'; extend my.Orders with changelog.changeTracked; -extend my.Genres with Hierarchy; @path: 'admin' @odata.apply.transformations @@ -26,12 +24,12 @@ service AdminService @(requires: 'admin') { entity GenreHierarchy as projection on my.Genres excluding {children} order by siblingRank actions { + // Custom Handler -> HierarchySiblingActionHandler.java // Experimental UI feature, see: // https://github.com/SAP/odata-vocabularies/blob/main/vocabularies/Hierarchy.md#template_changenextsiblingaction-experimental action moveSibling(NextSibling : NextSibling); }; - extend my.Contents with Hierarchy; entity ContentsHierarchy as projection on my.Contents; @cds.persistence.skip