From cbe410a438e1a56b720347dfd3796f2f6da5eb8d Mon Sep 17 00:00:00 2001 From: James Smith Date: Wed, 4 Sep 2024 16:29:58 +0100 Subject: [PATCH] add public_id fields to relevant models and generate IDs --- ...240904152358_generate_public_i_ds_for_models.rb | 14 ++++++++++++++ db/data_schema.rb | 2 +- .../20240904151944_add_public_i_ds_to_models.rb | 8 ++++++++ db/schema.rb | 14 +++++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 db/data/20240904152358_generate_public_i_ds_for_models.rb create mode 100644 db/migrate/20240904151944_add_public_i_ds_to_models.rb diff --git a/db/data/20240904152358_generate_public_i_ds_for_models.rb b/db/data/20240904152358_generate_public_i_ds_for_models.rb new file mode 100644 index 000000000..22805e70a --- /dev/null +++ b/db/data/20240904152358_generate_public_i_ds_for_models.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class GeneratePublicIDsForModels < ActiveRecord::Migration[7.1] + def up + [Model, ModelFile, Problem, Creator, Collection, Library].each do |model| + model.find_each do |obj| + obj.update_attribute(:public_id, model.generate_cool_id) # rubocop:disable Rails/SkipsModelValidations + end + end + end + + def down + end +end diff --git a/db/data_schema.rb b/db/data_schema.rb index 920c552fa..6cf8a0287 100644 --- a/db/data_schema.rb +++ b/db/data_schema.rb @@ -1 +1 @@ -DataMigrate::Data.define(version: 20240830151650) +DataMigrate::Data.define(version: 20240904152358) diff --git a/db/migrate/20240904151944_add_public_i_ds_to_models.rb b/db/migrate/20240904151944_add_public_i_ds_to_models.rb new file mode 100644 index 000000000..bb23ad180 --- /dev/null +++ b/db/migrate/20240904151944_add_public_i_ds_to_models.rb @@ -0,0 +1,8 @@ +class AddPublicIDsToModels < ActiveRecord::Migration[7.1] + def change + [:models, :model_files, :problems, :creators, :collections, :libraries].each do |table| + add_column table, :public_id, :string + add_index table, :public_id + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 464430246..2688b20ed 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.1].define(version: 2024_08_27_155630) do +ActiveRecord::Schema[7.1].define(version: 2024_09_04_151944) do create_table "caber_relations", force: :cascade do |t| t.string "subject_type" t.integer "subject_id" @@ -32,8 +32,10 @@ ActiveRecord::Schema[7.1].define(version: 2024_08_27_155630) do t.datetime "updated_at", null: false t.integer "collection_id" t.string "slug" + t.string "public_id" t.index ["collection_id"], name: "index_collections_on_collection_id" t.index ["name"], name: "index_collections_on_name", unique: true + t.index ["public_id"], name: "index_collections_on_public_id" t.index ["slug"], name: "index_collections_on_slug", unique: true end @@ -44,7 +46,9 @@ ActiveRecord::Schema[7.1].define(version: 2024_08_27_155630) do t.text "notes" t.text "caption" t.string "slug" + t.string "public_id" t.index ["name"], name: "index_creators_on_name", unique: true + t.index ["public_id"], name: "index_creators_on_public_id" t.index ["slug"], name: "index_creators_on_slug", unique: true end @@ -141,6 +145,8 @@ ActiveRecord::Schema[7.1].define(version: 2024_08_27_155630) do t.string "s3_bucket" t.string "s3_access_key_id" t.string "s3_secret_access_key" + t.string "public_id" + t.index ["public_id"], name: "index_libraries_on_public_id" end create_table "links", force: :cascade do |t| @@ -165,10 +171,12 @@ ActiveRecord::Schema[7.1].define(version: 2024_08_27_155630) do t.bigint "size" t.integer "presupported_version_id" t.json "attachment_data" + t.string "public_id" t.index ["digest"], name: "index_model_files_on_digest" t.index ["filename", "model_id"], name: "index_model_files_on_filename_and_model_id", unique: true t.index ["model_id"], name: "index_model_files_on_model_id" t.index ["presupported_version_id"], name: "index_model_files_on_presupported_version_id" + t.index ["public_id"], name: "index_model_files_on_public_id" end create_table "models", force: :cascade do |t| @@ -184,11 +192,13 @@ ActiveRecord::Schema[7.1].define(version: 2024_08_27_155630) do t.integer "collection_id" t.string "slug" t.string "license" + t.string "public_id" t.index ["collection_id"], name: "index_models_on_collection_id" t.index ["creator_id"], name: "index_models_on_creator_id" t.index ["library_id"], name: "index_models_on_library_id" t.index ["path", "library_id"], name: "index_models_on_path_and_library_id", unique: true t.index ["preview_file_id"], name: "index_models_on_preview_file_id" + t.index ["public_id"], name: "index_models_on_public_id" t.index ["slug"], name: "index_models_on_slug" end @@ -200,8 +210,10 @@ ActiveRecord::Schema[7.1].define(version: 2024_08_27_155630) do t.datetime "updated_at", null: false t.string "note" t.boolean "ignored", default: false, null: false + t.string "public_id" t.index ["category", "problematic_id", "problematic_type"], name: "index_problems_on_category_and_problematic_id_and_type", unique: true t.index ["problematic_type", "problematic_id"], name: "index_problems_on_problematic" + t.index ["public_id"], name: "index_problems_on_public_id" end create_table "roles", force: :cascade do |t|