forked from aszx87410/medium-user-crawler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb.js
89 lines (79 loc) · 2.08 KB
/
db.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
const mysql = require('mysql')
const moment = require('moment')
function format(time) {
if (!time) return null
return moment(time).format('YYYY-MM-DD HH:mm:ss')
}
function transform(info) {
return [
info.userId, info.username, info.name, info.bio, info.followerCount,
format(info.mediumMemberAt), format(info.createdAt), info.isWriterProgramEnrolled, null
]
}
class DB {
constructor(config) {
this.conn = mysql.createPool(config)
}
getExistingUserIds() {
return new Promise((resolve, reject) => {
this.conn.query('SELECT userId from Users', (err, results) => {
if (err) {
return reject(err)
}
return resolve(results.map(item => item.userId))
});
})
}
getUserIds(limit) {
return new Promise((resolve, reject) => {
this.conn.query('SELECT userId from Queues order by id asc limit ' + limit, (err, results) => {
if (err) {
return reject(err)
}
return resolve(results.map(item => item.userId))
});
})
}
deleteUserIds(userIds) {
return new Promise((resolve, reject) => {
this.conn.query('DELETE from Queues WHERE userId IN (?)', [userIds], (err, results) => {
if (err) {
return reject(err)
}
return resolve(userIds)
})
})
}
insertUserData(info) {
if (!info) return
const data = Array.isArray(info) ? info.map(transform) : [transform(info)]
this.conn.query(`
INSERT INTO Users
(
userId, username, name, bio, follower,
mediumMemberAt, createdAt, isWriterProgramEnrolled, fr
) VALUES ?`, [data], (err) => {
if (err) {
// console.log(err)
}
}
)
}
insertIntoQueue(list) {
return new Promise((resolve, reject) => {
const values = []
for (let item of list) {
values.push([item])
}
this.conn.query(`
INSERT IGNORE INTO Queues (userId) VALUES ?`, [values], (err) => {
if (err) {
// console.log(err)
}
resolve()
}
)
})
}
}
module.exports = DB