mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-10 18:10:54 +09:00
GO-3273: refactoring
Signed-off-by: AnastasiaShemyakinskaya <shem98a@mail.ru>
This commit is contained in:
parent
9b0ed4e184
commit
49b9964b13
1 changed files with 36 additions and 13 deletions
|
@ -28,24 +28,47 @@ func (h *historyTree) rebuildFromStorage(params HistoryTreeParams) (err error) {
|
|||
|
||||
func (h *historyTree) rebuild(params HistoryTreeParams) (err error) {
|
||||
h.treeBuilder.Reset()
|
||||
|
||||
if len(params.Heads) == 0 {
|
||||
h.tree, err = h.treeBuilder.BuildFull()
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
if len(params.Heads) == 1 && params.Heads[0] == "" {
|
||||
params.Heads, err = h.treeStorage.Heads()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if len(params.Heads) == 1 {
|
||||
return h.rebuildWithSingleHead(params, params.Heads[0])
|
||||
}
|
||||
if !params.IncludeBeforeId && len(params.Heads) == 1 {
|
||||
beforeChange, err := h.treeBuilder.loadChange(params.Heads[0])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
params.Heads = beforeChange.PreviousIds
|
||||
|
||||
h.tree, err = h.treeBuilder.build(params.Heads, nil, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
func (h *historyTree) rebuildWithSingleHead(params HistoryTreeParams, head string) (err error) {
|
||||
if head == "" {
|
||||
return h.rebuildWithEmptyHead(¶ms)
|
||||
}
|
||||
if !params.IncludeBeforeId {
|
||||
return h.rebuildWithPreviousHead(¶ms)
|
||||
}
|
||||
h.tree, err = h.treeBuilder.build(params.Heads, nil, nil)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
func (h *historyTree) rebuildWithEmptyHead(params *HistoryTreeParams) (err error) {
|
||||
heads, err := h.treeStorage.Heads()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
params.Heads = heads
|
||||
h.tree, err = h.treeBuilder.build(params.Heads, nil, nil)
|
||||
return err
|
||||
}
|
||||
|
||||
func (h *historyTree) rebuildWithPreviousHead(params *HistoryTreeParams) (err error) {
|
||||
beforeChange, err := h.treeBuilder.loadChange(params.Heads[0])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
params.Heads = beforeChange.PreviousIds
|
||||
h.tree, err = h.treeBuilder.build(params.Heads, nil, nil)
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue