mirror of
https://github.com/status-im/infra-utils.git
synced 2025-02-23 17:38:12 +00:00
Details: https://github.com/status-im/infra-ipfs/issues/4 Signed-off-by: Jakub Sokołowski <jakub@status.im>
60 lines
1.4 KiB
JavaScript
Executable File
60 lines
1.4 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
const fs = require('fs')
|
|
const fetch = require('fetch-timeout')
|
|
const ipfsClient = require('ipfs-http-client')
|
|
const MongoClient = require('mongodb').MongoClient
|
|
|
|
const ipfsUpload = async (ipfs, data) => {
|
|
let json = JSON.stringify(data)
|
|
let content = Buffer.from(json)
|
|
resp = await ipfs.add(content, { pin: false })
|
|
return resp[0].hash
|
|
}
|
|
|
|
const updateDapp = async (dbCol, oldHash, newHash) => {
|
|
return dbCol.updateOne(
|
|
{hash: oldHash},
|
|
{'$set': {hash: newHash}}
|
|
)
|
|
}
|
|
|
|
const main = async () => {
|
|
const mongo = await MongoClient.connect(
|
|
process.env.MONGODB_URI,
|
|
{ useUnifiedTopology: true }
|
|
)
|
|
const db = mongo.db()
|
|
const dbDapps = db.collection('dappsmetadatas')
|
|
|
|
const ipfs = ipfsClient(
|
|
process.env.IPFS_HOST || 'ipfs.status.im',
|
|
process.env.IPFS_PORT || 443,
|
|
{ protocol: 'https' }
|
|
)
|
|
|
|
const dapps = await dbDapps.find().toArray()
|
|
|
|
for (let dapp of dapps) {
|
|
let oldHash = dapp.hash
|
|
console.log(` * ${dapp.details.name} - ${dapp.details.url}`)
|
|
console.log(` - OLD HASH: ${oldHash}`)
|
|
let newHash = await ipfsUpload(ipfs, dapp.details)
|
|
console.log(` - NEW HASH: ${newHash}`)
|
|
if (oldHash == newHash) {
|
|
console.log(' - MATCHING')
|
|
continue
|
|
}
|
|
|
|
let rval = await updateDapp(dbDapps, oldHash, newHash)
|
|
if (rval.result.ok != 1) {
|
|
console.log(' ! FAILURE')
|
|
}
|
|
console.log(' ! UPDATED')
|
|
}
|
|
|
|
await mongo.close()
|
|
}
|
|
|
|
main()
|