@@ -22,6 +22,7 @@ import { config } from "../configs/Config";
2222import { Op } from "sequelize" ;
2323import TableDraft from "../models/Table" ;
2424import { alertService } from "./AlertManagerService" ;
25+ import { ConnectorRegistry } from "../models/ConnectorRegistry" ;
2526
2627class DatasetService {
2728
@@ -144,7 +145,7 @@ class DatasetService {
144145 {
145146 model : Datasource ,
146147 attributes : [ 'datasource' ] ,
147- where : { is_primary : true } ,
148+ where : { is_primary : true , type : "druid" } ,
148149 required : false
149150 } ,
150151 ] , raw : true , where : filters , attributes, order : [ [ "updated_date" , "DESC" ] ]
@@ -510,4 +511,102 @@ export const validateStorageSupport = (dataset: Record<string, any>) => {
510511 }
511512}
512513
514+ export const attachDraftConnectors = async (
515+ draftDatasetList : Record < string , any > [ ] ,
516+ connectorFilter : string | string [ ]
517+ ) : Promise < Record < string , any > [ ] > => {
518+ if ( _ . isEmpty ( draftDatasetList ) ) {
519+ return [ ] ;
520+ }
521+
522+ const connectorIds = _ . uniq (
523+ _ . flatMap ( draftDatasetList , dataset =>
524+ _ . map ( dataset . connectors_config , 'connector_id' )
525+ )
526+ ) ;
527+
528+ if ( _ . isEmpty ( connectorIds ) ) {
529+ return draftDatasetList . map ( dataset => ( {
530+ ...dataset ,
531+ connectors_config : [ ]
532+ } ) ) ;
533+ }
534+
535+ const connectorRegistry : any = await ConnectorRegistry . findAll ( {
536+ where : { id : connectorIds } ,
537+ raw : true ,
538+ attributes : [ 'id' , 'name' , 'category' , 'type' ]
539+ } ) ;
540+
541+ return draftDatasetList . map ( dataset => {
542+ let filteredConnectors = dataset . connectors_config ;
543+ if ( connectorFilter !== 'all' ) {
544+ const filterArray = _ . castArray ( connectorFilter ) ; // Ensure it's an array
545+ filteredConnectors = _ . filter ( filteredConnectors , connector =>
546+ filterArray . includes ( String ( connector . connector_id ) )
547+ ) ;
548+ }
549+
550+ const enrichedConnectors = filteredConnectors . map ( ( connector : any ) => {
551+ const registryDetails = _ . find ( connectorRegistry , {
552+ id : connector . connector_id
553+ } ) ;
554+ return {
555+ ...connector ,
556+ name : registryDetails ?. name || null ,
557+ category : registryDetails ?. category || null ,
558+ source : registryDetails ?. type || null
559+ } ;
560+ } ) ;
561+
562+ return {
563+ ...dataset ,
564+ connectors_config : enrichedConnectors
565+ } ;
566+ } ) ;
567+ } ;
568+
569+ export const attachLiveConnectors = async (
570+ liveDatasetList : Record < string , any > ,
571+ connectorFilter : string | string [ ]
572+ ) : Promise < Record < string , any > [ ] > => {
573+ if ( _ . isEmpty ( liveDatasetList ) ) {
574+ return [ ] ;
575+ }
576+
577+ ConnectorRegistry . hasMany ( ConnectorInstances , { foreignKey : 'connector_id' } ) ;
578+ const connectorRegistry = await ConnectorRegistry . findAll ( {
579+ include : [ {
580+ model : ConnectorInstances ,
581+ attributes : [ 'dataset_id' , 'connector_id' ] ,
582+ required : true
583+ } ] ,
584+ raw : true ,
585+ attributes : [ 'id' , 'name' , 'category' , 'type' ]
586+ } ) ;
587+
588+ const filterArray = connectorFilter === 'all' ? null : _ . castArray ( connectorFilter ) ;
589+
590+ return liveDatasetList . map ( ( dataset : Record < string , any > ) => {
591+ const datasetId = dataset . dataset_id ;
592+
593+ const filteredConnectors = connectorRegistry . filter ( ( connector : any ) =>
594+ connector [ 'connector_instances.dataset_id' ] === datasetId &&
595+ ( ! filterArray || filterArray . includes ( String ( connector . id ) ) )
596+ ) ;
597+
598+ const enrichedConnectors = filteredConnectors . map ( ( connector : any ) => ( {
599+ connector_id : connector . id ,
600+ name : connector . name ,
601+ category : connector . category ,
602+ type : connector . type
603+ } ) ) ;
604+
605+ return {
606+ ...dataset ,
607+ connectors_config : enrichedConnectors
608+ } ;
609+ } ) ;
610+ } ;
611+
513612export const datasetService = new DatasetService ( ) ;
0 commit comments