package model

import (
	"gorm.io/gorm"
)

type User struct {
	Email               string `gorm:"primaryKey"`
	FeishuUserId        string `gorm:"type:varchar(255)" json:"user_id"`
	FeishuOpenId        string `gorm:"type:varchar(255)" json:"open_id"`
	FeishuLeaderUserId  string `gorm:"type:varchar(255)"`
	JiraUserDisplayName string `gorm:"type:varchar(255);uniqueIndex"`
	LeaderEmail         string `gorm:"type:varchar(255)"`
}

func (u User) NeedQueryLark() bool {
	return u.FeishuUserId == "" || u.FeishuOpenId == "" || u.FeishuLeaderUserId == "" || u.LeaderEmail == ""
}

type Users []User

// FindUser find the first user matching the given condition.
func FindUser(db *gorm.DB, conds ...interface{}) (*User, error) {
	user := &User{}
	result := db.Find(user, conds...)
	if result.Error != nil {
		return nil, result.Error
	}
	if result.RowsAffected == 0 {
		return nil, ErrDataNotExist
	}

	return user, nil
}
