-
Notifications
You must be signed in to change notification settings - Fork 0
/
section.go
108 lines (83 loc) · 2.17 KB
/
section.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
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
package models
import (
"database/sql"
"fmt"
)
// Section contains information related to the section table in the database
type Section struct {
ID int `json:"id"`
Name string `json:"name"`
RSS string `json:"rss"`
Failed bool `json:"failed"`
Newspaper string `json:"newspaper"`
Subscribed bool `json:"subscribed"`
}
// Sections is a list of Section
type Sections struct {
Sections []Section `json:"sections"`
}
func sectionsFromRows(rows *sql.Rows) Sections {
sections := Sections{}
for rows.Next() {
s := Section{}
e := rows.Scan(&s.ID, &s.Name, &s.RSS, &s.Failed, &s.Newspaper, &s.Subscribed)
if e != nil {
panic(e)
}
sections.Sections = append(sections.Sections, s)
}
return sections
}
func getSectionsByUser(db *sql.DB, userID int64) Sections {
rows, err := db.Query(getUserSections, userID)
if err != nil {
panic(err)
}
defer rows.Close()
return sectionsFromRows(rows)
}
// GetSectionsByName returns an instance of Sections filtered by section name
func GetSectionsByName(db *sql.DB, name string, userID int64) Sections {
rows, err := db.Query(SectionsByName, name, userID)
if err != nil {
panic(err)
}
defer rows.Close()
return sectionsFromRows(rows)
}
// GetSectionsByNewspaper returns an instance of Sections filtered by newspaperID
func GetSectionsByNewspaper(db *sql.DB, newspaperID int, userID int64) Sections {
fmt.Println("NEWSPAPER")
fmt.Println(newspaperID)
fmt.Println(SectionsByNewspaper)
rows, err := db.Query(SectionsByNewspaper, newspaperID, userID)
if err != nil {
panic(err)
}
defer rows.Close()
return sectionsFromRows(rows)
}
// GetSectionsByTags returns an instances of Sections that are mapped to a tag
func GetSectionsByTags(db *sql.DB, tags string) Sections {
tagIDs := GetIDsFromTags(db, tags)
fmt.Println(tagIDs)
return Sections{}
}
func Subscribe(db *sql.DB, sectionID int64, userID int64, subscribe bool) (int64, error) {
var sql string
if subscribe {
sql = subscribeUser
} else {
sql = unsubscribeUser
}
s, e := db.Prepare(sql)
if e != nil {
panic(e)
}
defer s.Close()
r, e := s.Exec(sectionID, userID)
if e != nil {
panic(e)
}
return r.RowsAffected()
}