From 6040c7aaf2d924fd360f7f8c6729e337d9ef43ff Mon Sep 17 00:00:00 2001 From: David Gwilliam Date: Thu, 12 Sep 2024 19:06:02 -0700 Subject: [PATCH] implement players --- Rakefile | 13 +++++++++++++ app/actions/players/show.rb | 17 +++++++++++++++++ app/templates/players/show.html.erb | 5 +++++ app/views/players/show.rb | 11 +++++++++++ config/routes.rb | 1 + db/migrate/20240913010237_create_players.rb | 11 +++++++++++ euchre_camp.db | Bin 0 -> 20480 bytes lib/euchre_camp/persistence/players.rb | 9 +++++++++ .../persistence/repositories/player.rb | 17 +++++++++++++++++ spec/actions/players/show_spec.rb | 10 ++++++++++ 10 files changed, 94 insertions(+) create mode 100644 app/actions/players/show.rb create mode 100644 app/templates/players/show.html.erb create mode 100644 app/views/players/show.rb create mode 100644 db/migrate/20240913010237_create_players.rb create mode 100644 euchre_camp.db create mode 100644 lib/euchre_camp/persistence/players.rb create mode 100644 lib/euchre_camp/persistence/repositories/player.rb create mode 100644 spec/actions/players/show_spec.rb diff --git a/Rakefile b/Rakefile index c526f38..2e10e6a 100644 --- a/Rakefile +++ b/Rakefile @@ -1,3 +1,16 @@ # frozen_string_literal: true require "hanami/rake_tasks" +require 'rom/sql/rake_task' + +task :environment do + require_relative 'config/app' + require 'hanami/prepare' +end + +namespace :db do + task setup: :environment do + Hanami.app.prepare(:persistence) + ROM::SQL::RakeSupport.env = Hanami.app['persistence.config'] + end +end \ No newline at end of file diff --git a/app/actions/players/show.rb b/app/actions/players/show.rb new file mode 100644 index 0000000..5d7d81a --- /dev/null +++ b/app/actions/players/show.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module EuchreCamp + module Actions + module Players + class Show < EuchreCamp::Action + include Deps[ repo: 'repositories.players' ] + + def handle(request, response) + requested_player = request.params[:id] + player = repo.by_id(requested_player) + response.render(view, player: player) + end + end + end + end +end diff --git a/app/templates/players/show.html.erb b/app/templates/players/show.html.erb new file mode 100644 index 0000000..aff2552 --- /dev/null +++ b/app/templates/players/show.html.erb @@ -0,0 +1,5 @@ +

EuchreCamp::Views::Players::Show

+ +

<%= player.name %>

+ +

<%= player.rating %>

\ No newline at end of file diff --git a/app/views/players/show.rb b/app/views/players/show.rb new file mode 100644 index 0000000..52f1de9 --- /dev/null +++ b/app/views/players/show.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module EuchreCamp + module Views + module Players + class Show < EuchreCamp::View + expose :player + end + end + end +end diff --git a/config/routes.rb b/config/routes.rb index dc50297..4071a83 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,5 +3,6 @@ module EuchreCamp class Routes < Hanami::Routes # Add your routes here. See https://guides.hanamirb.org/routing/overview/ for details. + get "/players/:id", to: "players.show" end end diff --git a/db/migrate/20240913010237_create_players.rb b/db/migrate/20240913010237_create_players.rb new file mode 100644 index 0000000..545cc8d --- /dev/null +++ b/db/migrate/20240913010237_create_players.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +ROM::SQL.migration do + change do + create_table :players do + primary_key :id + column :name, String, null: false + column :rating, Integer, null: false + end + end +end diff --git a/euchre_camp.db b/euchre_camp.db new file mode 100644 index 0000000000000000000000000000000000000000..d63e3daa1ead963d8171c66c7df9274fcb179326 GIT binary patch literal 20480 zcmeI&&2G~$0KjplYga&8!>xzyV8NwTr}b+U;znROOtjr7>7l12>%1;fo6;nkfCJKa z2;PLZ;Xyd!j1;j}DpxlBtyp&K*s*`k#Yx`3>jsIE7xQT5C$cS`3d0buq!dCFbu8$( z40)YN<1!e_%!afm4n8k-%%37(Iud5b{9ZaLecNz7RR|z}00IagfB*srAbviL%_It+TOEvS|SujZ( z%)>ZdEy&#+@mhU4_KRSuHVo(QX;iJ;c6nGgL=c{xB=33E~ew-eq zkJOHihWSJ2gMa`62q1s}0tg_000IagfB*vbP~e%7>$MuK!^X>IyU}d4+ArL3qOKC~{y+WxuYdX{Ab