split db and bolt to store interface
This commit is contained in:
parent
07ff5ccffb
commit
7e77fd7d27
14 changed files with 419 additions and 545 deletions
|
|
@ -6,6 +6,7 @@ import (
|
|||
"crypto/subtle"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"git.giftfish.de/ston1th/gowiki/pkg/log"
|
||||
"github.com/gorilla/mux"
|
||||
"html/template"
|
||||
"net/http"
|
||||
|
|
@ -53,8 +54,6 @@ type webData struct {
|
|||
Msg string
|
||||
Search string
|
||||
|
||||
Editor *Editor
|
||||
|
||||
Data interface{}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"git.giftfish.de/ston1th/gowiki/pkg/core"
|
||||
"git.giftfish.de/ston1th/gowiki/pkg/log"
|
||||
"html/template"
|
||||
"net/http"
|
||||
"time"
|
||||
|
|
@ -97,13 +99,13 @@ func loginHandler(ctx *Context) {
|
|||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
err := ctx.Srv.BS.Login(user, password)
|
||||
err := ctx.Srv.DB.Login(user, password)
|
||||
if err != nil {
|
||||
ctx.Data.Msg = err.Error()
|
||||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
ctx.SetUdata(user, ctx.Srv.BS.UserIsAdmin(user))
|
||||
ctx.SetUdata(user, ctx.Srv.DB.UserIsAdmin(user))
|
||||
ctx.Redirect("/wiki/Index", 302)
|
||||
}
|
||||
}
|
||||
|
|
@ -129,7 +131,7 @@ func searchHandler(ctx *Context) {
|
|||
return
|
||||
}
|
||||
|
||||
res, err := ctx.Srv.Index.Search(!ctx.LoggedOn(), search)
|
||||
res, err := ctx.Srv.DB.Index.Search(search)
|
||||
if err != nil {
|
||||
ctx.Data.Msg = err.Error()
|
||||
ctx.Exec()
|
||||
|
|
@ -148,7 +150,7 @@ func allHandler(ctx *Context) {
|
|||
BodyTitle: "All Articles",
|
||||
Admin: ctx.GetAdmin(),
|
||||
}
|
||||
all, err := ctx.Srv.Index.GetAll(!ctx.LoggedOn())
|
||||
all, err := ctx.Srv.DB.Index.GetAll(!ctx.LoggedOn())
|
||||
if err != nil {
|
||||
ctx.Data.Msg = err.Error()
|
||||
}
|
||||
|
|
@ -171,11 +173,11 @@ func wikiNewHandler(ctx *Context) {
|
|||
pub = true
|
||||
}
|
||||
submit := ctx.Form("submit")
|
||||
art := Article{
|
||||
p := core.Page{
|
||||
Title: title,
|
||||
MD: text,
|
||||
}
|
||||
ctx.Data.Data = art
|
||||
ctx.Data.Data = p
|
||||
if !ctx.CheckToken(nil) {
|
||||
return
|
||||
}
|
||||
|
|
@ -184,7 +186,7 @@ func wikiNewHandler(ctx *Context) {
|
|||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
newTitle, err := ctx.Srv.Index.Index(title, text, ctx.GetUser(), pub)
|
||||
newTitle, err := ctx.Srv.DB.Index.Index(title, text, ctx.GetUser(), pub)
|
||||
if err != nil {
|
||||
ctx.Data.Msg = err.Error()
|
||||
ctx.Exec()
|
||||
|
|
@ -202,7 +204,7 @@ func wikiHandler(ctx *Context) {
|
|||
Admin: ctx.GetAdmin(),
|
||||
}
|
||||
title := ctx.Var("title")
|
||||
art, err := ctx.Srv.Index.Get(!ctx.LoggedOn(), title)
|
||||
art, err := ctx.Srv.DB.Index.Get(!ctx.LoggedOn(), title)
|
||||
if err != nil {
|
||||
ctx.NotFound()
|
||||
return
|
||||
|
|
@ -227,7 +229,7 @@ func wikiEditHandler(ctx *Context) {
|
|||
title := ctx.Var("title")
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
art, err := ctx.Srv.Index.Get(!ctx.LoggedOn(), title)
|
||||
art, err := ctx.Srv.DB.Index.Get(!ctx.LoggedOn(), title)
|
||||
if err != nil {
|
||||
ctx.NotFound()
|
||||
return
|
||||
|
|
@ -236,7 +238,6 @@ func wikiEditHandler(ctx *Context) {
|
|||
ctx.Data.Data = art
|
||||
ctx.Data.Title = art.Title
|
||||
ctx.Data.BodyTitle = art.Title
|
||||
ctx.Data.Editor = ctx.Srv.Editors.Set(title, ctx.GetUser())
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
ftitle := ctx.Form("title")
|
||||
|
|
@ -247,7 +248,7 @@ func wikiEditHandler(ctx *Context) {
|
|||
pub = true
|
||||
}
|
||||
submit := ctx.Form("submit")
|
||||
ctx.Data.Data = Article{
|
||||
ctx.Data.Data = core.Page{
|
||||
Title: ftitle,
|
||||
LinkTitle: title,
|
||||
MD: text,
|
||||
|
|
@ -258,17 +259,12 @@ func wikiEditHandler(ctx *Context) {
|
|||
if !ctx.CheckToken(nil) {
|
||||
return
|
||||
}
|
||||
if submit == "Back" {
|
||||
ctx.Srv.Editors.RemoveEditor(title, ctx.GetUser())
|
||||
ctx.Redirect("/wiki/"+title, 302)
|
||||
return
|
||||
}
|
||||
if submit != "Submit" {
|
||||
ctx.Data.Msg = "wrong inputs"
|
||||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
err := ctx.Srv.Index.Update(title, text, ctx.GetUser(), pub)
|
||||
err := ctx.Srv.DB.Index.Update(title, text, ctx.GetUser(), pub)
|
||||
if err != nil {
|
||||
ctx.Data.Msg = err.Error()
|
||||
ctx.Exec()
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ import (
|
|||
"time"
|
||||
|
||||
"git.giftfish.de/ston1th/gowiki/pkg/db"
|
||||
"git.giftfish.de/ston1th/gowiki/pkg/index"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -25,8 +24,7 @@ type HTTPServer struct {
|
|||
Version string
|
||||
SecCookie bool
|
||||
Store *sessions.CookieStore
|
||||
BS *db.BoltStore
|
||||
Index *index.Index
|
||||
DB *db.DB
|
||||
listener net.Listener
|
||||
srv *http.Server
|
||||
templ map[string]*template.Template
|
||||
|
|
|
|||
|
|
@ -1,155 +0,0 @@
|
|||
package server
|
||||
|
||||
func allSnippetHandler(ctx *Context) {
|
||||
ctx.Template("allSnippetHandler")
|
||||
ctx.Data = webData{Title: "All Snippets"}
|
||||
all, err := ctx.Srv.BS.GetSnippets(ctx.GetUser())
|
||||
if err != nil {
|
||||
ctx.Data.Msg = err.Error()
|
||||
}
|
||||
ctx.Data.Data = all
|
||||
ctx.Exec()
|
||||
}
|
||||
|
||||
func snippetNewHandler(ctx *Context) {
|
||||
ctx.Template("snippetNewHandler")
|
||||
ctx.Data = webData{Title: "New Snippet"}
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
user := ctx.GetUser()
|
||||
title := ctx.Form("title")
|
||||
text := ctx.Form("text")
|
||||
perm := ctx.Form("permission")
|
||||
submit := ctx.Form("submit")
|
||||
snip := Snippet{
|
||||
Title: title,
|
||||
MD: text,
|
||||
}
|
||||
ctx.Data.Data = art
|
||||
if !ctx.CheckToken() {
|
||||
ctx.Data.Msg = "wrong csrf token"
|
||||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
iperm, err := strconv.Atoi(perm)
|
||||
if err != nil || submit != "Submit" {
|
||||
ctx.Data.Msg = "wrong inputs"
|
||||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
newTitle, err := ctx.Srv.BS.CreateSnippet(user, title, text, iperm)
|
||||
if err != nil {
|
||||
ctx.Data.Msg = err.Error()
|
||||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
ctx.Redirect("/users/"+user+"/"+newTitle, 302)
|
||||
}
|
||||
}
|
||||
|
||||
func wikiHandler(ctx *Context) {
|
||||
if ctx.T == nil {
|
||||
ctx.Template("wikiHandler")
|
||||
}
|
||||
ctx.Data = webData{
|
||||
Admin: ctx.GetAdmin(),
|
||||
}
|
||||
title := ctx.Var("title")
|
||||
art, err := ctx.Srv.Index.Get(!ctx.LoggedOn(), title)
|
||||
if err != nil {
|
||||
ctx.NotFound()
|
||||
return
|
||||
}
|
||||
art.LinkTitle = title
|
||||
ctx.Data.Data = art
|
||||
ctx.Data.Title = art.Title
|
||||
ctx.Data.BodyTitle = art.Title
|
||||
ctx.Exec()
|
||||
}
|
||||
|
||||
func wikiMDHandler(f ctxHandler) ctxHandler {
|
||||
return func(ctx *Context) {
|
||||
ctx.Template("wikiMDHandler")
|
||||
f(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
func wikiEditHandler(ctx *Context) {
|
||||
ctx.Template("wikiEditHandler")
|
||||
ctx.Data = webData{}
|
||||
title := ctx.Var("title")
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
art, err := ctx.Srv.Index.Get(!ctx.LoggedOn(), title)
|
||||
if err != nil {
|
||||
ctx.NotFound()
|
||||
return
|
||||
}
|
||||
art.LinkTitle = title
|
||||
ctx.Data.Data = art
|
||||
ctx.Data.Title = art.Title
|
||||
ctx.Data.BodyTitle = art.Title
|
||||
ctx.Data.Editor = ctx.Srv.Editors.Set(title, ctx.GetUser())
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
ftitle := ctx.Form("title")
|
||||
text := ctx.Form("text")
|
||||
public := ctx.Form("public")
|
||||
pub := false
|
||||
if public == "0" {
|
||||
pub = true
|
||||
}
|
||||
submit := ctx.Form("submit")
|
||||
ctx.Data.Data = Article{
|
||||
Title: ftitle,
|
||||
LinkTitle: title,
|
||||
MD: text,
|
||||
Public: pub,
|
||||
}
|
||||
ctx.Data.Title = ftitle
|
||||
ctx.Data.BodyTitle = ftitle
|
||||
if !ctx.CheckToken() {
|
||||
ctx.Data.Msg = "wrong csrf token"
|
||||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
if submit == "Back" {
|
||||
ctx.Srv.Editors.RemoveEditor(title, ctx.GetUser())
|
||||
ctx.Redirect("/wiki/"+title, 302)
|
||||
return
|
||||
}
|
||||
if submit != "Submit" {
|
||||
ctx.Data.Msg = "wrong inputs"
|
||||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
err := ctx.Srv.Index.Update(title, text, ctx.GetUser(), pub)
|
||||
if err != nil {
|
||||
ctx.Data.Msg = err.Error()
|
||||
ctx.Exec()
|
||||
return
|
||||
}
|
||||
ctx.Srv.Editors.Remove(title)
|
||||
ctx.Redirect("/wiki/"+title, 302)
|
||||
}
|
||||
}
|
||||
|
||||
func wikiDelHandler(ctx *Context) {
|
||||
title := ctx.Var("title")
|
||||
submit := ctx.Form("submit")
|
||||
if !ctx.CheckToken() {
|
||||
ctx.Redirect("/wiki/"+title, 302)
|
||||
return
|
||||
}
|
||||
if submit != "Delete" {
|
||||
ctx.Redirect("/wiki/"+title, 302)
|
||||
return
|
||||
}
|
||||
if err := ctx.Srv.Index.Delete(title); err != nil {
|
||||
log.Println("delete:", err)
|
||||
ctx.Redirect("/wiki/"+title, 302)
|
||||
}
|
||||
ctx.Redirect("/wiki/Index", 302)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue