-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfile_handler.go
More file actions
63 lines (56 loc) · 1.72 KB
/
Copy pathfile_handler.go
File metadata and controls
63 lines (56 loc) · 1.72 KB
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
package main
import (
"database/sql"
"github.com/chararch/gobatch"
"github.com/chararch/gobatch/file"
"time"
)
var tradeFile = file.FileObjectModel{
FileStore: &file.LocalFileSystem{},
FileName: "res/trade.data",
Type: file.TSV,
Encoding: "utf-8",
Header: false,
ItemPrototype: &Trade{},
}
var statsFileExport = file.FileObjectModel{
FileStore: &file.LocalFileSystem{},
FileName: "res/{date,yyyyMMdd}/stats.csv",
Type: file.CSV,
Encoding: "utf-8",
Checksum: file.MD5,
ItemPrototype: &RepayPlanStats{},
}
var ftp = &file.FTPFileSystem{
Hort: "localhost",
Port: 21,
User: "gobatch",
Password: "gobatch123",
ConnTimeout: time.Second * 10,
}
var copyFileToFtp = file.FileMove{
FromFileName: "res/{date,yyyyMMdd}/stats.csv",
FromFileStore: &file.LocalFileSystem{},
ToFileStore: ftp,
ToFileName: "stats/{date,yyyyMMdd}/stats.csv",
}
var copyChecksumFileToFtp = file.FileMove{
FromFileName: "res/{date,yyyyMMdd}/stats.csv.md5",
FromFileStore: &file.LocalFileSystem{},
ToFileStore: ftp,
ToFileName: "stats/{date,yyyyMMdd}/stats.csv.md5",
}
type tradeImporter struct {
db *sql.DB
}
func (p *tradeImporter) Write(items []interface{}, chunkCtx *gobatch.ChunkContext) gobatch.BatchError {
for _, item := range items {
trade := item.(*Trade)
_, err := p.db.Exec("INSERT INTO t_trade(trade_no, account_no, type, amount, terms, interest_rate, trade_time, status) values (?,?,?,?,?,?,?,?)",
trade.TradeNo, trade.AccountNo, trade.Type, trade.Amount, trade.Terms, trade.InterestRate, trade.TradeTime, trade.Status)
if err != nil {
return gobatch.NewBatchError(gobatch.ErrCodeDbFail, "insert trade into db err", err)
}
}
return nil
}