major changes
This commit is contained in:
parent
a3270f399d
commit
2b56832843
83 changed files with 7760 additions and 1244 deletions
91
dump.go
91
dump.go
|
|
@ -6,10 +6,14 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/blevesearch/bleve"
|
||||
)
|
||||
|
||||
type Dump struct {
|
||||
Articles []DumpArticle `json:"articles"`
|
||||
Snippets []Snippet `json:"snippets"`
|
||||
Users []User `json:"users"`
|
||||
}
|
||||
|
||||
type DumpArticle struct {
|
||||
Title string `json:"title"`
|
||||
LinkTitle string `json:"link_title"`
|
||||
|
|
@ -19,35 +23,38 @@ type DumpArticle struct {
|
|||
Public bool `json:"public"`
|
||||
}
|
||||
|
||||
func verboseLog(prefix, title string) {
|
||||
if verbose {
|
||||
func verboseLog(prefix, title string, v bool) {
|
||||
if v {
|
||||
fmt.Fprintln(os.Stderr, prefix, title)
|
||||
}
|
||||
}
|
||||
|
||||
func dumpWiki() error {
|
||||
index, err := bleve.OpenUsing(bleveStore, map[string]interface{}{"read_only": true})
|
||||
func dump(path string, v bool) (err error) {
|
||||
i, err := NewDumpIndex(path)
|
||||
if err != nil {
|
||||
return err
|
||||
return
|
||||
}
|
||||
engine = NewEngine(index)
|
||||
art, err := engine.Get(false, indexName)
|
||||
defer i.Close()
|
||||
bs, err := NewBoltStore()
|
||||
if err != nil {
|
||||
return err
|
||||
return
|
||||
}
|
||||
defer engine.Close()
|
||||
var arts []DumpArticle
|
||||
titles, err := engine.Dump()
|
||||
art, err := i.Get(false, indexName)
|
||||
if err != nil {
|
||||
return err
|
||||
return
|
||||
}
|
||||
var dump Dump
|
||||
titles, err := i.Dump()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, title := range titles {
|
||||
art, err = engine.Get(false, title)
|
||||
art, err = i.Get(false, title)
|
||||
if err != nil {
|
||||
return err
|
||||
return
|
||||
}
|
||||
verboseLog("dump:", art.Title)
|
||||
arts = append(arts, DumpArticle{
|
||||
verboseLog("dump:", art.Title, v)
|
||||
dump.Articles = append(dump.Articles, DumpArticle{
|
||||
Title: art.Title,
|
||||
LinkTitle: art.LinkTitle,
|
||||
MD: art.MD,
|
||||
|
|
@ -56,31 +63,41 @@ func dumpWiki() error {
|
|||
Public: art.Public,
|
||||
})
|
||||
}
|
||||
return json.NewEncoder(os.Stdout).Encode(arts)
|
||||
}
|
||||
|
||||
func restoreWiki() (err error) {
|
||||
index, err := bleve.Open(bleveStore)
|
||||
if err != nil {
|
||||
mapping := bleve.NewIndexMapping()
|
||||
index, err = bleve.New(bleveStore, mapping)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
engine = NewEngine(index)
|
||||
defer engine.Close()
|
||||
var arts []DumpArticle
|
||||
err = json.NewDecoder(os.Stdin).Decode(&arts)
|
||||
//TODO snippets
|
||||
//verboseLog("dump:", "snippets", v)
|
||||
verboseLog("dump:", "users", v)
|
||||
dump.Users, err = bs.DumpUsers()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, art := range arts {
|
||||
verboseLog("restore:", art.Title)
|
||||
err = engine.Restore(art)
|
||||
return json.NewEncoder(os.Stdout).Encode(dump)
|
||||
}
|
||||
|
||||
func restore(path string, v bool) (err error) {
|
||||
i, err := NewIndex(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer i.Close()
|
||||
bs, err := NewBoltStore()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
var dump Dump
|
||||
err = json.NewDecoder(os.Stdin).Decode(&dump)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, art := range dump.Articles {
|
||||
verboseLog("restore:", art.Title, v)
|
||||
err = i.Restore(&art)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
//TODO snippets
|
||||
//verboseLog("restore:", "snippets", v)
|
||||
verboseLog("restore:", "users", v)
|
||||
err = bs.RestoreUsers(dump.Users)
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue