Skip to content

Commit 15f8a64

Browse files
committed
Bump Go & improve SQL layer
1 parent 95c67ac commit 15f8a64

File tree

14 files changed

+109
-135
lines changed

14 files changed

+109
-135
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ All you need to provide is your database -- PostgreSQL, Microsoft SQL Server or
1212

1313
## Latest Release
1414

15-
[Community edition: v5.6.0](https://github.com/documize/community/releases)
15+
[Community edition: v5.7.0](https://github.com/documize/community/releases)
1616

17-
[Community+ edition: v5.6.0](https://www.documize.com/community/get-started)
17+
[Community+ edition: v5.7.0](https://www.documize.com/community/get-started)
1818

1919
The Community+ edition is the "enterprise" offering with advanced capabilities and customer support:
2020

core/env/parser.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func commandLineEnv() (f Flags, ok bool) {
129129
f.ConfigSource = "flags/environment"
130130

131131
if len(f.TLSVersion) == 0 {
132-
f.TLSVersion = "1.2"
132+
f.TLSVersion = "1.3"
133133
}
134134

135135
return f, ok

domain/activity/store.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ package activity
1313

1414
import (
1515
"database/sql"
16-
"fmt"
1716
"time"
1817

1918
"github.com/documize/community/domain"
@@ -77,8 +76,10 @@ func (s Store) GetDocumentActivity(ctx domain.RequestContext, id string) (a []ac
7776

7877
// DeleteDocumentChangeActivity removes all entries for document changes (add, remove, update).
7978
func (s Store) DeleteDocumentChangeActivity(ctx domain.RequestContext, documentID string) (rows int64, err error) {
80-
rows, err = s.DeleteWhere(ctx.Transaction,
81-
fmt.Sprintf("DELETE FROM dmz_user_activity WHERE c_orgid='%s' AND c_docid='%s' AND (c_activitytype=1 OR c_activitytype=2 OR c_activitytype=3 OR c_activitytype=4 OR c_activitytype=7)", ctx.OrgID, documentID))
79+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_user_activity WHERE c_orgid=? AND c_docid=? AND (c_activitytype=1 OR c_activitytype=2 OR c_activitytype=3 OR c_activitytype=4 OR c_activitytype=7)"), ctx.OrgID, documentID)
80+
if err == sql.ErrNoRows {
81+
err = nil
82+
}
8283

8384
return
8485
}

domain/attachment/store.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ package attachment
1313

1414
import (
1515
"database/sql"
16-
"fmt"
1716
"strings"
1817
"time"
1918

@@ -147,8 +146,10 @@ func (s Store) Delete(ctx domain.RequestContext, id string) (rows int64, err err
147146

148147
// DeleteSection removes all attachments agasinst a section.
149148
func (s Store) DeleteSection(ctx domain.RequestContext, sectionID string) (rows int64, err error) {
150-
rows, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_attachment WHERE c_orgid='%s' AND c_sectionid='%s'",
151-
ctx.OrgID, sectionID))
149+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_attachment WHERE c_orgid=? AND c_sectionid=?"), ctx.OrgID, sectionID)
150+
if err == sql.ErrNoRows {
151+
err = nil
152+
}
152153

153154
return
154155
}

domain/category/store.go

+37-14
Original file line numberDiff line numberDiff line change
@@ -176,46 +176,69 @@ func (s Store) AssociateDocument(ctx domain.RequestContext, m category.Member) (
176176

177177
// DisassociateDocument removes document associatation from category.
178178
func (s Store) DisassociateDocument(ctx domain.RequestContext, categoryID, documentID string) (rows int64, err error) {
179-
sql := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_categoryid='%s' AND c_docid='%s'",
179+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_categoryid=? AND c_docid=?"),
180180
ctx.OrgID, categoryID, documentID)
181181

182-
return s.DeleteWhere(ctx.Transaction, sql)
182+
if err == sql.ErrNoRows {
183+
err = nil
184+
}
185+
186+
return
183187
}
184188

185189
// RemoveCategoryMembership removes all category associations from the store.
186190
func (s Store) RemoveCategoryMembership(ctx domain.RequestContext, categoryID string) (rows int64, err error) {
187-
sql := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_categoryid='%s'",
191+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_categoryid=?"),
188192
ctx.OrgID, categoryID)
189193

190-
return s.DeleteWhere(ctx.Transaction, sql)
194+
if err == sql.ErrNoRows {
195+
err = nil
196+
}
197+
198+
return
191199
}
192200

193201
// RemoveSpaceCategoryMemberships removes all category associations from the store for the space.
194202
func (s Store) RemoveSpaceCategoryMemberships(ctx domain.RequestContext, spaceID string) (rows int64, err error) {
195-
sql := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_spaceid='%s'",
203+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_spaceid=?"),
196204
ctx.OrgID, spaceID)
197205

198-
return s.DeleteWhere(ctx.Transaction, sql)
206+
if err == sql.ErrNoRows {
207+
err = nil
208+
}
209+
210+
return
199211
}
200212

201213
// RemoveDocumentCategories removes all document category associations from the store.
202214
func (s Store) RemoveDocumentCategories(ctx domain.RequestContext, documentID string) (rows int64, err error) {
203-
sql := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_docid='%s'",
215+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_docid=?"),
204216
ctx.OrgID, documentID)
205217

206-
return s.DeleteWhere(ctx.Transaction, sql)
218+
if err == sql.ErrNoRows {
219+
err = nil
220+
}
221+
222+
return
207223
}
208224

209225
// DeleteBySpace removes all category and category associations for given space.
210226
func (s Store) DeleteBySpace(ctx domain.RequestContext, spaceID string) (rows int64, err error) {
211-
s1 := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_spaceid='%s'", ctx.OrgID, spaceID)
212-
_, err = s.DeleteWhere(ctx.Transaction, s1)
213-
if err != nil {
214-
return
227+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_spaceid=?"),
228+
ctx.OrgID, spaceID)
229+
230+
if err == sql.ErrNoRows {
231+
err = nil
232+
}
233+
234+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category WHERE c_orgid=? AND c_spaceid=?"),
235+
ctx.OrgID, spaceID)
236+
237+
if err == sql.ErrNoRows {
238+
err = nil
215239
}
216240

217-
s2 := fmt.Sprintf("DELETE FROM dmz_category WHERE c_orgid='%s' AND c_spaceid='%s'", ctx.OrgID, spaceID)
218-
return s.DeleteWhere(ctx.Transaction, s2)
241+
return
219242
}
220243

221244
// GetSpaceCategorySummary returns number of documents and users for space categories.

domain/document/store.go

+9-44
Original file line numberDiff line numberDiff line change
@@ -254,57 +254,22 @@ func (s Store) MoveActivity(ctx domain.RequestContext, documentID, oldSpaceID, n
254254
// Delete removes the specified document.
255255
// Remove document pages, revisions, attachments, updates the search subsystem.
256256
func (s Store) Delete(ctx domain.RequestContext, documentID string) (rows int64, err error) {
257-
rows, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID))
258-
259-
if err != nil {
260-
return
261-
}
262-
263-
_, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section_revision WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID))
264-
if err != nil {
265-
return
266-
}
267-
268-
_, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_attachment WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID))
269-
if err != nil {
270-
return
271-
}
272-
273-
_, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID))
274-
if err != nil {
275-
return
276-
}
277-
278-
_, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_vote WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID))
279-
if err != nil {
280-
return
281-
}
257+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID)
258+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section_revision WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID)
259+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_attachment WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID)
260+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID)
261+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_vote WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID)
282262

