mirror of
https://github.com/documize/community.git
synced 2025-07-20 21:59:42 +02:00
Support for document versioning
This commit is contained in:
parent
bc2cab5721
commit
a7a82d9fe3
9 changed files with 158 additions and 110 deletions
|
@ -65,7 +65,6 @@ func FilterCategoryProtected(docs []doc.Document, cats []category.Category, memb
|
|||
|
||||
// CopyDocument clones an existing document
|
||||
func CopyDocument(ctx domain.RequestContext, s domain.Store, documentID string) (newDocumentID string, err error) {
|
||||
|
||||
doc, err := s.Document.Get(ctx, documentID)
|
||||
if err != nil {
|
||||
err = errors.Wrap(err, "unable to fetch existing document")
|
||||
|
@ -145,3 +144,32 @@ func CopyDocument(ctx domain.RequestContext, s domain.Store, documentID string)
|
|||
|
||||
return
|
||||
}
|
||||
|
||||
// FilterLastVersion returns the latest version of each document
|
||||
// by removing all previous versions.
|
||||
// If a document is not versioned, it is returned as-is.
|
||||
func FilterLastVersion(docs []doc.Document) (filtered []doc.Document) {
|
||||
filtered = []doc.Document{}
|
||||
prev := make(map[string]bool)
|
||||
|
||||
for _, doc := range docs {
|
||||
add := false
|
||||
|
||||
if doc.GroupID == "" {
|
||||
add = true
|
||||
} else {
|
||||
if _, isExisting := prev[doc.GroupID]; !isExisting {
|
||||
add = true
|
||||
prev[doc.GroupID] = true
|
||||
} else {
|
||||
add = false
|
||||
}
|
||||
}
|
||||
|
||||
if add {
|
||||
filtered = append(filtered, doc)
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue