ethairballoons
Version:
A strictly typed ORM library for Ethereum blockchain
69 lines (58 loc) • 2.35 kB
Plain Text
// This Smart contract was auto generated by EthairBaloons
// https://github.com/petrosDemetrakopoulos/ethairballoons
// SPDX-License-Identifier: {{contract.license}}
pragma solidity >=0.6.2;
pragma experimental ABIEncoderV2;
contract {{contract.name}} {
{{contract.idDataType}} public dataId;
uint public numberOfRecords = 0;
{{contract.idDataType}}[] public recordsList;
event dataAdded(string dat);
struct {{contract.structName}} {
string payload;
uint listPointer;
}
mapping({{contract.idDataType}} => {{contract.structName}}) public facts;
function isRecord({{contract.idDataType}} recordAddress) internal view returns (bool isRec) {
if(recordsList.length == 0) return false;
return (recordsList[facts[recordAddress].listPointer] == recordAddress);
}
function getRecordCount() external view returns (uint recCount){
return recordsList.length;
}
function addRecord(string memory payload, {{contract.idDataType}} ID) external returns (bool success) {
if(isRecord(ID)) revert('record with this id already exists');
facts[ID].payload = payload;
recordsList.push(ID);
facts[ID].listPointer = recordsList.length - 1;
numberOfRecords++;
return (true);
}
function getRecord({{contract.idDataType}} id) external view returns (string memory payload){
if(!isRecord(id)) revert('record with this id does not exist');
return (facts[id].payload);
}
function updateRecord({{contract.idDataType}} id, string memory payload) external returns (bool success){
if(!isRecord(id)) revert('record with this id does not exist');
facts[id].payload = payload;
return (true);
}
function getAllRecords() external view returns (string[] memory payloads) {
string[] memory payloadss = new string[](numberOfRecords);
for (uint i = 0; i < numberOfRecords; i++) {
{{contract.structName}} storage fact = facts[recordsList[i]];
payloadss[i] = fact.payload;
}
return (payloadss);
}
function deleteRecord({{contract.idDataType}} id) external returns (bool success) {
if(!isRecord(id)) revert('record with this id does not exist');
uint rowToDelete = facts[id].listPointer;
{{contract.idDataType}} keyToMove = recordsList[recordsList.length-1];
recordsList[rowToDelete] = keyToMove;
facts[keyToMove].listPointer = rowToDelete;
recordsList.pop();
numberOfRecords--;
return (true);
}
}