Follow-up from "Add service to index nuget symbol files"
The following discussion from !131567 (merged) should be addressed:
-
@10io started a discussion: For a follow up:
I think that things are becoming a bit hard to read with the amount of services involved.
What do you think if:
- we have one central service that handles downloading the file and making it available. Then, it passes this file to different steps (here we would have 2: metadata reading and symbols creation)
- Each step can return a result that is stored in the success payload of this central service.
With the above:
-
ProcessPackageFileService
could be the central service. - The step "metadata reading" could read and extract the fields that we need.
- With the 2 previous points,
app/services/packages/nuget/metadata_extraction_service.rb
becomes redundant as the metadata extraction from the nuspec file would be embedded in step 2.- One less service class
💪
- One less service class
- This service can then return the combined results of the steps. Callers are free to use whatever parts they want.
Basically, I think it would more clear to have a single "orchestrator" service that
UpdatePackageFromMetadataService
can call.
-
A proposal to orchestrate the flow of updating a NuGet package from the downloaded package file:
I think this is a sign that the orchestration needs some changes. We should have a way to:
- Download the file
- Extract the metadata, and from here detect if it's an existing package or a new one. This step needs the file from (1.).
- Extract the symbols. This step needs the file from (1.) and the package from (2.).
- Update the package file or update the temp package.
For (1.), I think we could get away with a service that has an execute that requires a block. The block would receive the
zip_file
. In that block, we can do steps (2.) and (3.). If we want to optimize things a bit, we should put step (1.) outside the database transaction because it's simply downloading and opening the zip file which has nothing to do with the database.