Planner/core/users.go
2025-02-12 20:12:30 +01:00

50 lines
937 B
Go

package core
import (
"errors"
"gorm.io/gorm"
)
func (u *User) GetPlans(orm *gorm.DB) ([]Plan, error) {
var plans []Plan
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
}
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
}
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
}