/* * @project The CERN Tape Archive (CTA) * @copyright Copyright © 2021-2022 CERN * @license This program is free software, distributed under the terms of the GNU General Public * Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". You can * redistribute it and/or modify it under the terms of the GPL Version 3, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more details. * * In applying this licence, CERN does not waive the privileges and immunities * granted to it by virtue of its status as an Intergovernmental Organization or * submit itself to any jurisdiction. */ #pragma once #include #include "catalogue/interfaces/AdminUserCatalogue.hpp" #include "catalogue/interfaces/ArchiveFileCatalogue.hpp" #include "catalogue/interfaces/ArchiveRouteCatalogue.hpp" #include "catalogue/interfaces/DiskInstanceCatalogue.hpp" #include "catalogue/interfaces/DiskInstanceSpaceCatalogue.hpp" #include "catalogue/interfaces/DiskSystemCatalogue.hpp" #include "catalogue/interfaces/DriveConfigCatalogue.hpp" #include "catalogue/interfaces/DriveStateCatalogue.hpp" #include "catalogue/interfaces/FileRecycleLogCatalogue.hpp" #include "catalogue/interfaces/LogicalLibraryCatalogue.hpp" #include "catalogue/interfaces/MediaTypeCatalogue.hpp" #include "catalogue/interfaces/MountPolicyCatalogue.hpp" #include "catalogue/interfaces/PhysicalLibraryCatalogue.hpp" #include "catalogue/interfaces/RequesterActivityMountRuleCatalogue.hpp" #include "catalogue/interfaces/RequesterGroupMountRuleCatalogue.hpp" #include "catalogue/interfaces/RequesterGroupMountRuleCatalogue.hpp" #include "catalogue/interfaces/RequesterMountRuleCatalogue.hpp" #include "catalogue/interfaces/RequesterMountRuleCatalogue.hpp" #include "catalogue/interfaces/SchemaCatalogue.hpp" #include "catalogue/interfaces/StorageClassCatalogue.hpp" #include "catalogue/interfaces/TapeCatalogue.hpp" #include "catalogue/interfaces/TapeFileCatalogue.hpp" #include "catalogue/interfaces/TapePoolCatalogue.hpp" #include "catalogue/interfaces/VirtualOrganizationCatalogue.hpp" namespace cta::catalogue { /** * Abstract class defining the interface to the CTA catalogue responsible for * storing critical information about archive files, tapes and tape files. */ class Catalogue { public: /** * Destructor. */ virtual ~Catalogue() = default; // Table Methods virtual const std::unique_ptr& Schema() = 0; virtual const std::unique_ptr& AdminUser() = 0; virtual const std::unique_ptr& DiskSystem() = 0; virtual const std::unique_ptr& DiskInstance() = 0; virtual const std::unique_ptr& DiskInstanceSpace() = 0; virtual const std::unique_ptr& VO() = 0; virtual const std::unique_ptr& ArchiveRoute() = 0; virtual const std::unique_ptr& MediaType() = 0; virtual const std::unique_ptr& StorageClass() = 0; virtual const std::unique_ptr& TapePool() = 0; virtual const std::unique_ptr& Tape() = 0; virtual const std::unique_ptr& MountPolicy() = 0; virtual const std::unique_ptr& RequesterActivityMountRule() = 0; virtual const std::unique_ptr& RequesterMountRule() = 0; virtual const std::unique_ptr& RequesterGroupMountRule() = 0; virtual const std::unique_ptr& LogicalLibrary() = 0; virtual const std::unique_ptr& PhysicalLibrary() = 0; virtual const std::unique_ptr& TapeFile() = 0; virtual const std::unique_ptr& FileRecycleLog() = 0; virtual const std::unique_ptr& DriveConfig() = 0; virtual const std::unique_ptr& DriveState() = 0; virtual const std::unique_ptr& ArchiveFile() = 0; }; // class Catalogue } // namespace cta::catalogue