// // Copyright 2026 The InfiniFlow Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // package service import ( "ragflow/internal/dao" ) // ConnectorService connector service type ConnectorService struct { connectorDAO *dao.ConnectorDAO userTenantDAO *dao.UserTenantDAO } // NewConnectorService create connector service func NewConnectorService() *ConnectorService { return &ConnectorService{ connectorDAO: dao.NewConnectorDAO(), userTenantDAO: dao.NewUserTenantDAO(), } } // ListConnectorsResponse list connectors response type ListConnectorsResponse struct { Connectors []*dao.ConnectorListItem `json:"connectors"` } // ListConnectors list connectors for a user // Equivalent to Python's ConnectorService.list(current_user.id) func (s *ConnectorService) ListConnectors(userID string) (*ListConnectorsResponse, error) { // Get tenant IDs by user ID tenantIDs, err := s.userTenantDAO.GetTenantIDsByUserID(userID) if err != nil { return nil, err } // For now, use the first tenant ID (primary tenant) // This matches the Python implementation behavior var tenantID string if len(tenantIDs) > 0 { tenantID = tenantIDs[0] } else { tenantID = userID } // Query connectors by tenant ID connectors, err := s.connectorDAO.ListByTenantID(tenantID) if err != nil { return nil, err } return &ListConnectorsResponse{ Connectors: connectors, }, nil }