package store import ( "crypto/sha1" "fmt" "gorm.io/gorm" ) type User struct { gorm.Model Username string Password string Email string `gorm:"unique"` } func (user *User) GetProjects(db *gorm.DB) []Project { var projects []Project db.Where(&Project{OwnerId: user.ID}).Find(&projects) return projects } func (user *User) GetProject(db *gorm.DB, id int) Project { var project Project db.Where("id = ? AND owner_id = ?", id, user.ID).First(&project) return project } func (user *User) CreateProject(db *gorm.DB) Project { var project Project project.OwnerId = user.ID db.Create(&project) return project } func (user *User) ChangeUsername(db *gorm.DB, username string) { user.Username = username db.Save(&user) } func (user *User) ChangeEmail(db *gorm.DB, email string) error { user.Email = email return db.Save(&user).Error } func (user *User) ChangePassword(db *gorm.DB, password string) { sha1Sum := sha1.Sum([]byte(password)) user.Password = fmt.Sprintf("%x", sha1Sum) db.Save(&user) } func CreateUser(db *gorm.DB, email string, password string, username string) User { user := User{} user.Username = username sha1Hash := sha1.Sum([]byte(password)) user.Password = fmt.Sprintf("%x", sha1Hash) user.Email = email db.Create(&user) return user }