Library/models/models.go

76 lines
1.6 KiB
Go
Raw Permalink Normal View History

package models
import (
2017-11-07 15:35:10 +00:00
"fmt"
2017-11-08 09:55:17 +00:00
_ "github.com/go-sql-driver/mysql" // Because.
2017-11-07 15:35:10 +00:00
"github.com/go-xorm/core"
"github.com/go-xorm/xorm"
2017-12-05 11:01:31 +00:00
_ "github.com/mattn/go-sqlite3" // Because.
)
var x *xorm.Engine
2017-11-07 15:35:10 +00:00
func getEngine() (*xorm.Engine, error) {
2017-12-05 10:49:19 +00:00
// Use Mysql if set
if Config.Database.Type == "mysql" {
connStr := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=true",
Config.Database.User, Config.Database.Password, Config.Database.Host, Config.Database.Database)
return xorm.NewEngine("mysql", connStr)
}
2017-12-05 11:01:31 +00:00
// Otherwise use sqlite
path := Config.Database.Path
if path == "" {
path = "./db.db"
}
return xorm.NewEngine("sqlite3", path)
}
// SetEngine sets the xorm.Engine
func SetEngine() (err error) {
x, err = getEngine()
if err != nil {
return fmt.Errorf("Failed to connect to database: %v", err)
}
2017-12-01 10:33:40 +00:00
// Cache
cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(), 1000)
x.SetDefaultCacher(cacher)
x.SetMapper(core.GonicMapper{})
// Sync dat shit
x.Sync(&Book{})
x.Sync(&User{})
x.Sync(&Publisher{})
x.Sync(&Author{})
x.Sync(&AuthorBook{})
2017-11-15 15:13:47 +00:00
x.Sync(&Status{})
2017-11-16 11:51:23 +00:00
x.Sync(&Quantity{})
x.Sync(&quantityRelation{})
x.Sync(&Item{})
2017-12-05 10:49:19 +00:00
x.Sync(&UserLog{})
2017-11-16 12:09:30 +00:00
x.ShowSQL(Config.Database.ShowQueries)
2018-01-23 13:31:54 +00:00
// Check if at least one user already exists. If not, insert it
total, err := x.Count(User{})
if err != nil {
return err
}
// If it doesn't exist, create it
2018-01-23 13:31:54 +00:00
if total < 1 {
2018-01-23 10:20:22 +00:00
Config.FirstUser.IsAdmin = true // Make the first user admin
2018-03-06 12:43:07 +00:00
_, err = CreateUser(Config.FirstUser, &User{ID: 0})
if err != nil {
2018-01-25 13:39:27 +00:00
return err
}
2018-01-23 13:31:54 +00:00
fmt.Println("Created new user " + Config.FirstUser.Username)
}
return nil
}