package model

import (
	"database/sql"
	"os"
	"sync"

	_ "modernc.org/sqlite"
	"xorm.io/xorm"

	log "github.com/sirupsen/logrus"

	"github.com/sjkhsl/study_xxqg/utils"
)

var (
	engine *xorm.Engine

	db1 *sql.DB
)

func init() {
	en, err := xorm.NewEngine("sqlite", "./config/user.db")
	if err != nil {
		log.Errorln("打开数据库失败！" + err.Error())
		os.Exit(3)
	}
	err = en.Sync2(new(User), new(WechatUser))
	if err != nil {
		log.Errorln("同步数据库结构失败" + err.Error())
		return
	}
	en.SetLogger(&utils.MyLog{})
	en.ShowSQL(true)

	engine = en
}

func initQuestionDb() {
	once := sync.Once{}
	once.Do(func() {
		var err error
		db1, err = sql.Open("sqlite", "./QuestionBank.db")
		if err != nil {
			log.Errorln("题目数据库打开失败，请检查QuestionDB是否存在")
			log.Panicln(err.Error())
		}
		db1.SetMaxOpenConns(1)
	})
}

// User
/**
 * @Description:
 */
type User struct {
	Nick      string `xorm:"TEXT" json:"nick,omitempty"`
	Uid       string `xorm:"TEXT" json:"uid,omitempty"`
	Token     string `xorm:"TEXT" json:"token,omitempty"`
	LoginTime int64  `xorm:"integer" json:"loginTime,omitempty"`
	PushId    string `xorm:"TEXT" json:"pushId,omitempty"`
	Status    int    `xorm:"integer" json:"status,omitempty"`
}

type WechatUser struct {
	OpenId          string `xorm:"TEXT" json:"openId,omitempty"`
	Remark          string `xorm:"TEXT" json:"remark,omitempty"`
	Status          int    `xorm:"INTEGER" json:"status,omitempty"`
	LastRequestTime int64  `xorm:"INTEGER" json:"lastRequestTime,omitempty"`
}
