diff --git a/app/models/entry.rb b/app/models/entry.rb index ad8449b..2ff993d 100644 --- a/app/models/entry.rb +++ b/app/models/entry.rb @@ -4,7 +4,6 @@ class Entry < ApplicationRecord has_many :suggested_meanings, dependent: :destroy has_many :comments, as: :commentable, dependent: :destroy - has_many :entry_versions, dependent: :destroy enum :category, %i[word phrase proper_name title reference other] diff --git a/app/models/entry_version.rb b/app/models/entry_version.rb deleted file mode 100644 index 5cfce40..0000000 --- a/app/models/entry_version.rb +++ /dev/null @@ -1,6 +0,0 @@ -class EntryVersion < ApplicationRecord - belongs_to :entry - belongs_to :user - - validates :changes_made, presence: true -end diff --git a/app/models/user.rb b/app/models/user.rb index 18e18b6..16ace9b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -14,7 +14,6 @@ class User < ApplicationRecord class_name: "SuggestedMeaning", foreign_key: :reviewed_by_id, dependent: :nullify - has_many :entry_versions, dependent: :nullify has_many :comments, dependent: :nullify enum :role, %i[contributor reviewer admin] diff --git a/config/routes.rb b/config/routes.rb index 88f4fba..5915f1b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -40,7 +40,6 @@ Rails.application.routes.draw do end resources :suggested_meanings resources :comments, only: [:create, :update, :destroy] - resources :entry_versions, only: [:index, :show] resources :supported_languages, only: [:index, :show] resources :users end diff --git a/db/migrate/20260123125325_drop_entry_versions.rb b/db/migrate/20260123125325_drop_entry_versions.rb new file mode 100644 index 0000000..7b25825 --- /dev/null +++ b/db/migrate/20260123125325_drop_entry_versions.rb @@ -0,0 +1,14 @@ +class DropEntryVersions < ActiveRecord::Migration[8.1] + def change + drop_table :entry_versions do |t| + t.text :changes_made + t.string :change_type + t.datetime :created_at, null: false + t.integer :entry_id, null: false + t.datetime :updated_at, null: false + t.integer :user_id + t.index [ :entry_id ], name: "index_entry_versions_on_entry_id" + t.index [ :user_id ], name: "index_entry_versions_on_user_id" + end + end +end diff --git a/db/structure.sql b/db/structure.sql index ab820a9..12e774c 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -16,15 +16,6 @@ FOREIGN KEY ("user_id") ); CREATE INDEX "index_comments_on_user_id" ON "comments" ("user_id") /*application='SanastoWiki'*/; CREATE INDEX "index_comments_on_commentable" ON "comments" ("commentable_type", "commentable_id") /*application='SanastoWiki'*/; -CREATE TABLE IF NOT EXISTS "entry_versions" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "entry_id" integer NOT NULL, "user_id" integer NOT NULL, "changes_made" json NOT NULL, "change_type" varchar, "created_at" datetime(6) NOT NULL, CONSTRAINT "fk_rails_be24c8cfa1" -FOREIGN KEY ("entry_id") - REFERENCES "entries" ("id") -, CONSTRAINT "fk_rails_aaeb10db8b" -FOREIGN KEY ("user_id") - REFERENCES "users" ("id") -); -CREATE INDEX "index_entry_versions_on_entry_id" ON "entry_versions" ("entry_id") /*application='SanastoWiki'*/; -CREATE INDEX "index_entry_versions_on_user_id" ON "entry_versions" ("user_id") /*application='SanastoWiki'*/; CREATE TABLE IF NOT EXISTS "supported_languages" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "code" varchar NOT NULL, "name" varchar NOT NULL, "native_name" varchar NOT NULL, "sort_order" integer DEFAULT 0 NOT NULL, "active" boolean DEFAULT TRUE NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL); CREATE UNIQUE INDEX "index_supported_languages_on_code" ON "supported_languages" ("code") /*application='SanastoWiki'*/; CREATE TABLE IF NOT EXISTS "users" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar NOT NULL, "password_digest" varchar NOT NULL, "name" varchar, "role" integer DEFAULT 0 NOT NULL, "primary_language" varchar, "invitation_token" varchar, "invitation_sent_at" datetime(6), "invitation_accepted_at" datetime(6), "invited_by_id" integer, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, CONSTRAINT "fk_rails_ae14a5013f" @@ -90,6 +81,7 @@ BEGIN END; CREATE TABLE IF NOT EXISTS "setup_states" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "installed" boolean DEFAULT FALSE NOT NULL, "installed_at" datetime(6), "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL); INSERT INTO "schema_migrations" (version) VALUES +('20260123125325'), ('20260122131000'), ('20260122130000'), ('20260122124151'), diff --git a/docs/TODO.md b/docs/TODO.md index b1989b1..b4ae146 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -50,12 +50,6 @@ - [ ] **Comment threading** (optional: replies to comments) - [ ] **Comment notifications** for entry contributors -### History & Audit -- [ ] **Entry version tracking** (record all changes in `entry_versions`) -- [ ] **View edit history** on entry page -- [ ] **Diff view** showing what changed -- [ ] **Revert to previous version** (admin/reviewer only) - ## User Management - [x] **Setup** adds the first user diff --git a/test/fixtures/entry_versions.yml b/test/fixtures/entry_versions.yml deleted file mode 100644 index 990451b..0000000 --- a/test/fixtures/entry_versions.yml +++ /dev/null @@ -1,13 +0,0 @@ -# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html - -one: - entry: one - user: admin_user - changes_made: "{}" - change_type: MyString - -two: - entry: two - user: contributor_user - changes_made: "{}" - change_type: MyString diff --git a/test/models/entry_version_test.rb b/test/models/entry_version_test.rb deleted file mode 100644 index 00a40bb..0000000 --- a/test/models/entry_version_test.rb +++ /dev/null @@ -1,36 +0,0 @@ -require "test_helper" - -class EntryVersionTest < ActiveSupport::TestCase - test "should be valid with all attributes" do - version = EntryVersion.new( - entry: entries(:one), - user: users(:admin_user), - changes_made: { "fi" => "uusi sana" } - ) - assert version.valid? - end - - test "should be invalid without changes_made" do - version = EntryVersion.new( - entry: entries(:one), - user: users(:admin_user) - ) - assert_not version.valid? - end - - test "should be invalid without an entry" do - version = EntryVersion.new( - user: users(:admin_user), - changes_made: { "fi" => "uusi sana" } - ) - assert_not version.valid? - end - - test "should be invalid without a user" do - version = EntryVersion.new( - entry: entries(:one), - changes_made: { "fi" => "uusi sana" } - ) - assert_not version.valid? - end -end