2025-02-12 19:29:00 +01:00
|
|
|
package core
|
2024-11-09 19:35:44 +01:00
|
|
|
|
|
|
|
|
import (
|
2025-02-12 20:12:30 +01:00
|
|
|
"errors"
|
|
|
|
|
|
2024-11-09 19:35:44 +01:00
|
|
|
"gorm.io/gorm"
|
|
|
|
|
)
|
|
|
|
|
|
2025-02-17 17:52:03 +01:00
|
|
|
func (u *User) ListPlans(orm *gorm.DB) ([]Plan, error) {
|
2024-11-09 19:35:44 +01:00
|
|
|
var plans []Plan
|
2025-01-14 20:14:07 +01:00
|
|
|
err := orm.Debug().Table("plans p").
|
|
|
|
|
Select("p.*").
|
|
|
|
|
Joins("JOIN members m ON m.plan_id=p.id").
|
|
|
|
|
Where("m.user_id=?", u.Username).
|
|
|
|
|
Find(&plans)
|
|
|
|
|
return plans, err.Error
|
2024-11-09 19:35:44 +01:00
|
|
|
}
|
2025-02-11 21:16:39 +01:00
|
|
|
|
2025-02-12 20:12:30 +01:00
|
|
|
func (u *User) GetPlan(db *gorm.DB, plan_id uint) (Plan, error) {
|
|
|
|
|
var plan Plan = Plan{
|
|
|
|
|
ID: plan_id,
|
|
|
|
|
}
|
|
|
|
|
result := db.Take(&plan)
|
|
|
|
|
|
|
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
|
return plan, ErrNotFound
|
|
|
|
|
} else if result.Error != nil {
|
|
|
|
|
return plan, result.Error
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if plan.Owner == u.Username {
|
|
|
|
|
return plan, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isMember, err := plan.IsMember(db, u)
|
|
|
|
|
|
|
|
|
|
if !isMember || err != nil {
|
|
|
|
|
return plan, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return plan, nil
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-11 21:16:39 +01:00
|
|
|
func GetUser(orm *gorm.DB, username string) (User, error) {
|
|
|
|
|
user := User{Username: username}
|
|
|
|
|
if err := orm.Take(&user).Error; err != nil {
|
|
|
|
|
return user, err
|
|
|
|
|
}
|
|
|
|
|
return user, nil
|
|
|
|
|
}
|