-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcronjobsMangers.js
138 lines (131 loc) · 5.28 KB
/
cronjobsMangers.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
const { SimpleIntervalJob, AsyncTask } = require('toad-scheduler')
const news_scraper = require('./news_scraper.js')
const axios = require('axios');
const ema = require('./ema.js')
module.exports = {
cancelCronJob(jobID, cachedScheduler) {
//Try Catch is a synchronous task. Therefore do not mix it with Promise.
let result
try {
console.log(cachedScheduler.getById(jobID))
cachedScheduler.stopById(jobID)
result = true
} catch (error) {
console.log(error)
result = false
}
if (result) {
this.removeCronJobFromDatabase(jobID).then(res => {
return true
})
.catch(err => { return false })
}
else
return false
},
autoNewsScrappingtoDBEvery(jobDetail, cachedScheduler) {
return new Promise((resolve, reject) => {
const task = new AsyncTask(
jobDetail.jobID,
() => {
return news_scraper.getNews('https://tuoitre.vn/tin-moi-nhat.htm').then(res => {
console.log('Lấy news tuoitre ok')
resolve(res)
}).catch(err => {
console.log(err);
reject(err)
})
},
(err) => {
console.log(err);
reject(err)
})
const job = new SimpleIntervalJob({ seconds: jobDetail.timeInterval, }, task, jobDetail.jobID)
cachedScheduler.addSimpleIntervalJob(job)
this.saveCronJobToDatabase(jobDetail)
})
},
emaWatcher(jobDetail, cachedScheduler) {
return new Promise((resolve, reject) => {
let params = {
'symbol': jobDetail.symbol,
'limit': jobDetail.limit,
'interval': ema.tradeEnum.KLINE_INTERVAL_1DAY
};
let headers ={
'apiKey': 'mIiECMzRBcbblEIqIBb9kFE13h5ITvMFXQw54wIW2h1UyxiC0WdsrYrx8UvEw2Sx'
};
let url='https://api.binance.com/api/v3/klines';
axios.get(url, {params, headers}).then(res => {
// console.log(res)
ema.emaCalculator(res.data)
resolve(res)
})
.catch(err => {
console.log(err)
reject(err)
})
// const task = new AsyncTask(
// jobDetail.jobID,
// () => {
// //symbol is the pair of trade, limit is the maximum of candle sticks returned, interval is the
// let params = {
// 'symbol': jobDetail.symbol,
// 'limit': jobDetail.limit,
// 'interval': ema.tradeEnum.KLINE_INTERVAL_1DAY
// };
// let headers ={
// 'apiKey': 'mIiECMzRBcbblEIqIBb9kFE13h5ITvMFXQw54wIW2h1UyxiC0WdsrYrx8UvEw2Sx'
// };
// let url='https://api.binance.com/api/v3/klines';
// axios.get(url, {params, headers}).then(res => {
// console.log(res)
// resolve(res)
// })
// .catch(err => {
// reject(err)
// })
// // return news_scraper.getNews('https://api.binance.com/api/v3/klines').then(res => {
// // console.log('get ema data ok')
// // resolve(res)
// // }).catch(err => {
// // console.log(err);
// // reject(err)
// // })
// },
// (err) => {
// console.log(err);
// reject(err)
// })
// const job = new SimpleIntervalJob({ seconds: jobDetail.timeInterval, }, task, jobDetail.jobID)
// cachedScheduler.addSimpleIntervalJob(job)
// this.saveCronJobToDatabase(jobDetail)
})
},
saveCronJobToDatabase(jobDetail) {
return new Promise((resolve, reject) => {
let cronJobsCollection = dbClient.db("sample_airbnb").collection("cronjobs");
cronJobsCollection.insertOne(jobDetail).then(res => {
console.log(res)
resolve(res)
})
.catch(err => {
console.log(err)
reject(err)
})
})
},
removeCronJobFromDatabase(jobID) {
return new Promise((resolve, reject) => {
let cronJobsCollection = dbClient.db("sample_airbnb").collection("cronjobs");
cronJobsCollection.deleteOne({ "jobID": jobID }).then(res => {
console.log('Xoá job khỏi dB thành công')
console.log(res)
resolve(res)
}).catch(err => {
console.log(err)
reject(err)
});
})
}
}