2016-07-27 01:26:47 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"database/sql"
|
|
|
|
"github.com/coopernurse/gorp"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
2017-07-15 21:24:10 +00:00
|
|
|
"os"
|
|
|
|
"path/filepath"
|
2016-07-27 01:26:47 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var dbmap *gorp.DbMap
|
2017-07-15 21:24:10 +00:00
|
|
|
var dbName = "docSet.dsidx"
|
2016-07-27 01:26:47 +00:00
|
|
|
|
2017-07-15 21:24:10 +00:00
|
|
|
func InitDb(buildDir string) *gorp.DbMap {
|
|
|
|
dbPath := filepath.Join(buildDir, dbName)
|
|
|
|
err := os.MkdirAll(filepath.Dir(dbPath), 0755)
|
|
|
|
ExitIfError(err)
|
|
|
|
|
|
|
|
db, err := sql.Open("sqlite3", dbPath)
|
2016-07-27 01:26:47 +00:00
|
|
|
ExitIfError(err)
|
|
|
|
|
|
|
|
dbmap := &gorp.DbMap{Db: db, Dialect: gorp.SqliteDialect{}}
|
|
|
|
|
|
|
|
dbmap.AddTableWithName(SearchIndex{}, "searchIndex").SetKeys(true, "ID")
|
|
|
|
|
|
|
|
err = dbmap.CreateTablesIfNotExists()
|
|
|
|
ExitIfError(err)
|
|
|
|
|
|
|
|
err = dbmap.TruncateTables()
|
|
|
|
ExitIfError(err)
|
|
|
|
|
|
|
|
return dbmap
|
|
|
|
}
|
|
|
|
|
|
|
|
func SaveSearchIndex(dbmap *gorp.DbMap, entry TOCEntry, entryType *SupportedType, toc *AtlasTOC) {
|
|
|
|
if entry.LinkAttr.Href == "" || entryType == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
relLink := entry.GetContentFilepath(toc, false)
|
|
|
|
name := entry.CleanTitle(*entryType)
|
|
|
|
if entryType.ShowNamespace && len(entryHierarchy) > 0 {
|
|
|
|
// Show namespace for methods
|
|
|
|
name = entryHierarchy[len(entryHierarchy)-1] + "." + name
|
|
|
|
}
|
|
|
|
|
|
|
|
si := SearchIndex{
|
|
|
|
Name: name,
|
|
|
|
Type: entryType.TypeName,
|
|
|
|
Path: relLink,
|
|
|
|
}
|
|
|
|
|
|
|
|
dbmap.Insert(&si)
|
2017-07-15 20:36:28 +00:00
|
|
|
LogDebug("%s is indexed as a %s", entry.Text, entryType.TypeName)
|
2016-07-27 01:26:47 +00:00
|
|
|
}
|