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
|
package db
import (
"github.com/FChannel0/FChannel-Server/config"
"github.com/FChannel0/FChannel-Server/util"
)
type Reports struct {
ID string
Count int
Reason []string
}
type Report struct {
ID string
Reason string
}
type Removed struct {
ID string
Type string
Board string
}
func CloseLocalReport(id string, board string) error {
query := `delete from reported where id=$1 and board=$2`
_, err := config.DB.Exec(query, id, board)
return util.MakeError(err, "CloseLocalReportDB")
}
func CreateLocalDelete(id string, _type string) error {
var i string
query := `select id from removed where id=$1`
if err := config.DB.QueryRow(query, id).Scan(&i); err != nil {
query := `insert into removed (id, type) values ($1, $2)`
if _, err := config.DB.Exec(query, id, _type); err != nil {
return util.MakeError(err, "CreateLocalDeleteDB")
}
}
query = `update removed set type=$1 where id=$2`
_, err := config.DB.Exec(query, _type, id)
return util.MakeError(err, "CreateLocalDeleteDB")
}
func CreateLocalReport(id string, board string, reason string) error {
query := `insert into reported (id, count, board, reason) values ($1, $2, $3, $4)`
_, err := config.DB.Exec(query, id, 1, board, reason)
return util.MakeError(err, "CreateLocalReportDB")
}
func GetLocalDelete() ([]Removed, error) {
var deleted []Removed
query := `select id, type from removed`
rows, err := config.DB.Query(query)
if err != nil {
return deleted, util.MakeError(err, "GetLocalDeleteDB")
}
defer rows.Close()
for rows.Next() {
var r Removed
if err := rows.Scan(&r.ID, &r.Type); err != nil {
return deleted, util.MakeError(err, "GetLocalDeleteDB")
}
deleted = append(deleted, r)
}
return deleted, nil
}
func GetLocalReport(board string) (map[string]Reports, error) {
var reported = make(map[string]Reports)
query := `select id, reason from reported where board=$1`
rows, err := config.DB.Query(query, board)
if err != nil {
return reported, util.MakeError(err, "GetLocalReportDB")
}
defer rows.Close()
for rows.Next() {
var r Report
if err := rows.Scan(&r.ID, &r.Reason); err != nil {
return reported, util.MakeError(err, "GetLocalReportDB")
}
if report, has := reported[r.ID]; has {
report.Count += 1
report.Reason = append(report.Reason, r.Reason)
reported[r.ID] = report
continue
}
reported[r.ID] = Reports{
ID: r.ID,
Count: 1,
Reason: []string{r.Reason},
}
}
return reported, nil
}
|