package handlers import ( "log" "dcdev.ro/CfrTrainInfoTelegramBot/pkg/database" "gorm.io/gorm" ) const ( InitialFlowType = "initial" TrainInfoFlowType = "trainInfo" StationInfoFlowType = "stationInfo" RouteFlowType = "route" WaitingForTrainNumberStage = "waitingForTrainNumber" WaitingForDateStage = "waitingForDate" ) type ChatFlow struct { gorm.Model ChatId int64 Type string Stage string Extra string } func GetChatFlow(chatId int64) *ChatFlow { chatFlow := &ChatFlow{} result, _ := database.ReadDB(func(db *gorm.DB) (*gorm.DB, error) { return db.First(chatFlow, "chat_id = ?", chatId), nil }) if result.RowsAffected == 0 { log.Printf("DEBUG: Chat not found in DB: %d\n", chatId) chatFlow = &ChatFlow{ ChatId: chatId, Type: InitialFlowType, } _, _ = database.WriteDB(func(db *gorm.DB) (*gorm.DB, error) { return db.Create(chatFlow), nil }) } else { log.Printf("DEBUG: Chat found in DB: %d, type %s, stage %s\n", chatId, chatFlow.Type, chatFlow.Stage) } return chatFlow } func SetChatFlow(chatFlow *ChatFlow, flowType string, stage string, extra string) { _, _ = database.WriteDB(func(db *gorm.DB) (*gorm.DB, error) { return db.Model(chatFlow).Updates(ChatFlow{ Type: flowType, Stage: stage, Extra: extra, }), nil }) log.Printf("DEBUG: setChatFlow type %s, stage %s", flowType, stage) }