major changes

This commit is contained in:
ston1th 2018-02-07 21:41:54 +01:00
commit 2b56832843
83 changed files with 7760 additions and 1244 deletions

91
dump.go
View file

@ -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
}