File indexing completed on 2024-05-19 05:42:06
0001 // ct_lvtldr_databasehandler.h -*-C++-*- 0002 0003 /* 0004 // Copyright 2023 Codethink Ltd <codethink@codethink.co.uk> 0005 // SPDX-License-Identifier: Apache-2.0 0006 // 0007 // Licensed under the Apache License, Version 2.0 (the "License"); 0008 // you may not use this file except in compliance with the License. 0009 // You may obtain a copy of the License at 0010 // 0011 // http://www.apache.org/licenses/LICENSE-2.0 0012 // 0013 // Unless required by applicable law or agreed to in writing, software 0014 // distributed under the License is distributed on an "AS IS" BASIS, 0015 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 0016 // See the License for the specific language governing permissions and 0017 // limitations under the License. 0018 */ 0019 0020 #ifndef DIAGRAM_SERVER_CT_LVTLDR_DATABASEHANDLER_H 0021 #define DIAGRAM_SERVER_CT_LVTLDR_DATABASEHANDLER_H 0022 0023 #include <ct_lvtldr_componentnodefields.h> 0024 #include <ct_lvtldr_freefunctionnodefields.h> 0025 #include <ct_lvtldr_packagenodefields.h> 0026 #include <ct_lvtldr_repositorynodefields.h> 0027 #include <ct_lvtldr_typenodefields.h> 0028 #include <ct_lvtshr_graphenums.h> 0029 #include <ct_lvtshr_uniqueid.h> 0030 0031 #include <vector> 0032 0033 namespace Codethink::lvtldr { 0034 0035 class DatabaseHandler { 0036 using RecordNumberType = lvtshr::UniqueId::RecordNumberType; 0037 0038 public: 0039 virtual ~DatabaseHandler() = 0; 0040 0041 virtual void close() = 0; 0042 0043 virtual std::vector<lvtshr::UniqueId> getTopLevelEntityIds() = 0; 0044 0045 virtual RepositoryNodeFields getRepositoryFieldsByQualifiedName(std::string const& qualifiedName) = 0; 0046 virtual RepositoryNodeFields getRepositoryFieldsById(RecordNumberType id) = 0; 0047 virtual void updateFields(RepositoryNodeFields const& dao) = 0; 0048 0049 virtual void addFields(TypeNodeFields& dao) = 0; 0050 virtual TypeNodeFields getUdtFieldsByQualifiedName(std::string const& qualifiedName) = 0; 0051 virtual TypeNodeFields getUdtFieldsById(RecordNumberType id) = 0; 0052 virtual void updateFields(TypeNodeFields const& dao) = 0; 0053 virtual void removeUdtFieldsById(RecordNumberType id) = 0; 0054 0055 virtual void addFields(ComponentNodeFields& dao) = 0; 0056 virtual ComponentNodeFields getComponentFieldsByQualifiedName(std::string const& qualifiedName) = 0; 0057 virtual ComponentNodeFields getComponentFieldsById(RecordNumberType id) = 0; 0058 virtual void updateFields(ComponentNodeFields const& dao) = 0; 0059 virtual void removeComponentFieldsById(RecordNumberType id) = 0; 0060 0061 virtual PackageNodeFields getPackageFieldsByQualifiedName(std::string const& qualifiedName) = 0; 0062 virtual PackageNodeFields getPackageFieldsById(RecordNumberType id) = 0; 0063 virtual void updateFields(PackageNodeFields const& dao) = 0; 0064 virtual void addFields(PackageNodeFields& dao) = 0; 0065 virtual void removePackageFieldsById(RecordNumberType id) = 0; 0066 0067 virtual FreeFunctionNodeFields getFreeFunctionFieldsByQualifiedName(std::string const& qualifiedName) = 0; 0068 virtual FreeFunctionNodeFields getFreeFunctionFieldsById(RecordNumberType id) = 0; 0069 virtual void updateFields(FreeFunctionNodeFields const& dao) = 0; 0070 0071 virtual void addConcreteDependency(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0072 virtual void removeConcreteDependency(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0073 0074 virtual void addComponentDependency(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0075 virtual void removeComponentDependency(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0076 0077 virtual void addClassHierarchy(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0078 virtual void removeClassHierarchy(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0079 0080 virtual void addImplementationRelationship(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0081 virtual void removeImplementationRelationship(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0082 0083 virtual void addInterfaceRelationship(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0084 virtual void removeInterfaceRelationship(RecordNumberType idFrom, RecordNumberType idTo) = 0; 0085 0086 virtual std::string getNotesFromId(lvtshr::UniqueId uid) = 0; 0087 virtual bool hasNotes(lvtshr::UniqueId uid) = 0; 0088 virtual void addNotes(lvtshr::UniqueId uid, std::string const& notes) = 0; 0089 virtual void setNotes(lvtshr::UniqueId uid, std::string const& notes) = 0; 0090 }; 0091 0092 inline DatabaseHandler::~DatabaseHandler() = default; 0093 0094 } // namespace Codethink::lvtldr 0095 0096 #endif // DIAGRAM_SERVER_CT_LVTLDR_DATABASEHANDLER_H