diff options
Diffstat (limited to 'db/report.go')
-rw-r--r-- | db/report.go | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/db/report.go b/db/report.go index 4fcb806..a64c94f 100644 --- a/db/report.go +++ b/db/report.go @@ -1,5 +1,17 @@ package db +type Report struct { + ID string + Count int + Reason string +} + +type Removed struct { + ID string + Type string + Board string +} + func DeleteReportActivity(id string) error { query := `delete from reported where id=$1` @@ -54,3 +66,129 @@ func ReportActivity(id string, reason string) (bool, error) { return true, nil } + +func CreateLocalDeleteDB(id string, _type string) error { + query := `select id from removed where id=$1` + + rows, err := db.Query(query, id) + if err != nil { + return err + } + defer rows.Close() + + if rows.Next() { + var i string + + if err := rows.Scan(&i); err != nil { + return err + } + + if i != "" { + query := `update removed set type=$1 where id=$2` + + if _, err := db.Exec(query, _type, id); err != nil { + return err + } + } + } else { + query := `insert into removed (id, type) values ($1, $2)` + + if _, err := db.Exec(query, id, _type); err != nil { + return err + } + } + + return nil +} + +func GetLocalDeleteDB() ([]Removed, error) { + var deleted []Removed + + query := `select id, type from removed` + + rows, err := db.Query(query) + if err != nil { + return deleted, err + } + + defer rows.Close() + + for rows.Next() { + var r Removed + + if err := rows.Scan(&r.ID, &r.Type); err != nil { + return deleted, err + } + + deleted = append(deleted, r) + } + + return deleted, nil +} + +func CreateLocalReportDB(id string, board string, reason string) error { + query := `select id, count from reported where id=$1 and board=$2` + + rows, err := db.Query(query, id, board) + if err != nil { + return err + } + defer rows.Close() + + if rows.Next() { + var i string + var count int + + if err := rows.Scan(&i, &count); err != nil { + return err + } + + if i != "" { + count = count + 1 + query := `update reported set count=$1 where id=$2` + + if _, err := db.Exec(query, count, id); err != nil { + return err + } + } + } else { + query := `insert into reported (id, count, board, reason) values ($1, $2, $3, $4)` + + if _, err := db.Exec(query, id, 1, board, reason); err != nil { + return err + } + } + + return nil +} + +func GetLocalReportDB(board string) ([]Report, error) { + var reported []Report + + query := `select id, count, reason from reported where board=$1` + + rows, err := db.Query(query, board) + if err != nil { + return reported, err + } + defer rows.Close() + + for rows.Next() { + var r Report + + if err := rows.Scan(&r.ID, &r.Count, &r.Reason); err != nil { + return reported, err + } + + reported = append(reported, r) + } + + return reported, nil +} + +func CloseLocalReportDB(id string, board string) error { + query := `delete from reported where id=$1 and board=$2` + + _, err := db.Exec(query, id, board) + return err +} |