Skip to content

Commit bb846df

Browse files
committed
update
1 parent 71bc589 commit bb846df

4 files changed

Lines changed: 71 additions & 23 deletions

File tree

reader/reader.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,11 @@ func (reader *Reader) GetFeed(id string) (feed *Feed, err error) {
205205
return
206206
}
207207

208+
func (reader *Reader) DeleteFeed(id string) (err error) {
209+
_, err = reader.db.Exec("DELETE FROM feeds WHERE id = ?", id)
210+
return
211+
}
212+
208213
func (reader *Reader) GetPosts(conditions []string, limit *Pagination) (posts []Post, err error) {
209214
conditions = append(conditions, "p.feed_id = s.id")
210215
conditions = append(conditions, "s.category_id = g.id")

reader/server.go

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -191,28 +191,7 @@ func (reader *Reader) NewView(w http.ResponseWriter, r *http.Request) {
191191
})
192192
}
193193

194-
// FeedView handles requests to the feed page.
195-
func (reader *Reader) FeedView(w http.ResponseWriter, r *http.Request) {
196-
if r.URL.Query().Has("id") {
197-
feedId := r.URL.Query().Get("id")
198-
feed, err := reader.GetFeed(feedId)
199-
if err != nil {
200-
reader.Error(w, err)
201-
return
202-
}
203-
limit := NewLimitFromQuery(r.URL.Query())
204-
posts, err := reader.GetPostsByFeedId(feedId, limit)
205-
if err != nil {
206-
reader.Error(w, err)
207-
return
208-
}
209-
reader.Render(w, "posts", H{
210-
"feed": feed,
211-
"posts": posts,
212-
"pagination": limit,
213-
})
214-
return
215-
}
194+
func (reader *Reader) FeedsView(w http.ResponseWriter, r *http.Request) {
216195
var conditions []string
217196
if r.URL.Query().Has("category") {
218197
categoryId := r.URL.Query().Get("category")
@@ -234,6 +213,51 @@ func (reader *Reader) FeedView(w http.ResponseWriter, r *http.Request) {
234213
})
235214
}
236215

216+
func (reader *Reader) PostsView(w http.ResponseWriter, r *http.Request) {
217+
feedId := r.URL.Query().Get("id")
218+
feed, err := reader.GetFeed(feedId)
219+
if err != nil {
220+
reader.Error(w, err)
221+
return
222+
}
223+
limit := NewLimitFromQuery(r.URL.Query())
224+
posts, err := reader.GetPostsByFeedId(feedId, limit)
225+
if err != nil {
226+
reader.Error(w, err)
227+
return
228+
}
229+
reader.Render(w, "posts", H{
230+
"feed": feed,
231+
"posts": posts,
232+
"pagination": limit,
233+
})
234+
}
235+
236+
func (reader *Reader) DeleteFeedView(w http.ResponseWriter, r *http.Request) {
237+
feedId := r.URL.Query().Get("id")
238+
err := reader.DeleteFeed(feedId)
239+
if err != nil {
240+
reader.Error(w, err)
241+
return
242+
}
243+
w.WriteHeader(http.StatusOK)
244+
}
245+
246+
// FeedView handles requests to the feed page.
247+
func (reader *Reader) FeedView(w http.ResponseWriter, r *http.Request) {
248+
switch r.Method {
249+
case "GET":
250+
if r.URL.Query().Has("id") {
251+
reader.PostsView(w, r)
252+
} else {
253+
reader.FeedsView(w, r)
254+
}
255+
case "DELETE":
256+
reader.DeleteFeedView(w, r)
257+
}
258+
259+
}
260+
237261
// PostView handles requests to view a specific post.
238262
func (reader *Reader) PostView(w http.ResponseWriter, r *http.Request) {
239263
if r.URL.Query().Has("id") {

templates/layout.html

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,23 @@
2121
.form-field {
2222
margin-bottom: 5px;
2323
}
24+
2425
article {
2526
overflow: hidden;
2627
white-space: wrap;
2728
}
29+
2830
[method="delete"] {
2931
color: red;
3032
}
3133
</style>
32-
<style>{{.Stylesheet}}</style>
34+
<style>
35+
{
36+
{
37+
.Stylesheet
38+
}
39+
}
40+
</style>
3341
</head>
3442

3543
<body>
@@ -49,6 +57,16 @@ <h1><a href="/">{{.AppName}}</a></h1>
4957
</div>
5058
</body>
5159

60+
<script>
61+
document.addEventListener('click', e => {
62+
const method = e.target.getAttribute('method');
63+
if (method) {
64+
e.preventDefault();
65+
fetch(e.target.href, { method });
66+
}
67+
})
68+
</script>
69+
5270
</html>
5371

5472
{{end}}

templates/posts.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,5 @@ <h2>
5050
</nav>
5151
{{end}}
5252

53+
5354
{{end}}

0 commit comments

Comments
 (0)