Skip to content

Commit 9aaea94

Browse files
committed
Fix issue with backup/restore of space labels
Closed #206
1 parent ac84eaf commit 9aaea94

File tree

6 files changed

+818
-720
lines changed

6 files changed

+818
-720
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ Integrations for embedding SaaS data within documents, zero add-on/marketplace f
5454

5555
## Latest Release
5656

57-
[Community Edition: v2.0.4](https://github.com/documize/community/releases)
57+
[Community Edition: v2.0.5](https://github.com/documize/community/releases)
5858

59-
[Enterprise Edition: v2.0.4](https://documize.com/downloads)
59+
[Enterprise Edition: v2.0.5](https://documize.com/downloads)
6060

6161
## OS support
6262

domain/backup/backup.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import (
4545
"github.com/documize/community/model/category"
4646
"github.com/documize/community/model/doc"
4747
"github.com/documize/community/model/group"
48+
"github.com/documize/community/model/label"
4849
"github.com/documize/community/model/link"
4950
"github.com/documize/community/model/page"
5051
"github.com/documize/community/model/permission"
@@ -170,6 +171,12 @@ func (b backerHandler) produce(id string) (files []backupItem, err error) {
170171
return
171172
}
172173

174+
// Space Label
175+
err = b.dmzSpaceLabel(&files)
176+
if err != nil {
177+
return
178+
}
179+
173180
// Space, Permission.
174181
err = b.dmzSpace(&files)
175182
if err != nil {
@@ -452,6 +459,32 @@ func (b backerHandler) dmzPin(files *[]backupItem) (err error) {
452459
return
453460
}
454461

462+
// Space Label
463+
func (b backerHandler) dmzSpaceLabel(files *[]backupItem) (err error) {
464+
w := ""
465+
if !b.Spec.SystemBackup() {
466+
w = fmt.Sprintf(" WHERE c_orgid='%s' ", b.Spec.OrgID)
467+
}
468+
469+
l := []label.Label{}
470+
err = b.Runtime.Db.Select(&l, `
471+
SELECT id, c_refid AS refid,
472+
c_orgid AS orgid, c_name AS name, c_color AS color,
473+
c_created AS created, c_revised AS revised
474+
FROM dmz_space_label`+w)
475+
if err != nil {
476+
return errors.Wrap(err, "select.space_label")
477+
}
478+
479+
content, err := toJSON(l)
480+
if err != nil {
481+
return errors.Wrap(err, "json.space_label")
482+
}
483+
*files = append(*files, backupItem{Filename: "dmz_space_label.json", Content: content})
484+
485+
return
486+
}
487+
455488
// Space, Permission.
456489
func (b backerHandler) dmzSpace(files *[]backupItem) (err error) {
457490
w := ""

domain/backup/restore.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"github.com/documize/community/model/category"
3939
"github.com/documize/community/model/doc"
4040
"github.com/documize/community/model/group"
41+
"github.com/documize/community/model/label"
4142
"github.com/documize/community/model/link"
4243
"github.com/documize/community/model/page"
4344
"github.com/documize/community/model/permission"
@@ -154,6 +155,12 @@ func (r *restoreHandler) PerformRestore(b []byte, l int64) (err error) {
154155
return
155156
}
156157

158+
// Space Label.
159+
err = r.dmzSpaceLabel()
160+
if err != nil {
161+
return
162+
}
163+
157164
// Space.
158165
err = r.dmzSpace()
159166
if err != nil {
@@ -582,6 +589,64 @@ func (r *restoreHandler) dmzAction() (err error) {
582589
return nil
583590
}
584591

592+
// Space Label.
593+
func (r *restoreHandler) dmzSpaceLabel() (err error) {
594+
filename := "dmz_space_label.json"
595+
596+
label := []label.Label{}
597+
err = r.fileJSON(filename, &label)
598+
if err != nil {
599+
err = errors.Wrap(err, fmt.Sprintf("failed to load %s", filename))
600+
return
601+
}
602+
603+
r.Runtime.Log.Info(fmt.Sprintf("Extracted %s", filename))
604+
605+
r.Context.Transaction, err = r.Runtime.Db.Beginx()
606+
if err != nil {
607+
err = errors.Wrap(err, fmt.Sprintf("unable to start TX for %s", filename))
608+
return
609+
}
610+
611+
// Nuke all existing data.
612+
nuke := "TRUNCATE TABLE dmz_space_label"
613+
if !r.Spec.GlobalBackup {
614+
nuke = fmt.Sprintf("DELETE FROM dmz_space_label WHERE c_orgid='%s'", r.Spec.Org.RefID)
615+
}
616+
_, err = r.Context.Transaction.Exec(nuke)
617+
if err != nil {
618+
r.Context.Transaction.Rollback()
619+
err = errors.Wrap(err, fmt.Sprintf("unable to truncate table %s", filename))
620+
return
621+
}
622+
623+
for i := range label {
624+
_, err = r.Context.Transaction.Exec(r.Runtime.Db.Rebind(`
625+
INSERT INTO dmz_space_label
626+
(c_refid, c_orgid, c_name, c_color, c_created, c_revised)
627+
VALUES (?, ?, ?, ?, ?, ?)`),
628+
label[i].RefID, r.remapOrg(label[i].OrgID), label[i].Name, label[i].Color,
629+
label[i].Created, label[i].Revised)
630+
631+
if err != nil {
632+
r.Context.Transaction.Rollback()
633+
err = errors.Wrap(err, fmt.Sprintf("unable to insert %s %s", filename, label[i].RefID))
634+
return
635+
}
636+
}
637+
638+
err = r.Context.Transaction.Commit()
639+
if err != nil {
640+
r.Context.Transaction.Rollback()
641+
err = errors.Wrap(err, fmt.Sprintf("unable to commit %s", filename))
642+
return
643+
}
644+
645+
r.Runtime.Log.Info(fmt.Sprintf("Processed %s %d records", filename, len(label)))
646+
647+
return nil
648+
}
649+
585650
// Space.
586651
func (r *restoreHandler) dmzSpace() (err error) {
587652
filename := "dmz_space.json"

edition/community.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ func main() {
4141
rt.Product = domain.Product{}
4242
rt.Product.Major = "2"
4343
rt.Product.Minor = "0"
44-
rt.Product.Patch = "4"
45-
rt.Product.Revision = "190211190723"
44+
rt.Product.Patch = "5"
45+
rt.Product.Revision = "190221103505"
4646
rt.Product.Version = fmt.Sprintf("%s.%s.%s", rt.Product.Major, rt.Product.Minor, rt.Product.Patch)
4747
rt.Product.Edition = domain.CommunityEdition
4848
rt.Product.Title = fmt.Sprintf("%s Edition", rt.Product.Edition)

0 commit comments

Comments
 (0)