Cargo Registry MVC: Package Creation Services

What does this MR do and why?

This MR is a part of the discussion here. This MR deals with the package creation services for Cargo Registry MVC.

How to Verify Locally?

project = Project.first
user = User.first

name = 'my-crate'
version = '1.2.3'
sha256 = 'a' * 64
md5 = '567'
index_content = { name: name, vers: version, deps: [], cksum: "abcde123456" }

# The file named 'bananas.txt' should exist
content = UploadedFile.new('bananas.txt', filename: 'bananas.txt')

params = { name: name, version: version, index_content: index_content, content: content, file_sha25
6: sha256, file_md5: md5 }.with_indifferent_access

Packages::Cargo::CreatePackageService.new(project, user, params).execute

💾 Database Review

SQL Query
TRANSACTION (0.2ms)
BEGIN
    Packages::Cargo::Metadatum EXISTS ? (1.0ms
)
SELECT
    1 AS one
FROM
    "packages_cargo_metadata"
WHERE
    "packages_cargo_metadata"."project_id" = 1
        AND "packages_cargo_metadata"."normalized_name" = 'test-crate-2'
        AND "packages_cargo_metadata"."normalized_version" = '1.0.0'
    LIMIT 1
    /*application:console,db_config_database:gitlabhq_development,db_config_name:main,console_hostname:gdk.local,console_username:gdk,line:(pry):5:in `__pry__'*/
    Packages::Cargo::Metadatum CREATE (
        0.9ms)
INSERT INTO "packages_cargo_metadata" (
    "package_id", "index_content", "project_id", "normalized_name", "normalized_version", "created_at", "updated_at")
    VALUES (
        29, '{"name":"test-crate-2","vers":"1.0.0","deps":[],"cksum":"abc123"}', 1, 'test-crate-2', '1.0.0', '2025-11-03 10:55:47.919856', '2025-11-03 10:55:47.919856')
RETURNING
    "package_id"
    /*application:console,db_config_database:gitlabhq_development,db_config_name:main,console_hostname:gdk.local,console_username:gdk,line:(pry):5:in `__pry__'*/
    TRANSACTION (
        0.2ms)
    COMMIT

https://console.postgres.ai/gitlab/gitlab-production-main/sessions/45063/commands/138290 (internal)

Edited by Chandra Kiran G

Merge request reports

Loading