all database switched to repository model. some other fixes and features

This commit is contained in:
2026-01-22 20:58:46 +03:00
parent 804d683f9e
commit 331f6854b6
14 changed files with 283 additions and 187 deletions

View File

@@ -30,7 +30,7 @@ func RegisterEconomy(bot *laniakea.Bot) {
economy = economy.Command(about, "about", "о боте")
go passiveIncome(bot)
//go passiveIncome(bot)
bot.AddPlugins(economy.Build())
}
@@ -45,67 +45,68 @@ func about(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
ctx.Answer(strings.Join(out, "\n"))
}
func passiveIncome(b *laniakea.Bot) {
for {
time.Sleep(time.Minute * 5)
//func passiveIncome(b *laniakea.Bot) {
// for {
// time.Sleep(time.Minute * 5)
//
// users, err := psql.GetAllUsers()
// if err != nil {
// b.Logger().Error(err)
// continue
// }
//
// for _, user := range users {
// if user.Business == nil && user.Maid == nil && user.Miner == nil {
// continue
// }
//
// if time.Now().Before(user.IncomeTime.Add(time.Hour * 3)) {
// continue
// }
//
// moneyIncome := decimal.NewFromInt(0)
// expIncome := decimal.NewFromInt(0)
// btcIncome := decimal.NewFromInt(0)
//
// if user.Business != nil {
// moneyIncome = moneyIncome.Add(user.Business.Income).Mul(user.Group.Multiplier)
// }
// if user.Maid != nil {
// expIncome = expIncome.Add(user.Maid.Income).Mul(user.Group.Multiplier)
// }
// if user.Miner != nil {
// btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
// }
//
// waifus, err := psql.GetUserWaifus(user.ID)
// if err != nil {
// b.Logger().Error(err)
// continue
// }
// for _, waifu := range waifus {
// moneyIncome = moneyIncome.Mul(waifu.MoneyBonus)
// expIncome = expIncome.Mul(waifu.ExpBonus)
// btcIncome = btcIncome.Mul(waifu.MoneyBonus)
// }
//
// expIncome = expIncome.Mul(decimal.NewFromFloat(0.25))
// moneyIncome = moneyIncome.Mul(decimal.NewFromFloat(0.25))
// btcIncome = btcIncome.Mul(decimal.NewFromFloat(0.25))
//
// user.ExpIncome += int(expIncome.IntPart())
// user.MoneyIncome = user.MoneyIncome.Add(moneyIncome)
// user.BtcIncome = user.BtcIncome.Add(btcIncome)
// user.IncomeTime = time.Now().Add(-time.Hour * 2)
// psql.UpdateUser(user)
//
// b.Logger().Debug(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.ID))
// }
// }
//}
users, err := psql.GetAllUsers()
if err != nil {
b.Logger().Error(err)
continue
}
for _, user := range users {
if user.Business == nil && user.Maid == nil && user.Miner == nil {
continue
}
if time.Now().Before(user.IncomeTime.Add(time.Hour * 3)) {
continue
}
moneyIncome := decimal.NewFromInt(0)
expIncome := decimal.NewFromInt(0)
btcIncome := decimal.NewFromInt(0)
if user.Business != nil {
moneyIncome = moneyIncome.Add(user.Business.Income).Mul(user.Group.Multiplier)
}
if user.Maid != nil {
expIncome = expIncome.Add(user.Maid.Income).Mul(user.Group.Multiplier)
}
if user.Miner != nil {
btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
}
waifus, err := psql.GetUserWaifus(user.ID)
if err != nil {
b.Logger().Error(err)
continue
}
for _, waifu := range waifus {
moneyIncome = moneyIncome.Mul(waifu.MoneyBonus)
expIncome = expIncome.Mul(waifu.ExpBonus)
btcIncome = btcIncome.Mul(waifu.MoneyBonus)
}
expIncome = expIncome.Mul(decimal.NewFromFloat(0.25))
moneyIncome = moneyIncome.Mul(decimal.NewFromFloat(0.25))
btcIncome = btcIncome.Mul(decimal.NewFromFloat(0.25))
user.ExpIncome += int(expIncome.IntPart())
user.MoneyIncome = user.MoneyIncome.Add(moneyIncome)
user.BtcIncome = user.BtcIncome.Add(btcIncome)
user.IncomeTime = time.Now().Add(-time.Hour * 2)
psql.UpdateUser(user)
b.Logger().Debug(fmt.Sprintf("У %d было пассивно собрано. След. сбор через час\n", user.ID))
}
}
}
func profile(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
func profile(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewUserRepository(db)
user, err := rep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName)
if err != nil {
ctx.Error(err)
return
@@ -156,8 +157,9 @@ func profile(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
ctx.Answer(strings.Join(out, "\n"))
}
func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
func work(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewUserRepository(db)
user, err := rep.GetOrCreate(ctx.FromID, ctx.Update.Message.From.FirstName)
if err != nil {
ctx.Error(err)
return
@@ -178,7 +180,8 @@ func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
// Count money
moneyToAdd := work.MoneyIncome.Mul(user.Group.Multiplier)
waifus, err := psql.GetUserWaifus(user.ID)
waifuRep := psql.NewWaifuRepository(db)
waifus, err := waifuRep.GetByUserId(user.ID)
if err != nil {
ctx.Error(err)
return
@@ -191,7 +194,7 @@ func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user.Balance = user.Balance.Add(moneyToAdd)
user.WorkTime = time.Now().Add(-time.Hour * 3)
user.Level, _ = psql.CountLevel(user.Exp)
_, err = psql.UpdateUser(user)
_, err = rep.Update(user)
if err != nil {
ctx.Error(err)
return
@@ -203,8 +206,9 @@ func work(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
))
}
func collect(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Update.Message.From.FirstName)
func collect(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewUserRepository(db)
user, err := rep.GetOrCreate(ctx.FromID, ctx.Update.Message.From.FirstName)
if err != nil {
ctx.Error(err)
return
@@ -240,7 +244,8 @@ func collect(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
btcIncome = btcIncome.Add(user.Miner.Income).Mul(user.Group.Multiplier)
}
waifus, err := psql.GetUserWaifus(user.ID)
waifuRep := psql.NewWaifuRepository(db)
waifus, err := waifuRep.GetByUserId(user.ID)
if err != nil {
ctx.Error(err)
return
@@ -287,7 +292,11 @@ func collect(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user.BTC = user.BTC.Add(btcIncome)
user.IncomeTime = time.Now()
psql.UpdateUser(user)
_, err = rep.Update(user)
if err != nil {
ctx.Error(err)
return
}
out := []string{
fmt.Sprintf("Ты собрал %s.", strings.Join(incomeText, ", ")),
@@ -306,8 +315,9 @@ func code(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
// user, err := database.Get
}
func vacancies(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
works, err := psql.GetAllWorks()
func vacancies(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
worksRep := psql.NewWorkRepository(db)
works, err := worksRep.GetAll()
if err != nil {
ctx.Error(err)
@@ -331,7 +341,9 @@ func getAJob(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
return
}
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
userRep := psql.NewUserRepository(db)
workRep := psql.NewWorkRepository(db)
user, err := userRep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName)
if err != nil {
ctx.Error(err)
return
@@ -341,7 +353,7 @@ func getAJob(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
ctx.Error(err)
return
}
work, err := psql.GetWorkById(workId)
work, err := workRep.GetById(workId)
if err != nil {
ctx.Error(err)
return
@@ -351,12 +363,17 @@ func getAJob(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
return
}
user.WorkID = workId
psql.UpdateUser(user)
_, err = userRep.Update(user)
if err != nil {
ctx.Error(err)
return
}
ctx.Answer("Ты успешно устроился на работу!")
}
func aboutGroup(ctx *laniakea.MsgContext, _ *laniakea.DatabaseContext) {
user, err := psql.GetOrCreateUser(ctx.FromID, ctx.Msg.From.FirstName)
func aboutGroup(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
userRep := psql.NewUserRepository(db)
user, err := userRep.GetOrCreate(ctx.FromID, ctx.Msg.From.FirstName)
if err != nil {
ctx.Error(err)
return