Passed
Push — master ( 47dd3c...36b76c )
by Sungyub
03:04 queued 18s
created

src/handlers/getWallets.ts   A

Complexity

Total Complexity 3
Complexity/F 0

Size

Lines of Code 42
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 33
mnd 3
bc 3
fnc 0
dl 0
loc 42
rs 10
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1
import fs from 'fs'
2
import { Data } from '../models'
3
4
const removeChannelChaincode = (str: string): string => {
5
  const pattern =
6
    process.env.CHANNEL_NAME + '\u0000' +
7
    process.env.CHAINCODE + '\u0000'
8
  if (str.startsWith(pattern)) {
9
    return str.replace(pattern, '')
10
  }
11
  return str
12
}
13
14
const writeFile = (list: string[]) => {
15
  const fileName = `wallets-${ Date.now() }.txt`
16
  const writer = fs.createWriteStream(fileName,
17
    { flags: 'a' })
18
19
  for (let wallet of list) {
20
    writer.write(wallet + '\n')
21
  }
22
  writer.end()
23
24
  return fileName
25
}
26
27
export default async (db: any) => {
28
  const wallets: string[] = []
29
30
  await new Promise(resolve => {
31
    db.createReadStream().on('data', (data: Data) => {
32
      if (data.value.includes('wallet_address')) {
33
        wallets.push(removeChannelChaincode(data.key))
34
      }
35
    }).on('end', () => {
36
      resolve()
37
    })
38
  })
39
40
  return writeFile(wallets)
41
}
42