/************************************************************************* * * Copyright (c) 2023 Fabian Posch * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, 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. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * ************************************************************************** */ #ifndef __DB_ARTIFACT__ #define __DB_ARTIFACT__ /** * @brief Data used for a partial artifact from the database * * Don't let this confuse you. This is the additional data one would get when * pulling a (partial) artifact from the database. * * Database information is intentionally kept out of the artifact library, since this * is not needed for local artifact processing (especially in the deploy tool). * * Since an agent might have special requirements in regards to additional information, * no specific implementation is provided by this library. * * Combinations of specific artifact types should therefor implemented locally. * This is just the minimal cross-section of what an agent will have to deal with. * */ #include "db_types.hpp" namespace db { class DBArtifact { public: /** * @brief Construct a new Artifact with a database UUID attached to it. * * This should be used when downloading the artifact from the database. * This ID is actually required when an update in the database is required. * * @param id UUID of the artifact this belongs to in the database * @param source_pass The pass in the database which is responsible for the generation of this (partial) artifact * @param target_artifact The UUID of the artifact this part belongs to */ DBArtifact(const db::uuid_t& id, const db::uuid_t& source_pass, const db::uuid_t& target_artifact); /** * @brief The ID of this object in the database * * The ID should be auto-generated when this task is fetched from the database. * It is generated automatically by said database. * * The new partial artifact must be generated immediately to indicate someone * working on this. * */ const db::uuid_t& id = id_; /** * @brief The ID of the pass in the database which created this object */ const db::uuid_t& source_pass = source_pass_; /** * @brief The artifact, which this partial artifact is a part of */ const db::uuid_t& target_artifact = target_artifact_; protected: db::uuid_t id_; db::uuid_t source_pass_; db::uuid_t target_artifact_; }; }; #endif