-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstart.js
83 lines (68 loc) · 2.16 KB
/
start.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
var update_user_list = require('./user_list.js')
var sleep = require('sleep')
// Initialize instance
var Sequelize = require('sequelize')
// Connect to database
var connection = new Sequelize('stock_forecast', 'root', 'password', {})
// Define models
var users = connection.define('users', {
user_id: {type: Sequelize.STRING(4), allowNull: false}
})
// Define models
var forecasts = connection.define('forecasts', {
user_id: {
type: Sequelize.STRING(4),
allowNull: false
},
win: { type: Sequelize.INTEGER }, // 1:勝ち、0:負け、9:予想中
start_date: { type: Sequelize.DATE },
position: { type: Sequelize.BOOLEAN }, // 1:買い、0:売り
span: { type: Sequelize.INTEGER }, // 1:1日、7:1週、30:1ヶ月
stock_code: {
type: Sequelize.STRING(4),
allowNull: false
},
start_price: { type: Sequelize.INTEGER },
end_price: { type: Sequelize.INTEGER },
highest_price: { type: Sequelize.INTEGER },
lowest_price: { type: Sequelize.INTEGER }
})
// cronJob = require('cron').CronJob
//
// cronTest = new cronJob('*/10 * * * * *', () => {
// console.log("jikan");
// })
//
// cronTest.start()
//
// ------- update user -------
for (var page = 1; page < 100; page++) {
const result = update_user_list(page, users);
if (result == 0) {
break;
}
sleep.sleep(2);
}
// ------- update forecast -------
// 不要なリクエストを投げないためには
// 予想中のデータがなければ1ページ目のみ読み込み
// 予想中のデータがあれば最古の予想中データを見つけるまでページを遡る
// => 最低でも全ユーザー分必要?=106ユーザー
// 1か月以上予想をしていないユーザーは日次更新から除外して
// 1か月に1回全検査をするときのみ対象とする
var update_forecasts = require('./index.js');
users.findAll().then((all_users) => {
all_users.map((user)=>{
var new_scan = true;
forecasts.findAll({where:
{and: [{win: 9},
{user_id: user.id}]
}
}).then((fs) => {
if (fs.length != 0) {
new_scan = false;
}
});
update_forecasts(user.user_id, forecasts, new_scan);
});
});