1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
// This file is part of Anagolay Foundation.
// Copyright (C) 2019-2022 Anagolay Foundation.
// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
// 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 3 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, see <https://www.gnu.org/licenses/>.
//! Business logic is located here.
//!
//! Each pallet must have this file.
use super::*;
use sp_std::vec::Vec;
impl<T: Config> Pallet<T> {
/// Verifies if the package passed as argument is already stored
///
/// # Arguments
/// * artifact - The artifact to check
///
/// # Return
/// True if the artifact is already stored, false otherwise
pub fn is_existing_artifact(artifact: &AnagolayArtifactStructure<impl ArtifactType>) -> bool {
match ArtifactsByArtifactId::<T>::try_get().ok() {
Some(artifacts) => artifacts.contains(&artifact.ipfs_cid),
None => false,
}
}
/// Store all artifacts passed as parameter.
///
/// Does not do any check.
///
/// # Arguments
/// * artifacts - The artifacts to store
pub fn store_artifacts(artifacts: &Vec<AnagolayArtifactStructure<impl ArtifactType>>) {
ArtifactsByArtifactId::<T>::mutate(|stored_artifacts| {
artifacts
.iter()
.for_each(|artifact| stored_artifacts.push(artifact.ipfs_cid.clone()));
});
}
/// Retrieve all stored artifacts
///
/// # Return
/// Collection of artifact Ids
pub fn get_artifacts() -> Vec<ArtifactId> {
ArtifactsByArtifactId::<T>::get()
}
}