From c930908d15a4e54ff9c41b5017a5e565a03bec9a Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Fri, 10 Mar 2023 09:23:46 +0100 Subject: [PATCH] Models #889 #890 --- app/models/communication/extranet/document.rb | 6 ++++ .../extranet/document/category.rb | 25 +++++++++++++++ .../communication/extranet/document/kind.rb | 25 +++++++++++++++ ...e_communication_extranet_document_kinds.rb | 13 ++++++++ ...munication_extranet_document_categories.rb | 13 ++++++++ db/schema.rb | 32 ++++++++++++++++++- .../extranet/document/categories.yml | 32 +++++++++++++++++++ .../communication/extranet/document/kinds.yml | 32 +++++++++++++++++++ .../communication/extranet/documents.yml | 6 ++++ .../extranet/post/categories.yml | 1 - .../extranet/document/category_test.rb | 28 ++++++++++++++++ .../extranet/document/kind_test.rb | 28 ++++++++++++++++ 12 files changed, 239 insertions(+), 2 deletions(-) create mode 100644 app/models/communication/extranet/document/category.rb create mode 100644 app/models/communication/extranet/document/kind.rb create mode 100644 db/migrate/20230310081519_create_communication_extranet_document_kinds.rb create mode 100644 db/migrate/20230310081530_create_communication_extranet_document_categories.rb create mode 100644 test/fixtures/communication/extranet/document/categories.yml create mode 100644 test/fixtures/communication/extranet/document/kinds.yml create mode 100644 test/models/communication/extranet/document/category_test.rb create mode 100644 test/models/communication/extranet/document/kind_test.rb diff --git a/app/models/communication/extranet/document.rb b/app/models/communication/extranet/document.rb index 081f39cbb..30a353f9f 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 000000000..d153fb401 --- /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 000000000..d13f6fcbf --- /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 000000000..2471fc11f --- /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 000000000..83446e18c --- /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 b33eb378e..139e94000 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 000000000..5d73fea14 --- /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 000000000..bae066a93 --- /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 be1d0d6ab..fb4fa2373 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 57dfca8c4..b2e20214f 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 000000000..ef2a32707 --- /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 000000000..7c37fe74c --- /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 -- GitLab