From 4aa12017bf62fa1a752a09bdc91a2c46b6d38742 Mon Sep 17 00:00:00 2001 From: Fernando Garzon Date: Fri, 24 Feb 2023 10:16:32 -0800 Subject: [PATCH] Project, groups and Users being implemented in PDC2 --- .../{asset_queries.go => asset_queries.txt} | 0 ...queries_test.go => asset_queries_test.txt} | 0 .../chaincode-go/chaincode/asset_transfer.go | 53 ++++++++++++++++++- test-network/QuickCCTest.sh | 7 ++- 4 files changed, 57 insertions(+), 3 deletions(-) rename asset-transfer-private-data/chaincode-go/chaincode/{asset_queries.go => asset_queries.txt} (100%) rename asset-transfer-private-data/chaincode-go/chaincode/{asset_queries_test.go => asset_queries_test.txt} (100%) diff --git a/asset-transfer-private-data/chaincode-go/chaincode/asset_queries.go b/asset-transfer-private-data/chaincode-go/chaincode/asset_queries.txt similarity index 100% rename from asset-transfer-private-data/chaincode-go/chaincode/asset_queries.go rename to asset-transfer-private-data/chaincode-go/chaincode/asset_queries.txt diff --git a/asset-transfer-private-data/chaincode-go/chaincode/asset_queries_test.go b/asset-transfer-private-data/chaincode-go/chaincode/asset_queries_test.txt similarity index 100% rename from asset-transfer-private-data/chaincode-go/chaincode/asset_queries_test.go rename to asset-transfer-private-data/chaincode-go/chaincode/asset_queries_test.txt diff --git a/asset-transfer-private-data/chaincode-go/chaincode/asset_transfer.go b/asset-transfer-private-data/chaincode-go/chaincode/asset_transfer.go index 623999f9..d630aa85 100644 --- a/asset-transfer-private-data/chaincode-go/chaincode/asset_transfer.go +++ b/asset-transfer-private-data/chaincode-go/chaincode/asset_transfer.go @@ -50,6 +50,17 @@ type PrivateSchemaContent struct { Project string `json:"Project` } +type PrivateProjectsContent struct { + OrgName string `json:OrgName` + ProjectName string `json:ProjectName` + AdmninGroup []User `json:AdminGroup` + UsersGroup []User `json:UsersGroup` + ProjectID string `json:ProjectID` +} + + + +// Not being persisted type Schema struct { JsonSchemaContent map[string]interface{} `json:"JsonSchemaContent"` SchemaId string `json:"SchemaId"` @@ -834,7 +845,6 @@ func (s *SmartContract) WriteSchemaToPDC(ctx contractapi.TransactionContextInter type transientInput struct { JsonSchemaContent map[string]interface{} `json:"JsonSchemaContent"` - //JsonSchemaContent string `json:"JsonSchemaContent"` SchemaId string `json:"SchemaId"` Project string `json:"Project` } @@ -959,3 +969,44 @@ func (s *SmartContract) GetAllPDCSchemas(ctx contractapi.TransactionContextInter return schemas, nil } + +// Could also be called "Create Project" +func (s *SmartContract) writeProjectToPDC(ctx contractapi.TransactionContextInterface) error{ + // Get new asset from transient map + transientMap, err := ctx.GetStub().GetTransient() + if err != nil { + return fmt.Errorf("error getting transient: %v", err) + } + + // Project properties are private, therefore they get passed in transient field, instead of func args + transientAssetJSON, ok := transientMap["asset_properties"] + if !ok { + //log error to stdout + return fmt.Errorf("asset not found in the transient map input") + } + + type transientInput struct { + OrgName string `json:OrgName` + ProjectName string `json:ProjectName` + AdmninGroup []User `json:AdminGroup` + UsersGroup []User `json:UsersGroup` + ProjectID string `json:ProjectID` + } + + var assetInput transientInput + err = json.Unmarshal(transientAssetJSON, &assetInput) + if err != nil { + return fmt.Errorf("failed to unmarshal JSON: %v", err) + } + + assetAsBytes, err := ctx.GetStub().GetPrivateData(PDC2, assetInput.ProjectID) + if err != nil { + return fmt.Errorf("failed to get Project: %v", err) + } else if assetAsBytes != nil { + fmt.Println("Project already exists: " + assetInput.SchemaId) + return fmt.Errorf("this Project already exists: " + assetInput.SchemaId) + } + + + +} \ No newline at end of file diff --git a/test-network/QuickCCTest.sh b/test-network/QuickCCTest.sh index ba64c316..c4362424 100644 --- a/test-network/QuickCCTest.sh +++ b/test-network/QuickCCTest.sh @@ -226,6 +226,7 @@ echo "========= Setting Up Network with PDC and SmartContract ===========" cd /Users/fernando/Projects/OSC-IS/fabric-samples/test-network ./network.sh down +export PATH=$PATH:/usr/local/go/bin ./network.sh up createChannel -ca -s couchdb ./network.sh deployCC -ccn private -ccp ../asset-transfer-private-data/chaincode-go/ -ccl go -ccep "OR('Org1MSP.peer','Org2MSP.peer')" -cccg ../asset-transfer-private-data/chaincode-go/collections_config.json @@ -265,6 +266,8 @@ peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.exa echo "========= CC Invoke: Reading of Schema in PDC ===========" +peer chaincode query -C mychannel -n private -c '{"function":"ReadSchemaFromPDC","Args":["Project1.Schema1"]}' + peer chaincode query -C mychannel -n private -c '{"function":"ReadSchemaFromPDC","Args":["Project2.Schema1"]}' peer chaincode query -C mychannel -n private -c '{"function":"ReadSchemaFromPDC","Args":["Project1.Schema2"]}' @@ -272,8 +275,8 @@ peer chaincode query -C mychannel -n private -c '{"function":"ReadSchemaFromPDC" echo "========= CC Invoke: Reading all Schemas in PDC ===========" -peer chaincode query -C mychannel -n private -c '{"function":"GetAllPDCSchemas","Args":["1"]}' +peer chaincode query -C mychannel -n private -c '{"function":"GetAllPDCSchemas","Args":[""]}' echo "========= CC Invoke: Creation of DataSample ===========" -peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"CreateDataSample","Args":["CIA Org", "Project 1", "Comment: Proof of live in Mars", "13/13/13", "Project1.Schema1", "{ \"number\": 1603, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\"}"]}' +peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n private --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"CreateDataSample","Args":["CIA Org", "Project 1", "Comment: Proof of life presence in Mars", "13/13/13", "jhon@email.com", "{ \"number\": 1603, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\"}", ,"Project1.Schema1"]}'