-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtable_corp_members.go
46 lines (41 loc) · 1.25 KB
/
table_corp_members.go
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
// `corp_members` table definition
package main
import (
"encoding/json"
"fmt"
)
type corpMember []uint64
func tablesInitcorpMembers() {
c.Tables["corp_members"].handlePageData = func(k *kpage) error {
k.pageMutex.Lock()
k.job.jobMutex.Lock()
var corpMember corpMember
if err := json.Unmarshal(k.body, &corpMember); err != nil {
return err
}
k.recs = int64(len(corpMember))
k.ins.Grow(len(corpMember) * 30)
k.ids.Grow(len(corpMember) * 10)
for it := range corpMember {
k.records++
fmt.Fprintf(&k.ids, "%s%d", k.idscomma, corpMember[it])
k.idscomma = ","
if _, ok := k.job.sqldata[corpMember[it]]; !ok {
k.recordsNew++
k.job.allsqldata[corpMember[it]] = 1
fmt.Fprintf(&k.ins, "%s(%s,%d)", k.inscomma, k.job.Source, corpMember[it])
k.inscomma = ","
k.insrecs++
} else {
k.recordsStale++
delete(k.job.sqldata, corpMember[it]) //remove matched items from the map
}
}
k.pageMutex.Unlock()
k.job.jobMutex.Unlock()
return nil
}
c.Tables["corp_members"].handleWriteIns = func(k *kjob) int64 { //jobMutex is already locked for us.
return safeExec(fmt.Sprintf("INSERT IGNORE INTO `%s`.`%s` (%s) VALUES %s %s", k.table.DB, k.table.Name, k.table.columnOrder(), k.insJob.String(), k.table.Duplicates))
}
}