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
|
class DictionaryController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@parts_of_speech = PartOfSpeech.all
|
@parts_of_speech = PartOfSpeech.all
|
||||||
|
@words = Word.all
|
||||||
end
|
end
|
||||||
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>
|
</tr>
|
||||||
<% @parts_of_speech.each do |item| %>
|
<% @parts_of_speech.each do |item| %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= item.pos %></td>
|
<td><b><%= item.pos %></b></td>
|
||||||
<td><%= item.definition %></td>
|
<td><%= item.definition %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</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.
|
# 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|
|
create_table "part_of_speeches", force: :cascade do |t|
|
||||||
t.string "pos"
|
t.string "pos"
|
||||||
t.string "definition"
|
t.string "definition"
|
||||||
@ -18,4 +27,11 @@ ActiveRecord::Schema[7.1].define(version: 2023_10_12_235050) do
|
|||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
end
|
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
|
end
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
namespace :dataset do
|
namespace :dataset do
|
||||||
desc "TODO"
|
desc "TODO"
|
||||||
task ingest: :environment do
|
task ingest: :environment do
|
||||||
ingest_data
|
ingest_pos
|
||||||
|
ingest_dictionary
|
||||||
|
puts "Ingest complete."
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def ingest_data
|
def ingest_pos
|
||||||
if PartOfSpeech.count > 0
|
if PartOfSpeech.count > 0
|
||||||
puts "Data already exists in table! Aborting."
|
puts "Parts of speech data already exists in table! Aborting."
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -17,5 +19,26 @@ def ingest_data
|
|||||||
parts_of_speech.each do |pos|
|
parts_of_speech.each do |pos|
|
||||||
PartOfSpeech.create(pos: pos['pos'], definition: pos['definition'])
|
PartOfSpeech.create(pos: pos['pos'], definition: pos['definition'])
|
||||||
end
|
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
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user