Exemple #1
0
// ユーザーの登録を行います。
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
}