Add dictionary ingest and view
Dictionary json ingest to database, view populated with database contents
This commit is contained in:
parent
6f2e074a0a
commit
f5e9f3699f
@ -1,5 +1,6 @@
|
||||
class DictionaryController < ApplicationController
|
||||
def index
|
||||
@parts_of_speech = PartOfSpeech.all
|
||||
@words = Word.all
|
||||
end
|
||||
end
|
||||
|
3
app/models/definition.rb
Normal file
3
app/models/definition.rb
Normal file
@ -0,0 +1,3 @@
|
||||
class Definition < ApplicationRecord
|
||||
belongs_to :word
|
||||
end
|
3
app/models/word.rb
Normal file
3
app/models/word.rb
Normal file
@ -0,0 +1,3 @@
|
||||
class Word < ApplicationRecord
|
||||
has_many :definitions
|
||||
end
|
@ -10,8 +10,26 @@
|
||||
</tr>
|
||||
<% @parts_of_speech.each do |item| %>
|
||||
<tr>
|
||||
<td><%= item.pos %></td>
|
||||
<td><b><%= item.pos %></b></td>
|
||||
<td><%= item.definition %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
||||
<h1>Words</h1>
|
||||
<% @words.each do |word| %>
|
||||
<h2><%= word.word %></h2>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Part of Speech</b></td>
|
||||
<td><b>Definition</b></td>
|
||||
</tr>
|
||||
<% word.definitions.each do |definition| %>
|
||||
<tr>
|
||||
<td><b><%= definition.pos %></b></td>
|
||||
<td><%= definition.definition %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
<% end %>
|
||||
|
9
db/migrate/20231013015428_create_words.rb
Normal file
9
db/migrate/20231013015428_create_words.rb
Normal file
@ -0,0 +1,9 @@
|
||||
class CreateWords < ActiveRecord::Migration[7.1]
|
||||
def change
|
||||
create_table :words do |t|
|
||||
t.string :word
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
11
db/migrate/20231013015524_create_definitions.rb
Normal file
11
db/migrate/20231013015524_create_definitions.rb
Normal file
@ -0,0 +1,11 @@
|
||||
class CreateDefinitions < ActiveRecord::Migration[7.1]
|
||||
def change
|
||||
create_table :definitions do |t|
|
||||
t.string :pos
|
||||
t.string :definition
|
||||
t.references :word, null: false, foreign_key: true
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
18
db/schema.rb
generated
18
db/schema.rb
generated
@ -10,7 +10,16 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[7.1].define(version: 2023_10_12_235050) do
|
||||
ActiveRecord::Schema[7.1].define(version: 2023_10_13_015524) do
|
||||
create_table "definitions", force: :cascade do |t|
|
||||
t.string "pos"
|
||||
t.string "definition"
|
||||
t.integer "word_id", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["word_id"], name: "index_definitions_on_word_id"
|
||||
end
|
||||
|
||||
create_table "part_of_speeches", force: :cascade do |t|
|
||||
t.string "pos"
|
||||
t.string "definition"
|
||||
@ -18,4 +27,11 @@ ActiveRecord::Schema[7.1].define(version: 2023_10_12_235050) do
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "words", force: :cascade do |t|
|
||||
t.string "word"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
add_foreign_key "definitions", "words"
|
||||
end
|
||||
|
@ -1,14 +1,16 @@
|
||||
namespace :dataset do
|
||||
desc "TODO"
|
||||
task ingest: :environment do
|
||||
ingest_data
|
||||
ingest_pos
|
||||
ingest_dictionary
|
||||
puts "Ingest complete."
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def ingest_data
|
||||
def ingest_pos
|
||||
if PartOfSpeech.count > 0
|
||||
puts "Data already exists in table! Aborting."
|
||||
puts "Parts of speech data already exists in table! Aborting."
|
||||
return
|
||||
end
|
||||
|
||||
@ -17,5 +19,26 @@ def ingest_data
|
||||
parts_of_speech.each do |pos|
|
||||
PartOfSpeech.create(pos: pos['pos'], definition: pos['definition'])
|
||||
end
|
||||
puts "Ingest complete."
|
||||
puts "Parts of speech ingest complete."
|
||||
end
|
||||
|
||||
def ingest_dictionary
|
||||
if Word.count > 0
|
||||
puts "Dictionary data already exists in table! Aborting."
|
||||
return
|
||||
end
|
||||
|
||||
dictionary = JSON.parse(File.read('db/dataset_en/toki-dictionary.json'))
|
||||
|
||||
dictionary.each do |entry|
|
||||
if entry['word'] == "a"
|
||||
puts entry
|
||||
end
|
||||
word = Word.create(word: entry['word'])
|
||||
|
||||
entry['definitions'].each do |definition|
|
||||
word.definitions.create(pos: definition['pos'], definition: definition['definition'])
|
||||
end
|
||||
end
|
||||
puts "Dictionary ingest complete."
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user