compress wip

This commit is contained in:
2026-01-29 17:20:22 +03:00
parent 047246b83a
commit bb8ed1a5c4
9 changed files with 142 additions and 69 deletions

View File

@@ -133,6 +133,61 @@ func (rep *UserRepository) GetById(telegramId int) (*User, error) {
return user, err
}
func (rep *UserRepository) GetJoins(user *User) (*User, error) {
err := sqlx.Transact(rep.db, func(ctx context.Context, db sqlx.Queryable) error {
user.Group = new(Group)
err := rep.db.Get(user.Group, "SELECT * FROM groups WHERE id=$1;", user.GroupID)
if err != nil {
return err
}
user.Work = new(Work)
err = rep.db.Get(user.Work, "SELECT * FROM works WHERE id=$1;", user.WorkID)
if err != nil {
return err
}
shopRep := NewShopRepository(rep.db)
if user.AutoID.Valid {
user.Auto, err = shopRep.GetAuto(user.AutoID.Int32)
if err != nil {
return err
}
}
if user.BusinessID.Valid {
user.Business, err = shopRep.GetBusiness(user.BusinessID.Int32)
if err != nil {
return err
}
}
if user.MaidID.Valid {
user.Maid, err = shopRep.GetMaid(user.MaidID.Int32)
if err != nil {
return err
}
}
if user.MinerID.Valid {
user.Miner, err = shopRep.GetMiner(user.MinerID.Int32)
if err != nil {
return err
}
}
if user.PairID.Valid {
user.Pair, err = rep.GetById(int(user.PairID.Int64))
if err != nil {
return err
}
}
if user.FractionID.Valid {
fractionRep := NewFractionRepository(rep.db)
user.Fraction, err = fractionRep.GetById(user.FractionID.Int32)
if err != nil {
return err
}
}
return nil
})
return user, err
}
func (rep *UserRepository) Update(user *User) (*User, error) {
_, err := rep.db.NamedExec(
`UPDATE users SET balance=:balance, name=:name, group_id=:group_id, level=:level, exp=:exp,
@@ -152,8 +207,21 @@ func (rep *UserRepository) Update(user *User) (*User, error) {
func (rep *UserRepository) GetAll() ([]*User, error) {
users := make([]*User, 0)
err := rep.db.Select(&users, "SELECT * FROM users ORDER BY id;")
if err != nil {
return nil, err
}
return users, nil
outUsers := make([]*User, len(users))
for i, user := range users {
u, err := rep.GetJoins(user)
if err != nil {
return nil, err
}
outUsers[i] = u
}
return outUsers, nil
}
func CountLevel(userXp int) (int, int) {