Add Npm VRegs models for registries and upstreams
What does this MR do and why?
The MR adds three models for npm virtual registry feature:
VirtualRegistries::Packages::Npm::RegistryVirtualRegistries::Packages::Npm::UpstreamVirtualRegistries::Packages::Npm::RegistryUpstream
erDiagram
namespaces ||--o{ virtual_registries_packages_npm_registries : "has many"
namespaces ||--o{ virtual_registries_packages_npm_upstreams : "has many"
namespaces ||--o{ virtual_registries_packages_npm_registry_upstreams : "has many"
virtual_registries_packages_npm_registries ||--o{ virtual_registries_packages_npm_registry_upstreams : "has many"
virtual_registries_packages_npm_upstreams ||--o{ virtual_registries_packages_npm_registry_upstreams : "has many"
virtual_registries_packages_npm_registries {
bigint id PK
bigint group_id FK
timestamp created_at
timestamp updated_at
text name "max 255"
text description "max 1024"
}
virtual_registries_packages_npm_upstreams {
bigint id PK
bigint group_id FK
timestamp created_at
timestamp updated_at
smallint cache_validity_hours "default 24, >= 0"
jsonb username "encrypted"
jsonb password "encrypted"
text url "max 255"
text name "max 255"
text description "max 1024"
}
virtual_registries_packages_npm_registry_upstreams {
bigint id PK
bigint group_id FK
bigint registry_id FK
bigint upstream_id FK
timestamp created_at
timestamp updated_at
smallint position "default 1, range 1-5"
}
namespaces {
bigint id PK
}
References
Create models for Registries and Upstreams (#581343)
Screenshots or screen recordings
No.
Database migrations output
Migrations up
gitlab 581343:1d728451 % rails db:migrate:main
DEPRECATION WARNING: `config.active_record.warn_on_records_fetched_greater_than` is deprecated and will be removed in Rails 8.0. Please subscribe to `sql.active_record` notifications and access the row count field to detect large result set sizes. (called from <main> at /Users/dima/work/gdk/gitlab/config/environment.rb:7)
main: == [advisory_lock_connection] object_id: 130720, pg_backend_pid: 74562
main: == 20251124125156 CreateVirtualRegistriesPackagesNpmRegistries: migrating =====
main: -- create_table(:virtual_registries_packages_npm_registries, {:if_not_exists=>true})
main: -- quote_column_name(:name)
main: -> 0.0000s
main: -- quote_column_name(:description)
main: -> 0.0000s
main: -> 0.0318s
main: == 20251124125156 CreateVirtualRegistriesPackagesNpmRegistries: migrated (0.0500s)
main: == 20251124125159 CreateVirtualRegistriesPackagesNpmUpstreams: migrating ======
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- create_table(:virtual_registries_packages_npm_upstreams, {:if_not_exists=>true})
main: -- quote_column_name(:url)
main: -> 0.0000s
main: -- quote_column_name(:name)
main: -> 0.0000s
main: -- quote_column_name(:description)
main: -> 0.0000s
main: -> 0.0081s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE virtual_registries_packages_npm_upstreams\nADD CONSTRAINT check_b1a7ef9b09\nCHECK ( cache_validity_hours >= 0 )\nNOT VALID;\n")
main: -> 0.0004s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- execute("ALTER TABLE virtual_registries_packages_npm_upstreams VALIDATE CONSTRAINT check_b1a7ef9b09;")
main: -> 0.0004s
main: -- execute("RESET statement_timeout")
main: -> 0.0002s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE virtual_registries_packages_npm_upstreams\nADD CONSTRAINT check_c3551a86fc\nCHECK ( metadata_cache_validity_hours > 0 )\nNOT VALID;\n")
main: -> 0.0003s
main: -- execute("ALTER TABLE virtual_registries_packages_npm_upstreams VALIDATE CONSTRAINT check_c3551a86fc;")
main: -> 0.0003s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE virtual_registries_packages_npm_upstreams\nADD CONSTRAINT check_33b72b4447\nCHECK ( num_nonnulls(username, password) = 2 OR num_nulls(username, password) = 2 )\nNOT VALID;\n")
main: -> 0.0008s
main: -- execute("ALTER TABLE virtual_registries_packages_npm_upstreams VALIDATE CONSTRAINT check_33b72b4447;")
main: -> 0.0004s
main: == 20251124125159 CreateVirtualRegistriesPackagesNpmUpstreams: migrated (0.1135s)
main: == 20251124125163 CreateVirtualRegistriesPackagesNpmRegistryUpstreams: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- create_table(:virtual_registries_packages_npm_registry_upstreams, {:if_not_exists=>true})
main: -> 0.0119s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE virtual_registries_packages_npm_registry_upstreams\nADD CONSTRAINT check_9b0da96732\nCHECK ( 1 <= position AND position <= 20 )\nNOT VALID;\n")
main: -> 0.0005s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0002s
main: -- execute("ALTER TABLE virtual_registries_packages_npm_registry_upstreams VALIDATE CONSTRAINT check_9b0da96732;")
main: -> 0.0004s
main: -- execute("RESET statement_timeout")
main: -> 0.0002s
main: == 20251124125163 CreateVirtualRegistriesPackagesNpmRegistryUpstreams: migrated (0.0892s)
main: == 20251124125165 AddConstraintsToVirtualRegistriesPackagesNpmRegistryUpstreamsPosition: migrating
main: -- execute(" ALTER TABLE virtual_registries_packages_npm_registry_upstreams\n ADD CONSTRAINT constraint_vreg_pkgs_npm_reg_upst_on_unique_reg_pos\n UNIQUE (registry_id, position) DEFERRABLE INITIALLY DEFERRED;\n")
main: -> 0.0010s
main: == 20251124125165 AddConstraintsToVirtualRegistriesPackagesNpmRegistryUpstreamsPosition: migrated (0.0040s)
main: == [advisory_lock_connection] object_id: 130720, pg_backend_pid: 74562
Migrations down
gitlab 581343:1d728451 % rails db:migrate:down:main VERSION=20251124125165
DEPRECATION WARNING: `config.active_record.warn_on_records_fetched_greater_than` is deprecated and will be removed in Rails 8.0. Please subscribe to `sql.active_record` notifications and access the row count field to detect large result set sizes. (called from <main> at /Users/dima/work/gdk/gitlab/config/environment.rb:7)
main: == [advisory_lock_connection] object_id: 130400, pg_backend_pid: 74185
main: == 20251124125165 AddConstraintsToVirtualRegistriesPackagesNpmRegistryUpstreamsPosition: reverting
main: -- execute(" ALTER TABLE virtual_registries_packages_npm_registry_upstreams\n DROP CONSTRAINT IF EXISTS constraint_vreg_pkgs_npm_reg_upst_on_unique_reg_pos;\n")
main: -> 0.0024s
main: == 20251124125165 AddConstraintsToVirtualRegistriesPackagesNpmRegistryUpstreamsPosition: reverted (0.0216s)
main: == [advisory_lock_connection] object_id: 130400, pg_backend_pid: 74185
gitlab 581343:1d728451 % rails db:migrate:down:main VERSION=20251124125163
DEPRECATION WARNING: `config.active_record.warn_on_records_fetched_greater_than` is deprecated and will be removed in Rails 8.0. Please subscribe to `sql.active_record` notifications and access the row count field to detect large result set sizes. (called from <main> at /Users/dima/work/gdk/gitlab/config/environment.rb:7)
main: == [advisory_lock_connection] object_id: 130400, pg_backend_pid: 74284
main: == 20251124125163 CreateVirtualRegistriesPackagesNpmRegistryUpstreams: reverting
main: -- drop_table(:virtual_registries_packages_npm_registry_upstreams, {:if_exists=>true})
main: -> 0.0047s
main: == 20251124125163 CreateVirtualRegistriesPackagesNpmRegistryUpstreams: reverted (0.0241s)
main: == [advisory_lock_connection] object_id: 130400, pg_backend_pid: 74284
gitlab 581343:1d728451 % rails db:migrate:down:main VERSION=20251124125159
DEPRECATION WARNING: `config.active_record.warn_on_records_fetched_greater_than` is deprecated and will be removed in Rails 8.0. Please subscribe to `sql.active_record` notifications and access the row count field to detect large result set sizes. (called from <main> at /Users/dima/work/gdk/gitlab/config/environment.rb:7)
main: == [advisory_lock_connection] object_id: 130400, pg_backend_pid: 74356
main: == 20251124125159 CreateVirtualRegistriesPackagesNpmUpstreams: reverting ======
main: -- drop_table(:virtual_registries_packages_npm_upstreams, {:if_exists=>true})
main: -> 0.0042s
main: == 20251124125159 CreateVirtualRegistriesPackagesNpmUpstreams: reverted (0.0237s)
main: == [advisory_lock_connection] object_id: 130400, pg_backend_pid: 74356
gitlab 581343:1d728451 % rails db:migrate:down:main VERSION=20251124125156
DEPRECATION WARNING: `config.active_record.warn_on_records_fetched_greater_than` is deprecated and will be removed in Rails 8.0. Please subscribe to `sql.active_record` notifications and access the row count field to detect large result set sizes. (called from <main> at /Users/dima/work/gdk/gitlab/config/environment.rb:7)
main: == [advisory_lock_connection] object_id: 130400, pg_backend_pid: 74429
main: == 20251124125156 CreateVirtualRegistriesPackagesNpmRegistries: reverting =====
main: -- drop_table(:virtual_registries_packages_npm_registries, {:if_exists=>true})
main: -> 0.0274s
main: == 20251124125156 CreateVirtualRegistriesPackagesNpmRegistries: reverted (0.0758s)
main: == [advisory_lock_connection] object_id: 130400, pg_backend_pid: 74429
How to set up and validate locally
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #581343
Edited by Dzmitry (Dima) Meshcharakou