283263
return s.DeleteConstrained(ctx.Transaction, "dmz_doc", ctx.OrgID, documentID)
284264
}
285265

286266
// DeleteBySpace removes all documents for given space.
287267
// Remove document pages, revisions, attachments, updates the search subsystem.
288268
func (s Store) DeleteBySpace(ctx domain.RequestContext, spaceID string) (rows int64, err error) {
289-
rows, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section WHERE c_docid IN (SELECT c_refid FROM dmz_doc WHERE c_spaceid='%s' AND c_orgid='%s')", spaceID, ctx.OrgID))
290-
if err != nil {
291-
return
292-
}
293-
294-
_, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section_revision WHERE c_docid IN (SELECT c_refid FROM dmz_doc WHERE c_spaceid='%s' AND c_orgid='%s')", spaceID, ctx.OrgID))
295-
if err != nil {
296-
return
297-
}
298-
299-
_, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_attachment WHERE c_docid IN (SELECT c_refid FROM dmz_doc WHERE c_spaceid='%s' AND c_orgid='%s')", spaceID, ctx.OrgID))
300-
if err != nil {
301-
return
302-
}
303-
304-
_, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_vote WHERE c_docid IN (SELECT c_refid FROM dmz_doc WHERE c_spaceid='%s' AND c_orgid='%s')", spaceID, ctx.OrgID))
305-
if err != nil {
306-
return
307-
}
269+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section WHERE c_docid IN (SELECT c_refid FROM dmz_doc WHERE c_spaceid=? AND c_orgid=?)"), spaceID, ctx.OrgID)
270+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section_revision WHERE c_docid IN (SELECT c_refid FROM dmz_doc WHERE c_spaceid=? AND c_orgid=?)"), spaceID, ctx.OrgID)
271+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_attachment WHERE c_docid IN (SELECT c_refid FROM dmz_doc WHERE c_spaceid=? AND c_orgid=?)"), spaceID, ctx.OrgID)
272+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_vote WHERE c_docid IN (SELECT c_refid FROM dmz_doc WHERE c_spaceid=? AND c_orgid=?)"), spaceID, ctx.OrgID)
308273

309274
return s.DeleteConstrained(ctx.Transaction, "dmz_doc", ctx.OrgID, spaceID)
310275
}

