Skip to content

Commit

Permalink
Merge pull request #53 from rsksmart/stable-branch-for-demo
Browse files Browse the repository at this point in the history
Several updates for repositories
  • Loading branch information
nicov-iov authored Mar 29, 2023
2 parents 219a157 + fce6b6b commit 18506be
Show file tree
Hide file tree
Showing 20 changed files with 846 additions and 380 deletions.
11 changes: 9 additions & 2 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ model action {
}

model address {
id Int @default(autoincrement())
address String @id @db.VarChar(42)
block Int
lastBlockMined Int? @map("last_block_mined")
Expand All @@ -63,6 +64,8 @@ model address {
token_address_token_address_addressToaddress token_address[] @relation("token_address_addressToaddress")
transaction_transaction_fromToaddress transaction[] @relation("transaction_fromToaddress")
transaction_transaction_toToaddress transaction[] @relation("transaction_toToaddress")
@@index([id], map: "index_address_id")
}

model address_in_event {
Expand Down Expand Up @@ -190,6 +193,8 @@ model contract_interface {
contractAddress String @map("contract_address") @db.VarChar(42)
contract contract @relation(fields: [contractAddress], references: [address], onDelete: Cascade, onUpdate: NoAction, map: "fk_contract_interface_contract_address")
interface_ interface_ @relation(fields: [interfaceId], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "fk_contract_interface_interface_id")
@@unique([interfaceId, contractAddress], map: "unique_contract_interface_interface_id_contract_address")
}

model contract_method {
Expand All @@ -198,6 +203,8 @@ model contract_method {
contractAddress String @map("contract_address") @db.VarChar(42)
contract contract @relation(fields: [contractAddress], references: [address], onDelete: Cascade, onUpdate: NoAction, map: "fk_contract_method_contract_address")
method method @relation(fields: [methodId], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "fk_contract_method_method_id")
@@unique([methodId, contractAddress], map: "unique_contract_method_method_id_contract_address")
}

model contract_verification {
Expand Down Expand Up @@ -582,10 +589,10 @@ model token_address {
address String @db.VarChar(42)
contract String @db.VarChar(42)
blockNumber Int @map("block_number")
block_hash String @db.VarChar
blockHash String @map("block_hash") @db.VarChar
balance String? @db.VarChar
address_token_address_addressToaddress address @relation("token_address_addressToaddress", fields: [address], references: [address], onDelete: Cascade, onUpdate: NoAction, map: "fk_token_address_address")
block_token_address_block_hashToblock block @relation("token_address_block_hashToblock", fields: [block_hash], references: [hash], onDelete: Cascade, onUpdate: NoAction, map: "fk_token_address_block_hash")
block_token_address_block_hashToblock block @relation("token_address_block_hashToblock", fields: [blockHash], references: [hash], onDelete: Cascade, onUpdate: NoAction, map: "fk_token_address_block_hash")
block block @relation(fields: [blockNumber], references: [number], onDelete: Cascade, onUpdate: NoAction, map: "fk_token_address_block_number")
contract_token_address_contractTocontract contract @relation("token_address_contractTocontract", fields: [contract], references: [address], onDelete: Cascade, onUpdate: NoAction, map: "fk_token_address_contract")
}
Expand Down
8 changes: 4 additions & 4 deletions src/api/modules/Address.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export class Address extends DataCollectorItem {

getAddress: async params => {
const { address } = params
const aData = await this.getOne({ address }, { _id: 0 })
const aData = await this.getOne({ address }, { id: 0 })
if (aData && aData.data) {
let { data } = aData
if (data.type === addrTypes.CONTRACT) {
Expand Down Expand Up @@ -113,7 +113,7 @@ export class Address extends DataCollectorItem {
let query = {}
const lbMined = fields.LAST_BLOCK_MINED
let { fromBlock } = params
query[lbMined] = { $exists: true, $ne: null }
query[lbMined] = { $exists: true, $ne: null, cursorField: 'id' }
if (fromBlock) {
fromBlock = parseInt(fromBlock)
query[`${lbMined}.number`] = { $gt: fromBlock }
Expand Down Expand Up @@ -208,7 +208,7 @@ export class Address extends DataCollectorItem {
getCode: async params => {
try {
const { address } = params
const fields = { _id: 0, address: 1, code: 1, createdByTx: 1, contractInterfaces: 1, name: 1 }
const fields = { id: 0, address: 1, code: 1, createdByTx: 1, contractInterfaces: 1, name: 1 }
const result = await this.getOne({ address }, fields)
let { data } = result
if (!data) throw new Error('Unknown address')
Expand Down Expand Up @@ -257,7 +257,7 @@ export class Address extends DataCollectorItem {
findAddresses: async params => {
let { name } = params
params.field = 'name'
params.sort = { _id: 1 }
params.sort = { id: 1 }
return this.textSearch(name, params)
}
}
Expand Down
12 changes: 11 additions & 1 deletion src/api/modules/Balances.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,19 @@ export class Balances extends DataCollectorItem {
* $ref: '#/responses/NotFound'
*/
getStatus: async params => {
const projection = { blockHash: 1, blockNumber: 1, _id: 0 }
const projection = { blockHash: 1, blockNumber: 1 }
const fromBlock = await this.getOne({}, projection, { blockNumber: 1 })
if (fromBlock.data) {
delete fromBlock.data.timestamp
delete fromBlock.data._created
}

const toBlock = await this.getOne({}, projection, { blockNumber: -1 })
if (toBlock.data) {
delete toBlock.data.timestamp
delete toBlock.data._created
}

return { data: { fromBlock: fromBlock.data, toBlock: toBlock.data } }
}
}
Expand Down
76 changes: 74 additions & 2 deletions src/converters/address.converters.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { removeNullFields } from '../repositories/utils'

function rawAddressToEntity ({
address,
blockNumber,
Expand All @@ -9,7 +11,7 @@ function rawAddressToEntity ({
return {
address,
block: blockNumber,
lastBlockMined: lastBlockMined ? lastBlockMined.blockNumber : null,
lastBlockMined: lastBlockMined ? lastBlockMined.number : null,
balance,
isNative,
type
Expand Down Expand Up @@ -42,4 +44,74 @@ function rawContractToEntity ({
}
}

export {rawAddressToEntity, rawContractToEntity}
function addressEntityToRaw ({
address,
balance,
block: blockNumber,
isNative,
block_address_last_block_minedToblock: lastBlockMined,
contract_contract_addressToaddress: contract,
name,
type
}) {
const addressToReturn = {
address,
balance,
blockNumber,
isNative,
name,
type
}

if (lastBlockMined) {
delete lastBlockMined.id
addressToReturn.lastBlockMined = lastBlockMined
}

if (contract) {
Object.assign(addressToReturn, contractEntityToRaw(contract))
}

return removeNullFields(addressToReturn, ['name'])
}

function contractEntityToRaw ({
address,
name,
createdByTx,
createdByInternalTx,
code,
codeStoredAtBlock,
deployedCode,
symbol,
totalSupply,
decimals,
contract_method: methods,
contract_interface: interfaces
}) {
const contractToReturn = {
address,
name,
createdByTx,
createdByInternalTx,
code,
codeStoredAtBlock,
deployedCode,
symbol,
totalSupply,
decimals
}

if (methods) {
const contractMethods = methods.map(({method: {method}}) => method)
contractToReturn.contractMethods = contractMethods
}

if (interfaces) {
const contractInterfaces = interfaces.map(interface_ => interface_.interface_.interface)
contractToReturn.contractInterfaces = contractInterfaces
}

return removeNullFields(contractToReturn, ['name'])
}
export {rawAddressToEntity, rawContractToEntity, addressEntityToRaw, contractEntityToRaw}
27 changes: 21 additions & 6 deletions src/converters/balance.converters.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { removeNullFields } from '../repositories/utils'

function rawBalanceToEntity ({
address,
_created,
Expand All @@ -19,12 +21,25 @@ function rawBalanceToEntity ({
}
}

function entityToRawBalance (data) {
if (data) {
data._created = Number(data.created)
data.timestamp = Number(data.timestamp)
delete data.created
function entityToRawBalance ({
id: _id,
address,
balance,
blockHash,
blockNumber,
timestamp,
created: _created
}) {
const balanceToReturn = {
_id,
address,
balance,
blockHash,
blockNumber,
timestamp: Number(timestamp),
_created: Number(_created)
}
return data

return removeNullFields(balanceToReturn)
}
export { rawBalanceToEntity, entityToRawBalance }
141 changes: 106 additions & 35 deletions src/converters/block.converters.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,113 @@
function rawBlockToEntity (data) {
function rawBlockToEntity ({
number,
hash,
miner,
parentHash,
sha3Uncles,
logsBloom,
transactionsRoot,
stateRoot,
receiptsRoot,
difficulty,
totalDifficulty,
extraData,
size,
gasLimit,
gasUsed,
timestamp,
minimumGasPrice,
bitcoinMergedMiningHeader,
bitcoinMergedMiningCoinbaseTransaction,
bitcoinMergedMiningMerkleProof,
hashForMergedMining,
paidFees,
cumulativeDifficulty,
received
}) {
return {
number: data.number,
hash: data.hash,
miner: data.miner,
parentHash: data.parentHash,
sha3Uncles: data.sha3Uncles,
logsBloom: data.logsBloom,
transactionsRoot: data.transactionsRoot,
stateRoot: data.stateRoot,
receiptsRoot: data.receiptsRoot,
difficulty: data.difficulty,
totalDifficulty: data.totalDifficulty,
extraData: data.extraData,
size: data.size,
gasLimit: data.gasLimit,
gasUsed: data.gasUsed,
timestamp: String(data.timestamp),
minimumGasPrice: data.minimumGasPrice,
bitcoinMergedMiningHeader: data.bitcoinMergedMiningHeader,
bitcoinMergedMiningCoinbaseTransaction: data.bitcoinMergedMiningCoinbaseTransaction,
bitcoinMergedMiningMerkleProof: data.bitcoinMergedMiningMerkleProof,
hashForMergedMining: data.hashForMergedMining,
paidFees: data.paidFees,
cumulativeDifficulty: data.cumulativeDifficulty,
received: String(data._received)
number,
hash,
miner,
parentHash,
sha3Uncles,
logsBloom,
transactionsRoot,
stateRoot,
receiptsRoot,
difficulty,
totalDifficulty,
extraData,
size,
gasLimit,
gasUsed,
timestamp: String(timestamp),
minimumGasPrice,
bitcoinMergedMiningHeader,
bitcoinMergedMiningCoinbaseTransaction,
bitcoinMergedMiningMerkleProof,
hashForMergedMining,
paidFees,
cumulativeDifficulty,
received: String(received)
}
}

function blockEntityToRaw (blockEntity) {
blockEntity['_received'] = Number(blockEntity.received)
delete blockEntity['received']

blockEntity['timestamp'] = Number(blockEntity['timestamp'])

blockEntity.uncles = blockEntity.uncle.map(uncleObj => uncleObj.hash)
delete blockEntity['uncle']

return blockEntity
function blockEntityToRaw ({
number,
hash,
miner,
parentHash,
sha3Uncles,
logsBloom,
transactionsRoot,
stateRoot,
receiptsRoot,
difficulty,
totalDifficulty,
extraData,
size,
gasLimit,
gasUsed,
timestamp,
minimumGasPrice,
bitcoinMergedMiningHeader,
bitcoinMergedMiningCoinbaseTransaction,
bitcoinMergedMiningMerkleProof,
hashForMergedMining,
paidFees,
cumulativeDifficulty,
received,
uncle,
transaction_transaction_block_numberToblock: transactions
}) {
return {
number,
hash,
miner,
parentHash,
sha3Uncles,
logsBloom,
transactionsRoot,
stateRoot,
receiptsRoot,
difficulty,
totalDifficulty,
extraData,
size,
gasLimit,
gasUsed,
timestamp: Number(timestamp),
minimumGasPrice,
bitcoinMergedMiningHeader,
bitcoinMergedMiningCoinbaseTransaction,
bitcoinMergedMiningMerkleProof,
hashForMergedMining,
paidFees,
cumulativeDifficulty,
_received: Number(received),
uncles: uncle.map(({hash}) => hash),
transactions: transactions.map(({hash}) => hash)
}
}

export {rawBlockToEntity, blockEntityToRaw}
Loading

0 comments on commit 18506be

Please sign in to comment.