mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-23 01:55:10 +00:00
Project, groups and Users being implemented in PDC2
This commit is contained in:
parent
ea2bd84eb8
commit
4aa12017bf
4 changed files with 57 additions and 3 deletions
|
|
@ -50,6 +50,17 @@ type PrivateSchemaContent struct {
|
||||||
Project string `json:"Project`
|
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 {
|
type Schema struct {
|
||||||
JsonSchemaContent map[string]interface{} `json:"JsonSchemaContent"`
|
JsonSchemaContent map[string]interface{} `json:"JsonSchemaContent"`
|
||||||
SchemaId string `json:"SchemaId"`
|
SchemaId string `json:"SchemaId"`
|
||||||
|
|
@ -834,7 +845,6 @@ func (s *SmartContract) WriteSchemaToPDC(ctx contractapi.TransactionContextInter
|
||||||
|
|
||||||
type transientInput struct {
|
type transientInput struct {
|
||||||
JsonSchemaContent map[string]interface{} `json:"JsonSchemaContent"`
|
JsonSchemaContent map[string]interface{} `json:"JsonSchemaContent"`
|
||||||
//JsonSchemaContent string `json:"JsonSchemaContent"`
|
|
||||||
SchemaId string `json:"SchemaId"`
|
SchemaId string `json:"SchemaId"`
|
||||||
Project string `json:"Project`
|
Project string `json:"Project`
|
||||||
}
|
}
|
||||||
|
|
@ -959,3 +969,44 @@ func (s *SmartContract) GetAllPDCSchemas(ctx contractapi.TransactionContextInter
|
||||||
|
|
||||||
return schemas, nil
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -226,6 +226,7 @@ echo "========= Setting Up Network with PDC and SmartContract ==========="
|
||||||
|
|
||||||
cd /Users/fernando/Projects/OSC-IS/fabric-samples/test-network
|
cd /Users/fernando/Projects/OSC-IS/fabric-samples/test-network
|
||||||
./network.sh down
|
./network.sh down
|
||||||
|
export PATH=$PATH:/usr/local/go/bin
|
||||||
./network.sh up createChannel -ca -s couchdb
|
./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
|
./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 ==========="
|
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":["Project2.Schema1"]}'
|
||||||
|
|
||||||
peer chaincode query -C mychannel -n private -c '{"function":"ReadSchemaFromPDC","Args":["Project1.Schema2"]}'
|
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 ==========="
|
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 ==========="
|
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"]}'
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue