From 141f8b1a7e42928e94cccd0c8f89fdd56f8e2efe Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 28 Oct 2023 17:32:45 -0400 Subject: created puzzle and score tables --- Gemfile.lock | 3 ++ app/models/wittle/puzzle.rb | 12 ++++++++ app/models/wittle/score.rb | 8 ++++++ db/migrate/20231028205751_create_wittle_puzzles.rb | 11 ++++++++ db/migrate/20231028210722_create_wittle_scores.rb | 12 ++++++++ lib/wittle/engine.rb | 1 + test/dummy/db/schema.rb | 33 ++++++++++++++++++++++ test/fixtures/wittle/puzzles.yml | 11 ++++++++ test/fixtures/wittle/scores.yml | 13 +++++++++ test/models/wittle/puzzle_test.rb | 9 ++++++ test/models/wittle/score_test.rb | 9 ++++++ wittle.gemspec | 1 + 12 files changed, 123 insertions(+) create mode 100644 app/models/wittle/puzzle.rb create mode 100644 app/models/wittle/score.rb create mode 100644 db/migrate/20231028205751_create_wittle_puzzles.rb create mode 100644 db/migrate/20231028210722_create_wittle_scores.rb create mode 100644 test/dummy/db/schema.rb create mode 100644 test/fixtures/wittle/puzzles.yml create mode 100644 test/fixtures/wittle/scores.yml create mode 100644 test/models/wittle/puzzle_test.rb create mode 100644 test/models/wittle/score_test.rb diff --git a/Gemfile.lock b/Gemfile.lock index 2fd1efc..86422fe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,6 +2,7 @@ PATH remote: . specs: wittle (0.1.0) + enumerize haml rails (>= 7.1.1) rice @@ -91,6 +92,8 @@ GEM date (3.3.3) drb (2.1.1) ruby2_keywords + enumerize (2.7.0) + activesupport (>= 3.2) erubi (1.12.0) globalid (1.2.1) activesupport (>= 6.1) diff --git a/app/models/wittle/puzzle.rb b/app/models/wittle/puzzle.rb new file mode 100644 index 0000000..e118d8a --- /dev/null +++ b/app/models/wittle/puzzle.rb @@ -0,0 +1,12 @@ +module Wittle + class Puzzle < ApplicationRecord + extend Enumerize + + has_many :scores + + validates :data, presence: true + + validates :category, presence: true + enumerize :category, in: [:normal, :hard, :expert], scope: :shallow + end +end diff --git a/app/models/wittle/score.rb b/app/models/wittle/score.rb new file mode 100644 index 0000000..be00fda --- /dev/null +++ b/app/models/wittle/score.rb @@ -0,0 +1,8 @@ +module Wittle + class Score < ApplicationRecord + belongs_to :puzzle + + validates :name, presence: true + validates :ip, presence: true + end +end diff --git a/db/migrate/20231028205751_create_wittle_puzzles.rb b/db/migrate/20231028205751_create_wittle_puzzles.rb new file mode 100644 index 0000000..ebe0bf7 --- /dev/null +++ b/db/migrate/20231028205751_create_wittle_puzzles.rb @@ -0,0 +1,11 @@ +class CreateWittlePuzzles < ActiveRecord::Migration[7.1] + def change + create_table :wittle_puzzles do |t| + t.text :data + t.text :solved_data + t.string :category + + t.timestamps + end + end +end diff --git a/db/migrate/20231028210722_create_wittle_scores.rb b/db/migrate/20231028210722_create_wittle_scores.rb new file mode 100644 index 0000000..9ae6413 --- /dev/null +++ b/db/migrate/20231028210722_create_wittle_scores.rb @@ -0,0 +1,12 @@ +class CreateWittleScores < ActiveRecord::Migration[7.1] + def change + create_table :wittle_scores do |t| + t.references :puzzle, null: false, foreign_key: true + t.string :name + t.string :ip + t.integer :seconds_taken + + t.timestamps + end + end +end diff --git a/lib/wittle/engine.rb b/lib/wittle/engine.rb index f0ec682..6b4feca 100644 --- a/lib/wittle/engine.rb +++ b/lib/wittle/engine.rb @@ -1,3 +1,4 @@ +require "enumerize" require "haml" require "wittle_generator/wittle_generator" diff --git a/test/dummy/db/schema.rb b/test/dummy/db/schema.rb new file mode 100644 index 0000000..928cc3c --- /dev/null +++ b/test/dummy/db/schema.rb @@ -0,0 +1,33 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# This file is the source Rails uses to define your schema when running `bin/rails +# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema[7.1].define(version: 2023_10_28_210722) do + create_table "wittle_puzzles", force: :cascade do |t| + t.text "data" + t.text "solved_data" + t.string "category" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "wittle_scores", force: :cascade do |t| + t.integer "puzzle_id", null: false + t.string "name" + t.string "ip" + t.integer "seconds_taken" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["puzzle_id"], name: "index_wittle_scores_on_puzzle_id" + end + + add_foreign_key "wittle_scores", "puzzles" +end diff --git a/test/fixtures/wittle/puzzles.yml b/test/fixtures/wittle/puzzles.yml new file mode 100644 index 0000000..75f9eab --- /dev/null +++ b/test/fixtures/wittle/puzzles.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + data: MyText + solved_data: MyText + category: MyString + +two: + data: MyText + solved_data: MyText + category: MyString diff --git a/test/fixtures/wittle/scores.yml b/test/fixtures/wittle/scores.yml new file mode 100644 index 0000000..1f21c4c --- /dev/null +++ b/test/fixtures/wittle/scores.yml @@ -0,0 +1,13 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + puzzle: one + name: MyString + ip: MyString + seconds_taken: 1 + +two: + puzzle: two + name: MyString + ip: MyString + seconds_taken: 1 diff --git a/test/models/wittle/puzzle_test.rb b/test/models/wittle/puzzle_test.rb new file mode 100644 index 0000000..f826aa3 --- /dev/null +++ b/test/models/wittle/puzzle_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +module Wittle + class PuzzleTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end + end +end diff --git a/test/models/wittle/score_test.rb b/test/models/wittle/score_test.rb new file mode 100644 index 0000000..0d5e4a3 --- /dev/null +++ b/test/models/wittle/score_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +module Wittle + class ScoreTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end + end +end diff --git a/wittle.gemspec b/wittle.gemspec index e182456..0c467e3 100644 --- a/wittle.gemspec +++ b/wittle.gemspec @@ -18,4 +18,5 @@ Gem::Specification.new do |s| s.add_dependency "rails", ">= 7.1.1" s.add_dependency "rice" s.add_dependency "haml" + s.add_dependency "enumerize" end -- cgit 1.4.1