Изменено: обработка исключений в пакетах

This commit is contained in:
far-galaxy 2023-03-07 13:38:50 +04:00
parent e9cad18cb3
commit 106e6b98e8
4 changed files with 25 additions and 17 deletions

10
main.go
View File

@ -14,7 +14,10 @@ func main() {
log.Fatal("No .env file found") log.Fatal("No .env file found")
} }
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB")) engine, err := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
if err != nil {
log.Fatal(err)
}
bot := new(tg.Bot) bot := new(tg.Bot)
bot.InitBot(os.Getenv("TELEGRAM_APITOKEN"), *engine) bot.InitBot(os.Getenv("TELEGRAM_APITOKEN"), *engine)
@ -25,7 +28,10 @@ func main() {
if update.Message != nil { if update.Message != nil {
log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text) log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
tg_user := bot.InitUser(update.Message) tg_user, err := bot.InitUser(update.Message)
if err != nil {
log.Fatal(err)
}
if tg_user.PosTag == "not_started" { if tg_user.PosTag == "not_started" {
bot.Start() bot.Start()

View File

@ -1,7 +1,6 @@
package database package database
import ( import (
"log"
"math/rand" "math/rand"
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
@ -9,10 +8,10 @@ import (
"xorm.io/xorm/names" "xorm.io/xorm/names"
) )
func Connect(user, pass, db string) *xorm.Engine { func Connect(user, pass, db string) (*xorm.Engine, error) {
engine, err := xorm.NewEngine("mysql", user+":"+pass+"@tcp(localhost:3306)/"+db+"?charset=utf8") engine, err := xorm.NewEngine("mysql", user+":"+pass+"@tcp(localhost:3306)/"+db+"?charset=utf8")
if err != nil { if err != nil {
log.Fatal(err) return nil, err
} }
engine.ShowSQL(true) engine.ShowSQL(true)
@ -20,22 +19,22 @@ func Connect(user, pass, db string) *xorm.Engine {
err = engine.Sync(&User{}, &TgUser{}, &Group{}, &Lesson{}) err = engine.Sync(&User{}, &TgUser{}, &Group{}, &Lesson{})
if err != nil { if err != nil {
log.Fatal(err) return nil, err
} }
return engine return engine, nil
} }
func GenerateID(engine *xorm.Engine) int64 { func GenerateID(engine *xorm.Engine) (int64, error) {
id := rand.Int63n(899999999) + 100000000 id := rand.Int63n(899999999) + 100000000
exists, err := engine.ID(id).Exist(&User{}) exists, err := engine.ID(id).Exist(&User{})
if err != nil { if err != nil {
log.Fatal(err) return 0, err
} }
if exists { if exists {
return GenerateID(engine) return GenerateID(engine)
} else { } else {
return id return id, nil
} }
} }

View File

@ -48,7 +48,7 @@ func TestParse(t *testing.T) {
log.Fatal("No .env file found") log.Fatal("No .env file found")
} }
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB")) engine, err := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
err = uploadShedule(engine, *shedule) err = uploadShedule(engine, *shedule)
if err != nil { if err != nil {
t.Error(err) t.Error(err)

View File

@ -7,7 +7,7 @@ import (
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
) )
func (bot *Bot) InitUser(msg *tgbotapi.Message) *database.TgUser { func (bot *Bot) InitUser(msg *tgbotapi.Message) (*database.TgUser, error) {
db := &bot.DB db := &bot.DB
var users []database.TgUser var users []database.TgUser
err := db.Find(&users, &database.TgUser{TgId: msg.Chat.ID}) err := db.Find(&users, &database.TgUser{TgId: msg.Chat.ID})
@ -17,7 +17,10 @@ func (bot *Bot) InitUser(msg *tgbotapi.Message) *database.TgUser {
var tg_user database.TgUser var tg_user database.TgUser
if len(users) == 0 { if len(users) == 0 {
l9id := database.GenerateID(db) l9id, err := database.GenerateID(db)
if err != nil {
return nil, err
}
user := database.User{ user := database.User{
L9Id: l9id, L9Id: l9id,
@ -29,19 +32,19 @@ func (bot *Bot) InitUser(msg *tgbotapi.Message) *database.TgUser {
TgId: msg.Chat.ID, TgId: msg.Chat.ID,
PosTag: "not_started", PosTag: "not_started",
} }
_, err := db.Insert(user, tg_user) _, err = db.Insert(user, tg_user)
if err != nil { if err != nil {
log.Fatal(err) return nil, err
} }
} else { } else {
tg_user = users[0] tg_user = users[0]
} }
bot.TG_user = tg_user bot.TG_user = tg_user
return &tg_user return &tg_user, nil
} }
func (bot *Bot) Start() { func (bot *Bot) Start() {
bot.TG_user.PosTag = "started" bot.TG_user.PosTag = "add"
_, err := bot.DB.Update(bot.TG_user) _, err := bot.DB.Update(bot.TG_user)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)