diff --git a/README.md b/README.md index cb225d848..b1177db86 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ All you need to provide is your database -- PostgreSQL, Microsoft SQL Server or ## Latest Release -[Community edition: v5.6.0](https://github.com/documize/community/releases) +[Community edition: v5.7.0](https://github.com/documize/community/releases) -[Community+ edition: v5.6.0](https://www.documize.com/community/get-started) +[Community+ edition: v5.7.0](https://www.documize.com/community/get-started) The Community+ edition is the "enterprise" offering with advanced capabilities and customer support: diff --git a/core/env/parser.go b/core/env/parser.go index daa050a72..d0867f930 100644 --- a/core/env/parser.go +++ b/core/env/parser.go @@ -129,7 +129,7 @@ func commandLineEnv() (f Flags, ok bool) { f.ConfigSource = "flags/environment" if len(f.TLSVersion) == 0 { - f.TLSVersion = "1.2" + f.TLSVersion = "1.3" } return f, ok diff --git a/domain/activity/store.go b/domain/activity/store.go index 6ce53a202..461af2710 100644 --- a/domain/activity/store.go +++ b/domain/activity/store.go @@ -13,7 +13,6 @@ package activity import ( "database/sql" - "fmt" "time" "github.com/documize/community/domain" @@ -77,8 +76,10 @@ func (s Store) GetDocumentActivity(ctx domain.RequestContext, id string) (a []ac // DeleteDocumentChangeActivity removes all entries for document changes (add, remove, update). func (s Store) DeleteDocumentChangeActivity(ctx domain.RequestContext, documentID string) (rows int64, err error) { - rows, err = s.DeleteWhere(ctx.Transaction, - 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)) + _, 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) + if err == sql.ErrNoRows { + err = nil + } return } diff --git a/domain/attachment/store.go b/domain/attachment/store.go index 78a1f5cde..d2beb4b87 100644 --- a/domain/attachment/store.go +++ b/domain/attachment/store.go @@ -13,7 +13,6 @@ package attachment import ( "database/sql" - "fmt" "strings" "time" @@ -147,8 +146,10 @@ func (s Store) Delete(ctx domain.RequestContext, id string) (rows int64, err err // DeleteSection removes all attachments agasinst a section. func (s Store) DeleteSection(ctx domain.RequestContext, sectionID string) (rows int64, err error) { - rows, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_attachment WHERE c_orgid='%s' AND c_sectionid='%s'", - ctx.OrgID, sectionID)) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_attachment WHERE c_orgid=? AND c_sectionid=?"), ctx.OrgID, sectionID) + if err == sql.ErrNoRows { + err = nil + } return } diff --git a/domain/category/store.go b/domain/category/store.go index c13707fea..54fa347b2 100644 --- a/domain/category/store.go +++ b/domain/category/store.go @@ -176,46 +176,69 @@ func (s Store) AssociateDocument(ctx domain.RequestContext, m category.Member) ( // DisassociateDocument removes document associatation from category. func (s Store) DisassociateDocument(ctx domain.RequestContext, categoryID, documentID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_categoryid='%s' AND c_docid='%s'", + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_categoryid=? AND c_docid=?"), ctx.OrgID, categoryID, documentID) - return s.DeleteWhere(ctx.Transaction, sql) + if err == sql.ErrNoRows { + err = nil + } + + return } // RemoveCategoryMembership removes all category associations from the store. func (s Store) RemoveCategoryMembership(ctx domain.RequestContext, categoryID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_categoryid='%s'", + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_categoryid=?"), ctx.OrgID, categoryID) - return s.DeleteWhere(ctx.Transaction, sql) + if err == sql.ErrNoRows { + err = nil + } + + return } // RemoveSpaceCategoryMemberships removes all category associations from the store for the space. func (s Store) RemoveSpaceCategoryMemberships(ctx domain.RequestContext, spaceID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_spaceid='%s'", + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_spaceid=?"), ctx.OrgID, spaceID) - return s.DeleteWhere(ctx.Transaction, sql) + if err == sql.ErrNoRows { + err = nil + } + + return } // RemoveDocumentCategories removes all document category associations from the store. func (s Store) RemoveDocumentCategories(ctx domain.RequestContext, documentID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_docid='%s'", + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID) - return s.DeleteWhere(ctx.Transaction, sql) + if err == sql.ErrNoRows { + err = nil + } + + return } // DeleteBySpace removes all category and category associations for given space. func (s Store) DeleteBySpace(ctx domain.RequestContext, spaceID string) (rows int64, err error) { - s1 := fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_orgid='%s' AND c_spaceid='%s'", ctx.OrgID, spaceID) - _, err = s.DeleteWhere(ctx.Transaction, s1) - if err != nil { - return + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_spaceid=?"), + ctx.OrgID, spaceID) + + if err == sql.ErrNoRows { + err = nil + } + + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category WHERE c_orgid=? AND c_spaceid=?"), + ctx.OrgID, spaceID) + + if err == sql.ErrNoRows { + err = nil } - s2 := fmt.Sprintf("DELETE FROM dmz_category WHERE c_orgid='%s' AND c_spaceid='%s'", ctx.OrgID, spaceID) - return s.DeleteWhere(ctx.Transaction, s2) + return } // GetSpaceCategorySummary returns number of documents and users for space categories. diff --git a/domain/document/store.go b/domain/document/store.go index 3e82c7852..db2ff1d8c 100644 --- a/domain/document/store.go +++ b/domain/document/store.go @@ -254,31 +254,11 @@ func (s Store) MoveActivity(ctx domain.RequestContext, documentID, oldSpaceID, n // Delete removes the specified document. // Remove document pages, revisions, attachments, updates the search subsystem. func (s Store) Delete(ctx domain.RequestContext, documentID string) (rows int64, err error) { - rows, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID)) - - if err != nil { - return - } - - _, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section_revision WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID)) - if err != nil { - return - } - - _, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_attachment WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID)) - if err != nil { - return - } - - _, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_category_member WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID)) - if err != nil { - return - } - - _, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_vote WHERE c_docid='%s' AND c_orgid='%s'", documentID, ctx.OrgID)) - if err != nil { - return - } + ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID) + ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section_revision WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID) + ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_attachment WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID) + ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_category_member WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID) + ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_vote WHERE c_orgid=? AND c_docid=?"), ctx.OrgID, documentID) return s.DeleteConstrained(ctx.Transaction, "dmz_doc", ctx.OrgID, documentID) } @@ -286,25 +266,10 @@ func (s Store) Delete(ctx domain.RequestContext, documentID string) (rows int64, // DeleteBySpace removes all documents for given space. // Remove document pages, revisions, attachments, updates the search subsystem. func (s Store) DeleteBySpace(ctx domain.RequestContext, spaceID string) (rows int64, err error) { - 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)) - if err != nil { - return - } - - _, 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)) - if err != nil { - return - } - - _, 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)) - if err != nil { - return - } - - _, 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)) - if err != nil { - return - } + 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) + 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) + 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) + 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) return s.DeleteConstrained(ctx.Transaction, "dmz_doc", ctx.OrgID, spaceID) } diff --git a/domain/group/store.go b/domain/group/store.go index b8951b85e..3df52eec2 100644 --- a/domain/group/store.go +++ b/domain/group/store.go @@ -13,7 +13,6 @@ package group import ( "database/sql" - "fmt" "time" "github.com/documize/community/domain" @@ -104,7 +103,10 @@ func (s Store) Delete(ctx domain.RequestContext, refID string) (rows int64, err if err != nil { return } - return s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_group_member WHERE c_orgid='%s' AND c_groupid='%s'", ctx.OrgID, refID)) + + ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_group_member WHERE c_orgid=? AND c_groupid=?"), ctx.OrgID, refID) + + return } // GetGroupMembers returns all user associated with given group. @@ -143,15 +145,8 @@ func (s Store) JoinGroup(ctx domain.RequestContext, groupID, userID string) (err // LeaveGroup removes user from group. func (s Store) LeaveGroup(ctx domain.RequestContext, groupID, userID string) (err error) { - _, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_group_member WHERE c_orgid='%s' AND c_groupid='%s' AND c_userid='%s'", - ctx.OrgID, groupID, userID)) - - if err == sql.ErrNoRows { - err = nil - } - if err != nil { - err = errors.Wrap(err, "clear group member") - } + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_group_member WHERE c_orgid=? AND c_groupid=? AND c_userid=?"), + ctx.OrgID, groupID, userID) return } @@ -182,16 +177,8 @@ func (s Store) GetMembers(ctx domain.RequestContext) (r []group.Record, err erro // RemoveUserGroups remove user from all group. func (s Store) RemoveUserGroups(ctx domain.RequestContext, userID string) (err error) { - _, err = s.DeleteWhere(ctx.Transaction, - fmt.Sprintf("DELETE FROM dmz_group_member WHERE c_orgid='%s' AND c_userid='%s'", - ctx.OrgID, userID)) - - if err == sql.ErrNoRows { - err = nil - } - if err != nil { - err = errors.Wrap(err, "RemoveUserGroups") - } + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_group_member WHERE c_orgid=? AND c_userid=?"), + ctx.OrgID, userID) return } diff --git a/domain/link/store.go b/domain/link/store.go index f70b99875..7d0ac654a 100644 --- a/domain/link/store.go +++ b/domain/link/store.go @@ -13,7 +13,6 @@ package link import ( "database/sql" - "fmt" "strings" "time" @@ -156,12 +155,18 @@ func (s Store) MarkOrphanAttachmentLink(ctx domain.RequestContext, attachmentID // DeleteSourcePageLinks removes saved links for given source. func (s Store) DeleteSourcePageLinks(ctx domain.RequestContext, pageID string) (rows int64, err error) { - return s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_link WHERE c_orgid='%s' AND c_sourcesectionid='%s'", ctx.OrgID, pageID)) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_link WHERE c_orgid=? AND c_sourcesectionid=?"), + ctx.OrgID, pageID) + + return } // DeleteSourceDocumentLinks removes saved links for given document. func (s Store) DeleteSourceDocumentLinks(ctx domain.RequestContext, documentID string) (rows int64, err error) { - return s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_doc_link WHERE c_orgid='%s' AND c_sourcedocid='%s'", ctx.OrgID, documentID)) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_doc_link WHERE c_orgid=? AND c_sourcedocid=?"), + ctx.OrgID, documentID) + + return } // DeleteLink removes saved link from the store. diff --git a/domain/page/store.go b/domain/page/store.go index bc62904c9..e551d359c 100644 --- a/domain/page/store.go +++ b/domain/page/store.go @@ -201,13 +201,12 @@ func (s Store) Update(ctx domain.RequestContext, page page.Page, refID, userID s // It then propagates that change into the search table, adds a delete the page revisions history, and audits that the page has been removed. func (s Store) Delete(ctx domain.RequestContext, documentID, pageID string) (rows int64, err error) { rows, err = s.DeleteConstrained(ctx.Transaction, "dmz_section", ctx.OrgID, pageID) - if err == nil { - _, _ = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section_meta WHERE c_orgid='%s' AND c_sectionid='%s'", ctx.OrgID, pageID)) - } - if err == nil { - _, _ = 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)) - } + ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section_meta WHERE c_orgid=? AND c_sectionid=?"), + ctx.OrgID, pageID) + + ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_action WHERE c_orgid=? AND c_reftypeid=? AND c_reftype='P'"), + ctx.OrgID, pageID) return } @@ -408,8 +407,8 @@ func (s Store) GetDocumentRevisions(ctx domain.RequestContext, documentID string // DeletePageRevisions deletes all of the page revision records for a given pageID. func (s Store) DeletePageRevisions(ctx domain.RequestContext, pageID string) (rows int64, err error) { - rows, err = s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_section_revision WHERE c_orgid='%s' AND c_sectionid='%s'", - ctx.OrgID, pageID)) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_section_revision WHERE c_orgid=? AND c_sectionid=?"), + ctx.OrgID, pageID) return } diff --git a/domain/permission/store.go b/domain/permission/store.go index eaa210f82..6f14edb6d 100644 --- a/domain/permission/store.go +++ b/domain/permission/store.go @@ -266,55 +266,56 @@ func (s Store) GetDocumentPermissions(ctx domain.RequestContext, documentID stri // DeleteDocumentPermissions removes records from dmz_permissions table for given document. func (s Store) DeleteDocumentPermissions(ctx domain.RequestContext, documentID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_permission WHERE c_orgid='%s' AND c_location='document' AND c_refid='%s'", ctx.OrgID, documentID) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_permission WHERE c_orgid=? AND c_location='document' AND c_refid=?"), + ctx.OrgID, documentID) - return s.DeleteWhere(ctx.Transaction, sql) + return } // DeleteSpacePermissions removes records from dmz_permissions table for given space ID. func (s Store) DeleteSpacePermissions(ctx domain.RequestContext, spaceID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_permission WHERE c_orgid='%s' AND c_location='space' AND c_refid='%s'", ctx.OrgID, spaceID) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_permission WHERE c_orgid=? AND c_location='space' AND c_refid=?"), + ctx.OrgID, spaceID) - return s.DeleteWhere(ctx.Transaction, sql) + return } // DeleteUserSpacePermissions removes all roles for the specified user, for the specified space. func (s Store) DeleteUserSpacePermissions(ctx domain.RequestContext, spaceID, userID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_permission WHERE c_orgid='%s' AND c_location='space' AND c_refid='%s' AND c_who='user' AND c_whoid='%s'", + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_permission WHERE c_orgid=? AND c_location='space' AND c_refid=? AND c_who='user' AND c_whoid=?"), ctx.OrgID, spaceID, userID) - return s.DeleteWhere(ctx.Transaction, sql) + return } // DeleteUserPermissions removes all roles for the specified user, for the specified space. func (s Store) DeleteUserPermissions(ctx domain.RequestContext, userID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_permission WHERE c_orgid='%s' AND c_who='user' AND c_whoid='%s'", + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_permission WHERE c_orgid=? AND c_who='user' AND c_whoid=?"), ctx.OrgID, userID) - return s.DeleteWhere(ctx.Transaction, sql) + return } // DeleteCategoryPermissions removes records from dmz_permissions table for given category ID. func (s Store) DeleteCategoryPermissions(ctx domain.RequestContext, categoryID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_permission WHERE c_orgid='%s' AND c_location='category' AND c_refid='%s'", ctx.OrgID, categoryID) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_permission WHERE c_orgid=? AND c_location='category' AND c_refid=?"), + ctx.OrgID, categoryID) - return s.DeleteWhere(ctx.Transaction, sql) + return } // DeleteSpaceCategoryPermissions removes all category permission for for given space. func (s Store) DeleteSpaceCategoryPermissions(ctx domain.RequestContext, spaceID string) (rows int64, err error) { - sql := fmt.Sprintf(` - DELETE FROM dmz_permission WHERE c_orgid='%s' AND c_location='category' - AND c_refid IN (SELECT c_refid FROM dmz_category WHERE c_orgid='%s' AND c_spaceid='%s')`, + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_permission WHERE c_orgid=? AND c_location='category' AND c_refid IN (SELECT c_refid FROM dmz_category WHERE c_orgid=? AND c_spaceid=?)"), ctx.OrgID, ctx.OrgID, spaceID) - return s.DeleteWhere(ctx.Transaction, sql) + return } // DeleteGroupPermissions removes all roles for the specified group func (s Store) DeleteGroupPermissions(ctx domain.RequestContext, groupID string) (rows int64, err error) { - sql := fmt.Sprintf("DELETE FROM dmz_permission WHERE c_orgid='%s' AND c_who='role' AND c_whoid='%s'", + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_permission WHERE c_orgid=? AND c_who='role' AND c_whoid=?"), ctx.OrgID, groupID) - return s.DeleteWhere(ctx.Transaction, sql) + return } diff --git a/domain/pin/store.go b/domain/pin/store.go index 23a4b6655..ad9ac543b 100644 --- a/domain/pin/store.go +++ b/domain/pin/store.go @@ -120,10 +120,16 @@ func (s Store) DeletePin(ctx domain.RequestContext, id string) (rows int64, err // DeletePinnedSpace removes any pins for specified space. func (s Store) DeletePinnedSpace(ctx domain.RequestContext, spaceID string) (rows int64, err error) { - return s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_pin WHERE c_orgid='%s' AND c_spaceid='%s'", ctx.OrgID, spaceID)) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_pin WHERE c_orgid=? AND c_spaceid=?"), + ctx.OrgID, spaceID) + + return } // DeletePinnedDocument removes any pins for specified document. func (s Store) DeletePinnedDocument(ctx domain.RequestContext, documentID string) (rows int64, err error) { - return s.DeleteWhere(ctx.Transaction, fmt.Sprintf("DELETE FROM dmz_pin WHERE c_orgid='%s' AND c_docid='%s'", ctx.OrgID, documentID)) + _, err = ctx.Transaction.Exec(s.Bind("DELETE FROM dmz_pin WHERE c_orgid=? AND c_docid=?"), + ctx.OrgID, documentID) + + return } diff --git a/domain/store/context.go b/domain/store/context.go index 4f919a6e2..a0cd538c8 100644 --- a/domain/store/context.go +++ b/domain/store/context.go @@ -27,7 +27,7 @@ type Context struct { // Bind selects query parameter placeholder for given database provider. // -// MySQL uses ?, ?, ? (default for all Documize queries).`` +// MySQL uses ?, ?, ? (default for all Documize queries).“ // PostgreSQL uses $1, $2, $3. // MS SQL Server uses @p1, @p2, @p3. func (c *Context) Bind(sql string) string { @@ -86,20 +86,6 @@ func (c *Context) DeleteConstrainedWithID(tx *sqlx.Tx, table string, orgID, id s return } -// DeleteWhere free form query. -func (c *Context) DeleteWhere(tx *sqlx.Tx, statement string) (rows int64, err error) { - _, err = tx.Exec(statement) - if err == sql.ErrNoRows { - err = nil - } - if err != nil { - err = errors.Wrap(err, fmt.Sprintf("unable to delete rows: %s", statement)) - return - } - - return -} - // EmptyJSON returns database specific empty JSON object. func (c *Context) EmptyJSON() string { return c.Runtime.StoreProvider.JSONEmpty() diff --git a/edition/community.go b/edition/community.go index 0705e3160..5707ab00e 100644 --- a/edition/community.go +++ b/edition/community.go @@ -40,9 +40,9 @@ func main() { // Specify the product edition. rt.Product = domain.Product{} rt.Product.Major = "5" - rt.Product.Minor = "6" + rt.Product.Minor = "7" rt.Product.Patch = "0" - rt.Product.Revision = "230227132445" + rt.Product.Revision = "230515133157" rt.Product.Version = fmt.Sprintf("%s.%s.%s", rt.Product.Major, rt.Product.Minor, rt.Product.Patch) rt.Product.Edition = domain.CommunityEdition rt.Product.Title = "Community" diff --git a/gui/package.json b/gui/package.json index 8eb95eed2..a6500ccbd 100644 --- a/gui/package.json +++ b/gui/package.json @@ -1,6 +1,6 @@ { "name": "documize", - "version": "5.6.0", + "version": "5.7.0", "private": true, "description": "Documize Community", "repository": "",