@@ -8,7 +8,6 @@ const { toLower } = require('lodash');
88
99const types = require ( './configs/types' ) ;
1010const defaultTypes = require ( './configs/defaultTypes' ) ;
11- const getKeyHelper = require ( './helpers/keyHelper' ) ;
1211const getColumnDefinitionHelper = require ( './helpers/columnDefinitionHelper' ) ;
1312const { createView, hydrateView, hydrateViewColumn } = require ( './helpers/viewHelper' ) ;
1413const { FORMATS } = require ( './helpers/constants' ) ;
@@ -106,6 +105,48 @@ class DataHubProvider {
106105 } ,
107106 } ;
108107 }
108+
109+ getTags ( { data, containerAssets, options } ) {
110+ if ( options . exportTags === 'skip' ) {
111+ return [ ] ;
112+ }
113+
114+ return data . containers
115+ . flatMap ( container => {
116+ const containerObject = this . #mergeTabs( container . containerData ) ;
117+ const containerAsset = containerAssets . find ( asset => asset . hackoladeMeta ?. bucketId === container . id ) ;
118+
119+ if ( ! containerAsset ) {
120+ throw new Error (
121+ `The the container asset for the "${ containerObject . code ?? containerObject . name } " is not found!` ,
122+ ) ;
123+ }
124+
125+ if ( ! containerAsset . hackoladeMeta ) {
126+ throw new Error (
127+ `The "database" and "schema" of the container asset "${ containerAsset . containerProperties . value . name } " are not found!` ,
128+ ) ;
129+ }
130+
131+ return ( containerObject . tags ?? [ ] ) ?. flatMap ( tag => {
132+ return ( tag . allowedValues ?? [ ] ) . map ( tagValue => {
133+ return {
134+ displayName : `${ tag . name } : ${ tagValue . value } ` ,
135+ name : `${ containerAsset . hackoladeMeta ?. database } .${ containerAsset . hackoladeMeta ?. schema } .${ tag . name } :${ tagValue . value } ` ,
136+ resolutionData : {
137+ tagName : tag . id ,
138+ tagValue : tagValue . id ,
139+ } ,
140+ } ;
141+ } ) ;
142+ } ) ;
143+ } )
144+ . filter ( Boolean ) ;
145+ }
146+
147+ #mergeTabs( tabsData ) {
148+ return tabsData . reduce ( ( acc , current ) => Object . assign ( acc , current ) , { } ) ;
149+ }
109150}
110151
111152module . exports = DataHubProvider ;
0 commit comments