domain/group/store.go

+8-21
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ package group
1313

1414
import (
1515
"database/sql"
16-
"fmt"
1716
"time"
1817

1918
"github.com/documize/community/domain"
@@ -104,7 +103,10 @@ func (s Store) Delete(ctx domain.RequestContext, refID string) (rows int64, err
104103
if err != nil {
105104
return
106105
}
107-
return s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_group_member WHERE c_orgid='%s' AND c_groupid='%s'", ctx.OrgID, refID))
106+
107+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_group_member WHERE c_orgid=? AND c_groupid=?"), ctx.OrgID, refID)
108+
109+
return
108110
}
109111

110112
// GetGroupMembers returns all user associated with given group.
@@ -143,15 +145,8 @@ func (s Store) JoinGroup(ctx domain.RequestContext, groupID, userID string) (err
143145

144146
// LeaveGroup removes user from group.
145147
func (s Store) LeaveGroup(ctx domain.RequestContext, groupID, userID string) (err error) {
146-
_, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_group_member WHERE c_orgid='%s' AND c_groupid='%s' AND c_userid='%s'",
147-
ctx.OrgID, groupID, userID))
148-
149-
if err == sql.ErrNoRows {
150-
err = nil
151-
}
152-
if err != nil {
153-
err = errors.Wrap(err, "clear group member")
154-
}
148+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_group_member WHERE c_orgid=? AND c_groupid=? AND c_userid=?"),
149+
ctx.OrgID, groupID, userID)
155150

