2016-12-27 10 views
0

私はデータベースエントリを次のように更新する機能を持っています。論理は、存在しないエントリを更新するとエラーを返すということです。どうにかして、私はエラー処理のコードを少し冗長にします。これを行うより良い方法はありますか?ありがとう。golangデータベース存在しないエントリを更新する

func (adb *AppDB) UpdateTicket(t Ticket) error {         
    result, err := adb.db.NamedExec(`UPDATE ticket SET detail=:detail, start_time=:start_time, end_time=:end_time, priority=:priority WHERE id=:id;`, &t) 
    if err != nil {                 
     return err                 
    }                    
    nRows, err := result.RowsAffected()            
    if err != nil {                 
     return err                 
    }                    
    if nRows == 0 {                 
     return fmt.Errorf("Ticket:%s does not exist for update", t)     
    }                    
    return nil                  
}  
+0

の多くのためのベストプラクティスではありませんしようとします。私は非常に推薦するhttps://github.com/jinzhu/gorm –

答えて

0

あなたがそれほど冗長でなく維持しやすいようにする必要がある場合は、ORMを使用することを強くお勧めします。あなたはリターン名前https://github.com/jinzhu/gorm

が、それはあまり冗長になるかもしれないが、これはあなたがどんなgolaangのORMを使用してシナリオ

func (adb *AppDB) UpdateTicket(t Ticket) (err error) { 
    var result ResultType 
    var nRows int 
    if result, err = adb.db.NamedExec(`UPDATE ticket SET detail=:detail, start_time=:start_time, end_time=:end_time, priority=:priority WHERE id=:id;`, &t); err != nil { 
     return 
    } 
    if nRows, err = result.RowsAffected(); err != nil { 
     return 
    } 
    if nRows == 0 { 
     err = fmt.Errorf("Ticket:%s does not exist for update", t) 
    } 
    return 
} 
関連する問題