From 6f46b1be7c85aac4416962deab431b9d85da51ad Mon Sep 17 00:00:00 2001 From: maddiebaka Date: Thu, 12 Oct 2023 20:02:10 -0400 Subject: [PATCH] Add parts of speech model and database ingest rake task --- .../20231012235050_create_part_of_speeches.rb | 10 +++++++++ db/schema.rb | 21 +++++++++++++++++++ lib/tasks/database.rake | 21 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 db/migrate/20231012235050_create_part_of_speeches.rb create mode 100644 db/schema.rb create mode 100644 lib/tasks/database.rake diff --git a/db/migrate/20231012235050_create_part_of_speeches.rb b/db/migrate/20231012235050_create_part_of_speeches.rb new file mode 100644 index 0000000..2001787 --- /dev/null +++ b/db/migrate/20231012235050_create_part_of_speeches.rb @@ -0,0 +1,10 @@ +class CreatePartOfSpeeches < ActiveRecord::Migration[7.1] + def change + create_table :part_of_speeches do |t| + t.string :pos + t.string :definition + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000..c56b2b4 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,21 @@ +# 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_12_235050) do + create_table "part_of_speeches", force: :cascade do |t| + t.string "pos" + t.string "definition" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/lib/tasks/database.rake b/lib/tasks/database.rake new file mode 100644 index 0000000..0ee2072 --- /dev/null +++ b/lib/tasks/database.rake @@ -0,0 +1,21 @@ +namespace :database do + desc "TODO" + task ingest: :environment do + ingest_data + end + +end + +def ingest_data + if PartOfSpeech.count > 0 + puts "Data already exists in table! Aborting." + return + end + + parts_of_speech = JSON.parse(File.read('db/dataset_en/toki-partsofspeech.json')) + + parts_of_speech.each do |pos| + PartOfSpeech.create(pos: pos['pos'], definition: pos['definition']) + end + puts "Ingest complete." +end