diff --git a/app/models/communication/extranet/document.rb b/app/models/communication/extranet/document.rb index 081f39cbb290caf496bc1cac72d3051b878208c4..30a353f9f0e1bc72338072f57042b31978c816b4 100644 --- a/app/models/communication/extranet/document.rb +++ b/app/models/communication/extranet/document.rb @@ -8,18 +8,24 @@ # published_at :datetime # created_at :datetime not null # updated_at :datetime not null +# category_id :uuid indexed # extranet_id :uuid not null, indexed +# kind_id :uuid indexed # university_id :uuid not null, indexed # # Indexes # +# extranet_document_categories (category_id) # index_communication_extranet_documents_on_extranet_id (extranet_id) # index_communication_extranet_documents_on_university_id (university_id) +# index_extranet_document_kinds (kind_id) # # Foreign Keys # # fk_rails_1272fd263c (extranet_id => communication_extranets.id) +# fk_rails_51f7db2f66 (kind_id => communication_extranet_document_kinds.id) # fk_rails_af877a8c0c (university_id => universities.id) +# fk_rails_eb351dc444 (category_id => communication_extranet_document_categories.id) # class Communication::Extranet::Document < ApplicationRecord include Sanitizable diff --git a/app/models/communication/extranet/document/category.rb b/app/models/communication/extranet/document/category.rb new file mode 100644 index 0000000000000000000000000000000000000000..d153fb4012e04d3289fcfa2ab583393184bbd5b1 --- /dev/null +++ b/app/models/communication/extranet/document/category.rb @@ -0,0 +1,25 @@ +# == Schema Information +# +# Table name: communication_extranet_document_categories +# +# id :uuid not null, primary key +# name :string +# created_at :datetime not null +# updated_at :datetime not null +# extranet_id :uuid not null, indexed +# university_id :uuid not null, indexed +# +# Indexes +# +# extranet_document_categories_universities (university_id) +# index_communication_extranet_document_categories_on_extranet_id (extranet_id) +# +# Foreign Keys +# +# fk_rails_6f2232d9f8 (university_id => universities.id) +# fk_rails_76e327b90f (extranet_id => communication_extranets.id) +# +class Communication::Extranet::Document::Category < ApplicationRecord + belongs_to :extranet + belongs_to :university +end diff --git a/app/models/communication/extranet/document/kind.rb b/app/models/communication/extranet/document/kind.rb new file mode 100644 index 0000000000000000000000000000000000000000..d13f6fcbfd91fc07ac924904a8f374ff9369af94 --- /dev/null +++ b/app/models/communication/extranet/document/kind.rb @@ -0,0 +1,25 @@ +# == Schema Information +# +# Table name: communication_extranet_document_kinds +# +# id :uuid not null, primary key +# name :string +# created_at :datetime not null +# updated_at :datetime not null +# extranet_id :uuid not null, indexed +# university_id :uuid not null, indexed +# +# Indexes +# +# extranet_document_kinds_universities (university_id) +# index_communication_extranet_document_kinds_on_extranet_id (extranet_id) +# +# Foreign Keys +# +# fk_rails_27a9b91ed8 (extranet_id => communication_extranets.id) +# fk_rails_2a55cf899a (university_id => universities.id) +# +class Communication::Extranet::Document::Kind < ApplicationRecord + belongs_to :extranet + belongs_to :university +end diff --git a/db/migrate/20230310081519_create_communication_extranet_document_kinds.rb b/db/migrate/20230310081519_create_communication_extranet_document_kinds.rb new file mode 100644 index 0000000000000000000000000000000000000000..2471fc11fc72188fc3adf11e476589a8ea838643 --- /dev/null +++ b/db/migrate/20230310081519_create_communication_extranet_document_kinds.rb @@ -0,0 +1,13 @@ +class CreateCommunicationExtranetDocumentKinds < ActiveRecord::Migration[7.0] + def change + create_table :communication_extranet_document_kinds, id: :uuid do |t| + t.references :extranet, null: false, foreign_key: {to_table: :communication_extranets}, type: :uuid + t.references :university, null: false, foreign_key: true, type: :uuid, index: { name: 'extranet_document_kinds_universities' } + t.string :name + + t.timestamps + end + + add_reference :communication_extranet_documents, :kind, foreign_key: {to_table: :communication_extranet_document_kinds}, type: :uuid, index: { name: 'index_extranet_document_kinds' } + end +end diff --git a/db/migrate/20230310081530_create_communication_extranet_document_categories.rb b/db/migrate/20230310081530_create_communication_extranet_document_categories.rb new file mode 100644 index 0000000000000000000000000000000000000000..83446e18c5c6283348d80fd9246f3344fca364db --- /dev/null +++ b/db/migrate/20230310081530_create_communication_extranet_document_categories.rb @@ -0,0 +1,13 @@ +class CreateCommunicationExtranetDocumentCategories < ActiveRecord::Migration[7.0] + def change + create_table :communication_extranet_document_categories, id: :uuid do |t| + t.references :extranet, null: false, foreign_key: {to_table: :communication_extranets}, type: :uuid + t.references :university, null: false, foreign_key: true, type: :uuid, index: { name: 'extranet_document_categories_universities' } + t.string :name + + t.timestamps + end + + add_reference :communication_extranet_documents, :category, foreign_key: {to_table: :communication_extranet_document_categories}, type: :uuid, index: { name: 'extranet_document_categories' } + end +end diff --git a/db/schema.rb b/db/schema.rb index b33eb378e2f9292532f2d0c40f29124ed0acf236..139e940000b7367c7c1aebf156baea743f74cc9e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_03_09_131421) do +ActiveRecord::Schema[7.0].define(version: 2023_03_10_081530) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" enable_extension "plpgsql" @@ -105,6 +105,26 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_09_131421) do t.index ["university_id"], name: "index_communication_extranet_connections_on_university_id" end + create_table "communication_extranet_document_categories", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "extranet_id", null: false + t.uuid "university_id", null: false + t.string "name" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["extranet_id"], name: "index_communication_extranet_document_categories_on_extranet_id" + t.index ["university_id"], name: "extranet_document_categories_universities" + end + + create_table "communication_extranet_document_kinds", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "extranet_id", null: false + t.uuid "university_id", null: false + t.string "name" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["extranet_id"], name: "index_communication_extranet_document_kinds_on_extranet_id" + t.index ["university_id"], name: "extranet_document_kinds_universities" + end + create_table "communication_extranet_documents", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "name" t.uuid "university_id", null: false @@ -113,7 +133,11 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_09_131421) do t.datetime "published_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.uuid "kind_id" + t.uuid "category_id" + t.index ["category_id"], name: "extranet_document_categories" t.index ["extranet_id"], name: "index_communication_extranet_documents_on_extranet_id" + t.index ["kind_id"], name: "index_extranet_document_kinds" t.index ["university_id"], name: "index_communication_extranet_documents_on_university_id" end @@ -1011,6 +1035,12 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_09_131421) do add_foreign_key "communication_blocks", "universities" add_foreign_key "communication_extranet_connections", "communication_extranets", column: "extranet_id" add_foreign_key "communication_extranet_connections", "universities" + add_foreign_key "communication_extranet_document_categories", "communication_extranets", column: "extranet_id" + add_foreign_key "communication_extranet_document_categories", "universities" + add_foreign_key "communication_extranet_document_kinds", "communication_extranets", column: "extranet_id" + add_foreign_key "communication_extranet_document_kinds", "universities" + add_foreign_key "communication_extranet_documents", "communication_extranet_document_categories", column: "category_id" + add_foreign_key "communication_extranet_documents", "communication_extranet_document_kinds", column: "kind_id" add_foreign_key "communication_extranet_documents", "communication_extranets", column: "extranet_id" add_foreign_key "communication_extranet_documents", "universities" add_foreign_key "communication_extranet_post_categories", "communication_extranets", column: "extranet_id" diff --git a/test/fixtures/communication/extranet/document/categories.yml b/test/fixtures/communication/extranet/document/categories.yml new file mode 100644 index 0000000000000000000000000000000000000000..5d73fea1434e3c756c7a79a47f8c49586568f3b8 --- /dev/null +++ b/test/fixtures/communication/extranet/document/categories.yml @@ -0,0 +1,32 @@ +# == Schema Information +# +# Table name: communication_extranet_document_categories +# +# id :uuid not null, primary key +# name :string +# created_at :datetime not null +# updated_at :datetime not null +# extranet_id :uuid not null, indexed +# university_id :uuid not null, indexed +# +# Indexes +# +# extranet_document_categories_universities (university_id) +# index_communication_extranet_document_categories_on_extranet_id (extranet_id) +# +# Foreign Keys +# +# fk_rails_6f2232d9f8 (university_id => universities.id) +# fk_rails_76e327b90f (extranet_id => communication_extranets.id) +# +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + extranet: one + university: one + name: MyString + +two: + extranet: two + university: two + name: MyString diff --git a/test/fixtures/communication/extranet/document/kinds.yml b/test/fixtures/communication/extranet/document/kinds.yml new file mode 100644 index 0000000000000000000000000000000000000000..bae066a93b07f05cc2c4ddf888e28bbe0ac47812 --- /dev/null +++ b/test/fixtures/communication/extranet/document/kinds.yml @@ -0,0 +1,32 @@ +# == Schema Information +# +# Table name: communication_extranet_document_kinds +# +# id :uuid not null, primary key +# name :string +# created_at :datetime not null +# updated_at :datetime not null +# extranet_id :uuid not null, indexed +# university_id :uuid not null, indexed +# +# Indexes +# +# extranet_document_kinds_universities (university_id) +# index_communication_extranet_document_kinds_on_extranet_id (extranet_id) +# +# Foreign Keys +# +# fk_rails_27a9b91ed8 (extranet_id => communication_extranets.id) +# fk_rails_2a55cf899a (university_id => universities.id) +# +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + extranet: one + university: one + name: MyString + +two: + extranet: two + university: two + name: MyString diff --git a/test/fixtures/communication/extranet/documents.yml b/test/fixtures/communication/extranet/documents.yml index be1d0d6ab57326b590356596a4609a335ddd6e69..fb4fa23733ee89bef580ed42a2418d63d9d1b4cd 100644 --- a/test/fixtures/communication/extranet/documents.yml +++ b/test/fixtures/communication/extranet/documents.yml @@ -8,18 +8,24 @@ # published_at :datetime # created_at :datetime not null # updated_at :datetime not null +# category_id :uuid indexed # extranet_id :uuid not null, indexed +# kind_id :uuid indexed # university_id :uuid not null, indexed # # Indexes # +# extranet_document_categories (category_id) # index_communication_extranet_documents_on_extranet_id (extranet_id) # index_communication_extranet_documents_on_university_id (university_id) +# index_extranet_document_kinds (kind_id) # # Foreign Keys # # fk_rails_1272fd263c (extranet_id => communication_extranets.id) +# fk_rails_51f7db2f66 (kind_id => communication_extranet_document_kinds.id) # fk_rails_af877a8c0c (university_id => universities.id) +# fk_rails_eb351dc444 (category_id => communication_extranet_document_categories.id) # one: diff --git a/test/fixtures/communication/extranet/post/categories.yml b/test/fixtures/communication/extranet/post/categories.yml index 57dfca8c4e88ad04a255f565215fc80d38df9686..b2e20214f6f93f7c730f185ab1748b72468bc882 100644 --- a/test/fixtures/communication/extranet/post/categories.yml +++ b/test/fixtures/communication/extranet/post/categories.yml @@ -20,7 +20,6 @@ # fk_rails_aad7b8db63 (university_id => universities.id) # fk_rails_e53c2a25fc (extranet_id => communication_extranets.id) # -# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: name: MyString diff --git a/test/models/communication/extranet/document/category_test.rb b/test/models/communication/extranet/document/category_test.rb new file mode 100644 index 0000000000000000000000000000000000000000..ef2a3270727a9033b4e31f66716bd61f45644a77 --- /dev/null +++ b/test/models/communication/extranet/document/category_test.rb @@ -0,0 +1,28 @@ +# == Schema Information +# +# Table name: communication_extranet_document_categories +# +# id :uuid not null, primary key +# name :string +# created_at :datetime not null +# updated_at :datetime not null +# extranet_id :uuid not null, indexed +# university_id :uuid not null, indexed +# +# Indexes +# +# extranet_document_categories_universities (university_id) +# index_communication_extranet_document_categories_on_extranet_id (extranet_id) +# +# Foreign Keys +# +# fk_rails_6f2232d9f8 (university_id => universities.id) +# fk_rails_76e327b90f (extranet_id => communication_extranets.id) +# +require "test_helper" + +class Communication::Extranet::Document::CategoryTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/communication/extranet/document/kind_test.rb b/test/models/communication/extranet/document/kind_test.rb new file mode 100644 index 0000000000000000000000000000000000000000..7c37fe74c3ece2cb3724e6a0fe1e82dd6a6c94b8 --- /dev/null +++ b/test/models/communication/extranet/document/kind_test.rb @@ -0,0 +1,28 @@ +# == Schema Information +# +# Table name: communication_extranet_document_kinds +# +# id :uuid not null, primary key +# name :string +# created_at :datetime not null +# updated_at :datetime not null +# extranet_id :uuid not null, indexed +# university_id :uuid not null, indexed +# +# Indexes +# +# extranet_document_kinds_universities (university_id) +# index_communication_extranet_document_kinds_on_extranet_id (extranet_id) +# +# Foreign Keys +# +# fk_rails_27a9b91ed8 (extranet_id => communication_extranets.id) +# fk_rails_2a55cf899a (university_id => universities.id) +# +require "test_helper" + +class Communication::Extranet::Document::KindTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end