diff options
author | Unknown <joe2010xtmf@163.com> | 2014-02-19 13:04:31 -0500 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-02-19 13:04:31 -0500 |
commit | 4b92a6c2df28054ad766bc262f308db9f6066596 (patch) | |
tree | 6768e8c09350111f9a8ec802a07d4fd75e663415 /models | |
parent | be0ba9ea88aff8a658d0495d36accf944b74888d (diff) |
Add code of delete user
Diffstat (limited to 'models')
-rw-r--r-- | models/models.go | 20 | ||||
-rw-r--r-- | models/repo.go | 2 | ||||
-rw-r--r-- | models/user.go | 12 |
3 files changed, 25 insertions, 9 deletions
diff --git a/models/models.go b/models/models.go index 55e441c5..8341f996 100644 --- a/models/models.go +++ b/models/models.go @@ -7,6 +7,7 @@ package models import ( "fmt" "os" + "os/user" _ "github.com/go-sql-driver/mysql" "github.com/lunny/xorm" @@ -47,18 +48,27 @@ func setEngine() { dbUser := utils.Cfg.MustValue("database", "USER") dbPwd := utils.Cfg.MustValue("database", "PASSWD") - var err error + uname, err := user.Current() + if err != nil { + fmt.Printf("models.init -> fail to get user: %s\n", err) + os.Exit(2) + } + + if uname.Username == "jiahuachen" { + dbPwd = utils.Cfg.MustValue("database", "PASSWD_jiahua") + } + switch dbType { case "mysql": orm, err = xorm.NewEngine("mysql", fmt.Sprintf("%v:%v@%v/%v?charset=utf8", dbUser, dbPwd, dbHost, dbName)) default: - log.Critical("Unknown database type: %s", dbType) + fmt.Printf("Unknown database type: %s\n", dbType) os.Exit(2) } if err != nil { - log.Critical("models.init -> Conntect database: %s", dbType) + fmt.Printf("models.init -> fail to conntect database: %s\n", dbType) os.Exit(2) } @@ -73,7 +83,7 @@ func init() { setEngine() err := orm.Sync(new(User), new(PublicKey), new(Repo), new(Access)) if err != nil { - log.Error("sync database struct error: %s", err) - os.Exit(1) + fmt.Printf("sync database struct error: %s\n", err) + os.Exit(2) } } diff --git a/models/repo.go b/models/repo.go index 1eeeaa63..d48c9a97 100644 --- a/models/repo.go +++ b/models/repo.go @@ -77,7 +77,7 @@ func CreateRepository(user *User, reposName string) (*Repo, error) { return &repo, nil } -// list one user's repository +// GetRepositories returns the list of repositories of given user. func GetRepositories(user *User) ([]Repo, error) { repos := make([]Repo, 0) err := orm.Find(&repos, &Repo{OwnerId: user.Id}) diff --git a/models/user.go b/models/user.go index 6cf7f674..2527a197 100644 --- a/models/user.go +++ b/models/user.go @@ -74,6 +74,7 @@ type Action struct { } var ( + ErrUserOwnRepos = errors.New("User still have ownership of repositories") ErrUserAlreadyExist = errors.New("User already exist") ErrUserNotExist = errors.New("User does not exist") ) @@ -95,7 +96,6 @@ func RegisterUser(user *User) (err error) { user.LowerName = strings.ToLower(user.Name) user.Avatar = utils.EncodeMd5(user.Email) - user.Created = time.Now() user.Updated = time.Now() user.EncodePasswd() _, err = orm.Insert(user) @@ -110,8 +110,14 @@ func UpdateUser(user *User) (err error) { // DeleteUser completely deletes everything of the user. func DeleteUser(user *User) error { - // TODO: check if has ownership of any repository. - _, err := orm.Delete(user) + repos, err := GetRepositories(user) + if err != nil { + return errors.New("modesl.GetRepositories: " + err.Error()) + } else if len(repos) > 0 { + return ErrUserOwnRepos + } + + _, err = orm.Delete(user) // TODO: delete and update follower information. return err } |