implement players
This commit is contained in:
@@ -1,3 +1,16 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require "hanami/rake_tasks"
|
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
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<h1>EuchreCamp::Views::Players::Show</h1>
|
||||||
|
|
||||||
|
<h2><%= player.name %></h2>
|
||||||
|
|
||||||
|
<h3><%= player.rating %></h3>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module EuchreCamp
|
||||||
|
module Views
|
||||||
|
module Players
|
||||||
|
class Show < EuchreCamp::View
|
||||||
|
expose :player
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -3,5 +3,6 @@
|
|||||||
module EuchreCamp
|
module EuchreCamp
|
||||||
class Routes < Hanami::Routes
|
class Routes < Hanami::Routes
|
||||||
# Add your routes here. See https://guides.hanamirb.org/routing/overview/ for details.
|
# Add your routes here. See https://guides.hanamirb.org/routing/overview/ for details.
|
||||||
|
get "/players/:id", to: "players.show"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -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
|
||||||
Binary file not shown.
@@ -0,0 +1,9 @@
|
|||||||
|
module EuchreCamp
|
||||||
|
module Persistence
|
||||||
|
module Relations
|
||||||
|
class Players < ROM::Relation[:sql]
|
||||||
|
schema(:players, infer: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
module EuchreCamp
|
||||||
|
module Persistence
|
||||||
|
module Repositories
|
||||||
|
class Player < ROM::Repository[:players]
|
||||||
|
commands :create, update: :by_pk, delete: :by_pk
|
||||||
|
|
||||||
|
def all
|
||||||
|
players.to_a
|
||||||
|
end
|
||||||
|
|
||||||
|
def find(id)
|
||||||
|
players.by_pk(id).one!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
RSpec.describe EuchreCamp::Actions::Players::Show do
|
||||||
|
let(:params) { Hash[] }
|
||||||
|
|
||||||
|
it "works" do
|
||||||
|
response = subject.call(params)
|
||||||
|
expect(response).to be_successful
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user