|  | @@ -79,9 +79,9 @@ func init() {
 | 
	
		
			
				|  |  |  // PublicKey represents a SSH key.
 | 
	
		
			
				|  |  |  type PublicKey struct {
 | 
	
		
			
				|  |  |  	Id                int64
 | 
	
		
			
				|  |  | -	OwnerId           int64  `xorm:"UNIQUE(s) INDEX NOT NULL"`
 | 
	
		
			
				|  |  | -	Name              string `xorm:"UNIQUE(s) NOT NULL"`
 | 
	
		
			
				|  |  | -	Fingerprint       string
 | 
	
		
			
				|  |  | +	OwnerId           int64     `xorm:"UNIQUE(s) INDEX NOT NULL"`
 | 
	
		
			
				|  |  | +	Name              string    `xorm:"UNIQUE(s) NOT NULL"`
 | 
	
		
			
				|  |  | +	Fingerprint       string    `xorm:"INDEX NOT NULL"`
 | 
	
		
			
				|  |  |  	Content           string    `xorm:"TEXT NOT NULL"`
 | 
	
		
			
				|  |  |  	Created           time.Time `xorm:"CREATED"`
 | 
	
		
			
				|  |  |  	Updated           time.Time
 | 
	
	
		
			
				|  | @@ -209,6 +209,9 @@ func AddPublicKey(key *PublicKey) (err error) {
 | 
	
		
			
				|  |  |  		return errors.New("not enough output for calculating fingerprint: " + stdout)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	key.Fingerprint = strings.Split(stdout, " ")[1]
 | 
	
		
			
				|  |  | +	if has, err := x.Get(&PublicKey{Fingerprint: key.Fingerprint}); err == nil && has {
 | 
	
		
			
				|  |  | +		return ErrKeyAlreadyExist
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// Save SSH key.
 | 
	
		
			
				|  |  |  	if _, err = x.Insert(key); err != nil {
 |