Planner/core/users.go

51 lines
937 B
Go
Raw Normal View History

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"
)
func (u *User) GetPlans(orm *gorm.DB) ([]Plan, error) {
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
}