Skip to content

Commit

Permalink
Added NoteTag model and note_tags table
Browse files Browse the repository at this point in the history
Added NoteTag model class, note_tags DB table, associations between Note
and NoteTag and private / foreign keys.
  • Loading branch information
nenad-vujicic committed Nov 14, 2024
1 parent ae00fa8 commit 54e517b
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 0 deletions.
2 changes: 2 additions & 0 deletions app/models/note.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ class Note < ApplicationRecord
has_many :subscriptions, :class_name => "NoteSubscription"
has_many :subscribers, :through => :subscriptions, :source => :user

has_many :note_tags

validates :id, :uniqueness => true, :presence => { :on => :update },
:numericality => { :on => :update, :only_integer => true }
validates :latitude, :longitude, :numericality => { :only_integer => true }
Expand Down
20 changes: 20 additions & 0 deletions app/models/note_tag.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# == Schema Information
#
# Table name: note_tags
#
# note_id :bigint(8) not null, primary key
# k :string default(""), not null, primary key
# v :string default(""), not null
#
# Foreign Keys
#
# note_tags_id_fkey (note_id => notes.id)
#

class NoteTag < ApplicationRecord
belongs_to :note

validates :note, :associated => true
validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
validates :k, :uniqueness => { :scope => :note_id }
end
13 changes: 13 additions & 0 deletions db/migrate/20241030122707_create_note_tags.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class CreateNoteTags < ActiveRecord::Migration[7.2]
def change
# Create a table and primary key
create_table :note_tags, :primary_key => [:note_id, :k] do |t|
t.column "note_id", :bigint, :null => false
t.column "k", :string, :default => "", :null => false
t.column "v", :string, :default => "", :null => false
end

# Add foreign key without validation
add_foreign_key :note_tags, :notes, :column => :note_id, :name => "note_tags_id_fkey", :validate => false
end
end
35 changes: 35 additions & 0 deletions db/structure.sql
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;

--
-- Name: public; Type: SCHEMA; Schema: -; Owner: -
--

-- *not* creating schema, since initdb creates it


--
-- Name: btree_gist; Type: EXTENSION; Schema: -; Owner: -
--
Expand Down Expand Up @@ -1061,6 +1068,17 @@ CREATE TABLE public.note_subscriptions (
);


--
-- Name: note_tags; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.note_tags (
note_id bigint NOT NULL,
k character varying DEFAULT ''::character varying NOT NULL,
v character varying DEFAULT ''::character varying NOT NULL
);


--
-- Name: notes; Type: TABLE; Schema: public; Owner: -
--
Expand Down Expand Up @@ -2028,6 +2046,14 @@ ALTER TABLE ONLY public.note_subscriptions
ADD CONSTRAINT note_subscriptions_pkey PRIMARY KEY (user_id, note_id);


--
-- Name: note_tags note_tags_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.note_tags
ADD CONSTRAINT note_tags_pkey PRIMARY KEY (note_id, k);


--
-- Name: notes notes_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
Expand Down Expand Up @@ -3210,6 +3236,14 @@ ALTER TABLE ONLY public.note_comments
ADD CONSTRAINT note_comments_note_id_fkey FOREIGN KEY (note_id) REFERENCES public.notes(id);


--
-- Name: note_tags note_tags_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.note_tags
ADD CONSTRAINT note_tags_id_fkey FOREIGN KEY (note_id) REFERENCES public.notes(id) NOT VALID;


--
-- Name: redactions redactions_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
Expand Down Expand Up @@ -3397,6 +3431,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('23'),
('22'),
('21'),
('20241030122707'),
('20241023004427'),
('20241022141247'),
('20240913171951'),
Expand Down
7 changes: 7 additions & 0 deletions test/models/note_tag_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require "test_helper"

class NoteTagTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

0 comments on commit 54e517b

Please sign in to comment.