// ユーザーの登録を行います。 func (d *Database) WriteUser(user *model.User) error { tx, err := d.db.Begin() if err != nil { return err } if user.Id > 0 { // 更新 stmt, err := tx.Prepare("update users set user_name=?, password_hash=? where id=?") if err != nil { return err } defer stmt.Close() _, err = stmt.Exec(user.UserName, user.PasswordHash, user.Id) if err != nil { return err } } else { // 新規 stmt, err := tx.Prepare("insert into users (user_name, password_hash) values (?, ?)") if err != nil { return err } defer stmt.Close() res, err := stmt.Exec(user.UserName, user.PasswordHash) if err != nil { return err } id, err := res.LastInsertId() if err != nil { return err } user.Id = model.ID(id) } tx.Commit() return nil }