package models

type User struct {
	UserId      string `json:"user_id"`
	UserName    string `json:"user_name"`
	UserNameCn  string `json:"user_name_cn"`
	Email       string `json:"email"`
	Status      string `json:"status"`
	IsStaff     int    `json:"is_staff"`
	IsSuperuser int    `json:"is_superuser"`
	//WorkStatus string `json:"work_status"`
}

func CreateUser(user interface{}, email string) (err error) {
	notExist := db.Where("email = ?", email).First(&User{}).RecordNotFound()
	if notExist {
		err = db.Create(user).Error
		return err
	}
	err = db.Model(&User{}).Where("email = ?", email).Updates(user).Error
	return
}

func GetUserList() (user []User) {
	db.Raw(`SELECT * FROM user WHERE status = 'Activated';`).Scan(&user)
	return
}

func GetSuperuserList() (userNames []string) {
	var users []User
	db.Raw(`SELECT user_name FROM user WHERE is_superuser = 1 AND status = 'Activated';`).Scan(&users)
	for _, user := range users {
		userNames = append(userNames, user.UserName)
	}
	return
}

func GetUserByUserName(userName string) (user User) {
	db.Where("user_name = ?", userName).First(&user)
	return
}
