// Copyright (C) 2017 Marius Schellenberger package db import ( "fmt" "git.giftfish.de/ston1th/gowiki/pkg/cache" "git.giftfish.de/ston1th/gowiki/pkg/core" "git.giftfish.de/ston1th/gowiki/pkg/index" "git.giftfish.de/ston1th/gowiki/pkg/store" ) const ( defUser = "admin" defPassword = "gowiki" usersFile = "users.db" pagesFile = "pages.db" bcryptCost = 13 welcome = `# Welcome to GoWiki This is the [Index](/wiki/Index) page. You can customize it how you like.` ) /*const ( maxResult = 1e6 maxSearchResult = 101 )*/ func dbErr(i interface{}) error { return fmt.Errorf("db: %s", i) } type DB struct { pages store.Store users store.Store cache *cache.Cache Index *index.Index } func New(indexPath string) (db *DB, err error) { db = &DB{cache: cache.NewCache()} //TODO //db.Index, err = index.NewIndex(indexPath) //if err != nil { // return //} db.users, err = store.NewBoltStore(usersFile, nil) if err != nil { return } if db.UserExists(defUser) != nil { err = db.CreateUser(defUser, defPassword, true) if err != nil { return } } err = db.UnlockUser(defUser) if err != nil { return } db.pages, err = store.NewBoltStore(pagesFile, nil) if err != nil { return } _, err = db.CreatePage(core.IndexPage, core.WikiSection, welcome, defUser, core.Public) if err != nil && err != store.ErrKeyNotFound { return } return } func (db *DB) Close() error { err := db.pages.Close() if err != nil { return err } err = db.users.Close() if err != nil { return err } return nil //TODO //return db.Index.Close() }