156151
return
157152
}
@@ -182,16 +177,8 @@ func (s Store) GetMembers(ctx domain.RequestContext) (r []group.Record, err erro
182177

183178
// RemoveUserGroups remove user from all group.
184179
func (s Store) RemoveUserGroups(ctx domain.RequestContext, userID string) (err error) {
185-
_, err = s.DeleteWhere(ctx.Transaction,
186-
fmt.Sprintf("DELETE FROM dmz_group_member WHERE c_orgid='%s' AND c_userid='%s'",
187-
ctx.OrgID, userID))
188-
189-
if err == sql.ErrNoRows {
190-
err = nil
191-
}
192-
if err != nil {
193-
err = errors.Wrap(err, "RemoveUserGroups")
194-
}
180+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_group_member WHERE c_orgid=? AND c_userid=?"),
181+
ctx.OrgID, userID)
195182

196183
return
197184
}

domain/link/store.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ package link
1313

1414
import (
1515
"database/sql"
16-
"fmt"
1716
"strings"
1817
"time"
1918

@@ -156,12 +155,18 @@ func (s Store) MarkOrphanAttachmentLink(ctx domain.RequestContext, attachmentID
156155

157156
// DeleteSourcePageLinks removes saved links for given source.
158157
func (s Store) DeleteSourcePageLinks(ctx domain.RequestContext, pageID string) (rows int64, err error) {
159-
return s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_link WHERE c_orgid='%s' AND c_sourcesectionid='%s'", ctx.OrgID, pageID))
158+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_link WHERE c_orgid=? AND c_sourcesectionid=?"),
159+
ctx.OrgID, pageID)
160+
161+
return
160162
}
161163

162164
// DeleteSourceDocumentLinks removes saved links for given document.
163165
func (s Store) DeleteSourceDocumentLinks(ctx domain.RequestContext, documentID string) (rows int64, err error) {
164-
return s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_link WHERE c_orgid='%s' AND c_sourcedocid='%s'", ctx.OrgID, documentID))
166+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_link WHERE c_orgid=? AND c_sourcedocid=?"),
167+
ctx.OrgID, documentID)
168+
169+
return
165170
}
166171

167172
// DeleteLink removes saved link from the store.

domain/page/store.go

+7-8
Original file line numberDiff line numberDiff line change
@@ -201,13 +201,12 @@ func (s Store) Update(ctx domain.RequestContext, page page.Page, refID, userID s
201201
// It then propagates that change into the search table, adds a delete the page revisions history, and audits that the page has been removed.
202202
func (s Store) Delete(ctx domain.RequestContext, documentID, pageID string) (rows int64, err error) {
203203
rows, err = s.DeleteConstrained(ctx.Transaction, "dmz_section", ctx.OrgID, pageID)
204-
if err == nil {
205-
_, _ = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section_meta WHERE c_orgid='%s' AND c_sectionid='%s'", ctx.OrgID, pageID))
206-
}
207204

208-
if err == nil {
209-
_, _ = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_action WHERE c_orgid='%s' AND c_reftypeid='%s' AND c_reftype='P'", ctx.OrgID, pageID))
210-
}
205+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section_meta WHERE c_orgid=? AND c_sectionid=?"),
206+
ctx.OrgID, pageID)
207+
208+
ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_action WHERE c_orgid=? AND c_reftypeid=? AND c_reftype='P'"),
209+
ctx.OrgID, pageID)
211210

212211
return
213212
}
@@ -408,8 +407,8 @@ func (s Store) GetDocumentRevisions(ctx domain.RequestContext, documentID string
408407

409408
// DeletePageRevisions deletes all of the page revision records for a given pageID.
410409
func (s Store) DeletePageRevisions(ctx domain.RequestContext, pageID string) (rows int64, err error) {
411-
rows, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section_revision WHERE c_orgid='%s' AND c_sectionid='%s'",
412-
ctx.OrgID, pageID))
410+
_, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section_revision WHERE c_orgid=? AND c_sectionid=?"),
411+
ctx.OrgID, pageID)
413412

414413
return
415414
}

0 commit comments

Comments
 (0)