code: /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You 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 org.apache.skywalking.oap.server.core.storage;
  
  import org.apache.skywalking.oap.server.core.storage.cache.INetworkAddressAliasDAO;
  import org.apache.skywalking.oap.server.core.storage.management.UIMenuManagementDAO;
  import org.apache.skywalking.oap.server.core.storage.management.UITemplateManagementDAO;
  import org.apache.skywalking.oap.server.core.storage.profiling.continuous.IContinuousProfilingPolicyDAO;
  import org.apache.skywalking.oap.server.core.storage.profiling.ebpf.IServiceLabelDAO;
  import org.apache.skywalking.oap.server.core.storage.profiling.trace.IProfileTaskLogQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.profiling.trace.IProfileTaskQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.profiling.trace.IProfileThreadSnapshotQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.IAggregationQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.IBrowserLogQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.profiling.ebpf.IEBPFProfilingDataDAO;
  import org.apache.skywalking.oap.server.core.storage.profiling.ebpf.IEBPFProfilingScheduleDAO;
  import org.apache.skywalking.oap.server.core.storage.profiling.ebpf.IEBPFProfilingTaskDAO;
  import org.apache.skywalking.oap.server.core.storage.query.IEventQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.ILogQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.IMetricsQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.ISpanAttachedEventQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.ITagAutoCompleteQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.IRecordsQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.ITopologyQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.ITraceQueryDAO;
  import org.apache.skywalking.oap.server.core.storage.query.IZipkinQueryDAO;
  import org.apache.skywalking.oap.server.library.module.ModuleDefine;
  
  /**
   * StorageModule provides the capabilities(services) to interact with the database. With different databases, this
   * module could have different providers, such as currently, H2, MySQL, ES, TiDB.
   */
  public class StorageModule extends ModuleDefine {
  
      public static final String NAME = "storage";
  
      public StorageModule() {
          super(NAME);
      }
  
      @Override
      public Class[] services() {
          return new Class[] {
              StorageBuilderFactory.class,
              IBatchDAO.class,
              StorageDAO.class,
              IHistoryDeleteDAO.class,
              INetworkAddressAliasDAO.class,
              ITopologyQueryDAO.class,
              IMetricsQueryDAO.class,
              ITraceQueryDAO.class,
              IMetadataQueryDAO.class,
              IAggregationQueryDAO.class,
              IAlarmQueryDAO.class,
              IRecordsQueryDAO.class,
              ILogQueryDAO.class,
              IProfileTaskQueryDAO.class,
              IProfileTaskLogQueryDAO.class,
              IProfileThreadSnapshotQueryDAO.class,
              UITemplateManagementDAO.class,
              UIMenuManagementDAO.class,
              IBrowserLogQueryDAO.class,
              IEventQueryDAO.class,
              IEBPFProfilingTaskDAO.class,
              IEBPFProfilingScheduleDAO.class,
              IEBPFProfilingDataDAO.class,
              IContinuousProfilingPolicyDAO.class,
              IServiceLabelDAO.class,
              ITagAutoCompleteQueryDAO.class,
              IZipkinQueryDAO.class,
              ISpanAttachedEventQueryDAO.class
          };
      }
  }
  