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 62 63 64 65 66 67 68 69 70 71 72 73 74 75
// 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/>.
use super::*;
use crate::types::{Workflow, WorkflowRecord, WorkflowVersion, WorkflowVersionRecord};
use sp_std::borrow::ToOwned;
impl<T: Config> Pallet<T> {
/// Inserts the Operation into the `WorkflowsByAccountIdAndWorkflowId` storage
/// Increases the `Total` Workflow count
///
/// Does no checks.
///
/// # Arguments
/// * workflow - The Workflow to insert
/// * account_id - The owner of the Workflow
/// * block_number - Current block
pub fn do_create_workflow(workflow: &Workflow, account_id: &T::AccountId, block_number: &T::BlockNumber) {
let workflow_record = WorkflowRecord::<T> {
record: workflow.clone(),
account_id: account_id.clone(),
block_number: *block_number,
};
WorkflowByWorkflowIdAndAccountId::<T>::insert(&workflow.id, &account_id, workflow_record.clone());
Total::<T>::put(Self::total().saturating_add(1));
}
/// Inserts the Workflow Version into the `VersionsByOperationId` and
/// `Versions` storages Insert each package cid in the `PackageCid` storage
///
/// Does no checks.
///
/// # Arguments
/// * workflow_version - The Operation to insert
/// * account_id - The owner of the Operation
/// * block_number - Current block
pub fn do_create_workflow_version(
workflow_version: &WorkflowVersion,
account_id: &T::AccountId,
block_number: T::BlockNumber,
) {
let record = WorkflowVersionRecord::<T> {
record: workflow_version.clone(),
account_id: account_id.clone(),
block_number,
};
let workflow_id = &workflow_version.data.entity_id.as_ref().unwrap();
let workflow_version_id = workflow_version.id.to_owned();
VersionByVersionId::<T>::insert(&workflow_version_id, record);
VersionIdsByWorkflowId::<T>::mutate(workflow_id, |versions| {
versions.push(workflow_version_id.clone());
});
anagolay_support::Pallet::<T>::store_artifacts(&workflow_version.data.artifacts);
}
}