Skip to content

Commit ebbc56d

Browse files
committed
web: use query wrappers in handlers
Replace direct bun.DB access in the web handlers with the Queries wrappers so all database access goes through a single handle. Signed-off-by: Robin Jarry <robin@jarry.cc>
1 parent 500efa5 commit ebbc56d

8 files changed

Lines changed: 86 additions & 98 deletions

File tree

‎pkg/web/auth.go‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func (h *webHandler) RegisterSubmit(w http.ResponseWriter, r *http.Request) {
5656

5757
if len(errors) == 0 {
5858
var count int
59-
count, _ = q.DB.NewSelect().Model((*db.User)(nil)).
59+
count, _ = q.Select((*db.User)(nil)).
6060
Where("LOWER(username) = LOWER(?)", username).
6161
Count(q.Ctx)
6262
if count > 0 {
@@ -65,7 +65,7 @@ func (h *webHandler) RegisterSubmit(w http.ResponseWriter, r *http.Request) {
6565
}
6666
if len(errors) == 0 {
6767
var count int
68-
count, _ = q.DB.NewSelect().Model((*db.User)(nil)).
68+
count, _ = q.Select((*db.User)(nil)).
6969
Where("LOWER(email) = LOWER(?)", email).
7070
Count(q.Ctx)
7171
if count > 0 {
@@ -129,7 +129,7 @@ func (h *webHandler) ConfirmHandler(w http.ResponseWriter, r *http.Request) {
129129
key := urlParam(r, "key")
130130

131131
var conf db.EmailConfirmation
132-
err := q.DB.NewSelect().Model(&conf).
132+
err := q.Select(&conf).
133133
Where("key = ?", key).
134134
Scan(q.Ctx)
135135
if err != nil {
@@ -164,7 +164,7 @@ func (h *webHandler) confirmRegistration(w http.ResponseWriter, r *http.Request,
164164
return
165165
}
166166

167-
_, err := q.DB.NewUpdate().Model((*db.User)(nil)).
167+
_, err := q.Update((*db.User)(nil)).
168168
Where("id = ?", *conf.UserID).
169169
Set("is_active = ?", true).
170170
Exec(q.Ctx)
@@ -175,25 +175,25 @@ func (h *webHandler) confirmRegistration(w http.ResponseWriter, r *http.Request,
175175
}
176176

177177
var person db.Person
178-
err = q.DB.NewSelect().Model(&person).
178+
err = q.Select(&person).
179179
Where("LOWER(email) = LOWER(?)", conf.Email).
180180
Scan(q.Ctx)
181181
if err != nil {
182182
person = db.Person{Email: conf.Email}
183-
if _, err := q.DB.NewInsert().Model(&person).Exec(q.Ctx); err != nil {
183+
if err := q.Insert(&person); err != nil {
184184
confirmResultPage(pc, "Confirmation failed.").Render(ctx, w)
185185
return
186186
}
187187
}
188-
if _, err := q.DB.NewUpdate().Model(&person).
188+
if _, err := q.Update(&person).
189189
Where("id = ?", person.ID).
190190
Set("user_id = ?", *conf.UserID).
191191
Exec(q.Ctx); err != nil {
192192
confirmResultPage(pc, "Confirmation failed.").Render(ctx, w)
193193
return
194194
}
195195

196-
_, _ = q.DB.NewUpdate().Model(conf).
196+
_, _ = q.Update(conf).
197197
Where("id = ?", conf.ID).
198198
Set("active = ?", false).
199199
Exec(q.Ctx)
@@ -210,25 +210,25 @@ func (h *webHandler) confirmLink(w http.ResponseWriter, r *http.Request, q *db.Q
210210
}
211211

212212
var person db.Person
213-
err := q.DB.NewSelect().Model(&person).
213+
err := q.Select(&person).
214214
Where("LOWER(email) = LOWER(?)", conf.Email).
215215
Scan(q.Ctx)
216216
if err != nil {
217217
person = db.Person{Email: conf.Email}
218-
if _, err := q.DB.NewInsert().Model(&person).Exec(q.Ctx); err != nil {
218+
if err := q.Insert(&person); err != nil {
219219
confirmResultPage(pc, "Confirmation failed.").Render(ctx, w)
220220
return
221221
}
222222
}
223-
if _, err := q.DB.NewUpdate().Model(&person).
223+
if _, err := q.Update(&person).
224224
Where("id = ?", person.ID).
225225
Set("user_id = ?", *conf.UserID).
226226
Exec(q.Ctx); err != nil {
227227
confirmResultPage(pc, "Confirmation failed.").Render(ctx, w)
228228
return
229229
}
230230

231-
_, _ = q.DB.NewUpdate().Model(conf).
231+
_, _ = q.Update(conf).
232232
Where("id = ?", conf.ID).
233233
Set("active = ?", false).
234234
Exec(q.Ctx)

‎pkg/web/bundles.go‎

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func (h *webHandler) BundleList(w http.ResponseWriter, r *http.Request) {
3131
pc := h.pageCtx(r)
3232

3333
var bundles []db.Bundle
34-
q.DB.NewSelect().Model(&bundles).
34+
q.Select(&bundles).
3535
ColumnExpr("bundle.*, (SELECT count(*) FROM bundle_patch WHERE bundle_id = bundle.id) AS patch_count").
3636
Relation("Owner").Relation("Project").
3737
Where("owner_id = ?", user.ID).
@@ -53,7 +53,7 @@ func (h *webHandler) ProjectBundleList(w http.ResponseWriter, r *http.Request) {
5353
}
5454
pc := h.projectPageCtx(r, project)
5555

56-
sq := q.DB.NewSelect().Model((*db.Bundle)(nil)).
56+
sq := q.Select((*db.Bundle)(nil)).
5757
ColumnExpr("bundle.*, (SELECT count(*) FROM bundle_patch WHERE bundle_id = bundle.id) AS patch_count").
5858
Relation("Owner").Relation("Project").
5959
Where("project_id = ?", project.ID).
@@ -91,8 +91,7 @@ func (h *webHandler) BundleDetail(w http.ResponseWriter, r *http.Request) {
9191
user := getWebUser(r)
9292

9393
var bundle db.Bundle
94-
err := q.DB.NewSelect().
95-
Model(&bundle).
94+
err := q.Select(&bundle).
9695
Join("JOIN auth_user AS u ON u.id = bundle.owner_id").
9796
Where("u.username = ?", username).
9897
Where("bundle.name = ?", bundlename).
@@ -109,8 +108,7 @@ func (h *webHandler) BundleDetail(w http.ResponseWriter, r *http.Request) {
109108
}
110109

111110
var patches []db.Patch
112-
err = q.DB.NewSelect().
113-
Model(&patches).
111+
err = q.Select(&patches).
114112
Relation("Submitter").Relation("State").Relation("Delegate").
115113
Join("JOIN bundle_patch AS bp ON bp.patch_id = patch.id").
116114
Where("bp.bundle_id = ?", bundle.ID).
@@ -126,9 +124,9 @@ func (h *webHandler) BundleDetail(w http.ResponseWriter, r *http.Request) {
126124
return
127125
}
128126

129-
var owner db.User
130-
if q.DB.NewSelect().Model(&owner).Where("id = ?", bundle.OwnerID).Scan(q.Ctx) == nil {
131-
bundle.Owner = &owner
127+
owner, err := q.GetUserByID(bundle.OwnerID)
128+
if err == nil {
129+
bundle.Owner = owner
132130
}
133131
project, err := q.GetProjectByID(bundle.ProjectID)
134132
if err == nil {
@@ -160,8 +158,7 @@ func (h *webHandler) BundleUpdate(w http.ResponseWriter, r *http.Request) {
160158
}
161159

162160
var bundle db.Bundle
163-
err := q.DB.NewSelect().
164-
Model(&bundle).
161+
err := q.Select(&bundle).
165162
Join("JOIN auth_user AS u ON u.id = bundle.owner_id").
166163
Where("u.username = ?", username).
167164
Where("bundle.name = ?", bundlename).
@@ -176,12 +173,12 @@ func (h *webHandler) BundleUpdate(w http.ResponseWriter, r *http.Request) {
176173

177174
switch action {
178175
case "delete":
179-
if _, err := q.DB.NewDelete().Model((*db.BundlePatch)(nil)).
176+
if _, err := q.Delete((*db.BundlePatch)(nil)).
180177
Where("bundle_id = ?", bundle.ID).Exec(q.Ctx); err != nil {
181178
serverErrorPage(w, "delete bundle patches", err)
182179
return
183180
}
184-
if _, err := q.DB.NewDelete().Model((*db.Bundle)(nil)).
181+
if _, err := q.Delete((*db.Bundle)(nil)).
185182
Where("id = ?", bundle.ID).Exec(q.Ctx); err != nil {
186183
serverErrorPage(w, "delete bundle", err)
187184
return
@@ -192,7 +189,7 @@ func (h *webHandler) BundleUpdate(w http.ResponseWriter, r *http.Request) {
192189
newName := strings.TrimSpace(r.FormValue("name"))
193190
public := r.FormValue("public") == "on"
194191
if newName != "" {
195-
if _, err := q.DB.NewUpdate().Model(&bundle).
192+
if _, err := q.Update(&bundle).
196193
Where("id = ?", bundle.ID).
197194
Set("name = ?", newName).
198195
Set("public = ?", public).
@@ -211,7 +208,7 @@ func (h *webHandler) BundleUpdate(w http.ResponseWriter, r *http.Request) {
211208
if err != nil {
212209
continue
213210
}
214-
if _, err := q.DB.NewDelete().Model((*db.BundlePatch)(nil)).
211+
if _, err := q.Delete((*db.BundlePatch)(nil)).
215212
Where("bundle_id = ?", bundle.ID).
216213
Where("patch_id = ?", patchID).
217214
Exec(q.Ctx); err != nil {

‎pkg/web/covers.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func (h *webHandler) CoverDetailPage(w http.ResponseWriter, r *http.Request) {
2828
}
2929

3030
var cover db.Cover
31-
err = q.DB.NewSelect().Model(&cover).
31+
err = q.Select(&cover).
3232
Relation("Submitter").
3333
Where("project_id = ?", project.ID).
3434
Where("msgid = ?", msgid).
@@ -41,7 +41,7 @@ func (h *webHandler) CoverDetailPage(w http.ResponseWriter, r *http.Request) {
4141
var series *db.Series
4242
if cover.ID > 0 {
4343
var s db.Series
44-
if q.DB.NewSelect().Model(&s).Where("cover_letter_id = ?", cover.ID).Scan(q.Ctx) == nil {
44+
if q.Select(&s).Where("cover_letter_id = ?", cover.ID).Scan(q.Ctx) == nil {
4545
series = &s
4646
}
4747
}
@@ -100,7 +100,7 @@ func (h *webHandler) CoverRedirect(w http.ResponseWriter, r *http.Request) {
100100
Msgid string
101101
ProjectID int
102102
}
103-
err = q.DB.NewSelect().Model((*db.Cover)(nil)).
103+
err = q.Select((*db.Cover)(nil)).
104104
Column("msgid", "project_id").
105105
Where("id = ?", id).
106106
Scan(q.Ctx, &cover)

‎pkg/web/mbox.go‎

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ func (h *webHandler) PatchMboxPage(w http.ResponseWriter, r *http.Request) {
2626
msgid := "<" + rawMsgid + ">"
2727

2828
var patch db.Patch
29-
err := q.DB.NewSelect().
30-
Model(&patch).
29+
err := q.Select(&patch).
3130
Join("JOIN project AS pr ON pr.id = patch.project_id").
3231
Where("pr.linkname = ?", linkname).
3332
Where("patch.msgid = ?", msgid).
@@ -38,7 +37,7 @@ func (h *webHandler) PatchMboxPage(w http.ResponseWriter, r *http.Request) {
3837
}
3938

4039
var project db.Project
41-
err = q.DB.NewSelect().Model(&project).Where("id = ?", patch.ProjectID).Scan(q.Ctx)
40+
err = q.Select(&project).Where("id = ?", patch.ProjectID).Scan(q.Ctx)
4241
if err != nil {
4342
serverErrorPage(w, "get project", err)
4443
return
@@ -72,8 +71,7 @@ func (h *webHandler) CoverMboxPage(w http.ResponseWriter, r *http.Request) {
7271
msgid := "<" + rawMsgid + ">"
7372

7473
var cover db.Cover
75-
err := q.DB.NewSelect().
76-
Model(&cover).
74+
err := q.Select(&cover).
7775
Join("JOIN project AS pr ON pr.id = cover.project_id").
7876
Where("pr.linkname = ?", linkname).
7977
Where("cover.msgid = ?", msgid).
@@ -84,7 +82,7 @@ func (h *webHandler) CoverMboxPage(w http.ResponseWriter, r *http.Request) {
8482
}
8583

8684
var project db.Project
87-
err = q.DB.NewSelect().Model(&project).Where("id = ?", cover.ProjectID).Scan(q.Ctx)
85+
err = q.Select(&project).Where("id = ?", cover.ProjectID).Scan(q.Ctx)
8886
if err != nil {
8987
serverErrorPage(w, "get project", err)
9088
return
@@ -114,22 +112,22 @@ func (h *webHandler) SeriesMbox(w http.ResponseWriter, r *http.Request) {
114112
}
115113

116114
var series db.Series
117-
err = q.DB.NewSelect().Model(&series).Where("id = ?", id).Scan(q.Ctx)
115+
err = q.Select(&series).Where("id = ?", id).Scan(q.Ctx)
118116
if err != nil {
119117
notFoundPage(w)
120118
return
121119
}
122120

123121
var project db.Project
124122
if series.ProjectID != nil {
125-
if err = q.DB.NewSelect().Model(&project).Where("id = ?", *series.ProjectID).Scan(q.Ctx); err != nil {
123+
if err = q.Select(&project).Where("id = ?", *series.ProjectID).Scan(q.Ctx); err != nil {
126124
serverErrorPage(w, "get project", err)
127125
return
128126
}
129127
}
130128

131129
var patches []db.Patch
132-
err = q.DB.NewSelect().Model(&patches).
130+
err = q.Select(&patches).
133131
Where("series_id = ?", series.ID).
134132
OrderBy("number", bun.OrderAsc).
135133
Scan(ctx)
@@ -171,7 +169,7 @@ func (h *webHandler) seriesPatchMbox(w http.ResponseWriter, r *http.Request, pat
171169

172170
var deps []db.Patch
173171
if patch.Number != nil {
174-
q.DB.NewSelect().Model(&deps).
172+
q.Select(&deps).
175173
Where("series_id = ?", *patch.SeriesID).
176174
Where("number < ?", *patch.Number).
177175
OrderBy("number", bun.OrderAsc).
@@ -196,8 +194,7 @@ func (h *webHandler) BundleMbox(w http.ResponseWriter, r *http.Request) {
196194
bundlename := urlParam(r, "bundlename")
197195

198196
var bundle db.Bundle
199-
err := q.DB.NewSelect().
200-
Model(&bundle).
197+
err := q.Select(&bundle).
201198
Join("JOIN auth_user AS u ON u.id = bundle.owner_id").
202199
Where("u.username = ?", username).
203200
Where("bundle.name = ?", bundlename).
@@ -213,14 +210,13 @@ func (h *webHandler) BundleMbox(w http.ResponseWriter, r *http.Request) {
213210
}
214211

215212
var project db.Project
216-
if err = q.DB.NewSelect().Model(&project).Where("id = ?", bundle.ProjectID).Scan(q.Ctx); err != nil {
213+
if err = q.Select(&project).Where("id = ?", bundle.ProjectID).Scan(q.Ctx); err != nil {
217214
serverErrorPage(w, "get project", err)
218215
return
219216
}
220217

221218
var patches []db.Patch
222-
err = q.DB.NewSelect().
223-
Model(&patches).
219+
err = q.Select(&patches).
224220
Join("JOIN bundle_patch AS bp ON bp.patch_id = patch.id").
225221
Where("bp.bundle_id = ?", bundle.ID).
226222
OrderBy("bp.order", bun.OrderAsc).
@@ -253,19 +249,19 @@ func (h *webHandler) CommentRedirect(w http.ResponseWriter, r *http.Request) {
253249
var pc struct {
254250
PatchID int
255251
}
256-
err = q.DB.NewSelect().Model((*db.PatchComment)(nil)).Column("patch_id").
252+
err = q.Select((*db.PatchComment)(nil)).Column("patch_id").
257253
Where("id = ?", id).
258254
Scan(ctx, &pc)
259255
if err == nil {
260256
var patch struct {
261257
Msgid string
262258
ProjectID int
263259
}
264-
q.DB.NewSelect().Model((*db.Patch)(nil)).Column("msgid", "project_id").
260+
q.Select((*db.Patch)(nil)).Column("msgid", "project_id").
265261
Where("id = ?", pc.PatchID).
266262
Scan(ctx, &patch)
267263
var linkname string
268-
q.DB.NewSelect().Model((*db.Project)(nil)).Column("linkname").
264+
q.Select((*db.Project)(nil)).Column("linkname").
269265
Where("id = ?", patch.ProjectID).
270266
Scan(ctx, &linkname)
271267
http.Redirect(w, r,
@@ -278,19 +274,19 @@ func (h *webHandler) CommentRedirect(w http.ResponseWriter, r *http.Request) {
278274
var cc struct {
279275
CoverID int
280276
}
281-
err = q.DB.NewSelect().Model((*db.CoverComment)(nil)).Column("cover_id").
277+
err = q.Select((*db.CoverComment)(nil)).Column("cover_id").
282278
Where("id = ?", id).
283279
Scan(ctx, &cc)
284280
if err == nil {
285281
var cover struct {
286282
Msgid string
287283
ProjectID int
288284
}
289-
q.DB.NewSelect().Model((*db.Cover)(nil)).Column("msgid", "project_id").
285+
q.Select((*db.Cover)(nil)).Column("msgid", "project_id").
290286
Where("id = ?", cc.CoverID).
291287
Scan(ctx, &cover)
292288
var linkname string
293-
q.DB.NewSelect().Model((*db.Project)(nil)).Column("linkname").
289+
q.Select((*db.Project)(nil)).Column("linkname").
294290
Where("id = ?", cover.ProjectID).
295291
Scan(ctx, &linkname)
296292
http.Redirect(w, r,

0 commit comments

Comments
 (0)