package dal

import (
	"xiaoniaokuaiyan.com/xiaoniao/entity"
	"xiaoniaokuaiyan.com/xiaoniao/util"
)

type SMSCode struct{}

func (sdal *SMSCode) Add(code *entity.SMSCode) (*entity.SMSCode, error) {
	db := util.GetWriteSqlDB()
	strSql, kvm := util.GenerateInsertSqlFromStruct("t_sms_code", code)
	_, err := db.NamedExec(strSql, kvm)
	if err != nil {
		return nil, err
	}
	return code, nil
}

func (sdal *SMSCode) Update(code *entity.SMSCode) (*entity.SMSCode, error) {
	db := util.GetWriteSqlDB()
	strSql, kvm := util.GenerateUpdateSqlFromStruct("t_sms_code", code, "where mobile = :mobile and code = :code")
	_, err := db.NamedExec(strSql, kvm)
	if err != nil {
		return nil, err
	}
	return code, nil
}

func (sdal *SMSCode) Get(mobile, code string, codeType int) (*entity.SMSCode, error) {
	db := util.GetSqlDB()
	var codeItem = entity.SMSCode{}
	err := db.Get(&codeItem, "select * from t_sms_code where mobile = ? and code = ? and code_type = ? and is_used = 0", mobile, code, codeType)
	if err != nil {
		return nil, err
	}

	return &codeItem, nil
}

var DefaultSMSCodeDal = &SMSCode{}