Organize package models by package type

Summary

  • Package models are all living under the Packages:: namespace
  • This leads to a mix of models that deals with different package types to be at the same level. Examples:
    • Packages::MavenMetadatum
    • Packages::ConanFileMetadatum
    • Packages::PypiMetadatum

-> We should apply the same strategy as we have in the package services: each type has its own and dedicated namespace.

Improvements

  • Improve code organization. Packages:: will not be a bag of everything mashed together. It will contain common/shared classes among all package types
  • Improve code readability

Risks

  • Models are linked to database tables (Example: Packages::MavenMetadatum linked to packages_maven_metadata). We want to avoid a table renaming so we must use the exact same terms and in the same order (Example: Packages::MavenMetadatum can only be transformed into Packages::Maven::Metadatum and not something else such as Packages::Metadatum::Maven)

Involved components

  • Packages::ConanFileMetadatum
  • Packages::ConanMetadatum
  • Packages::MavenMetadatum
  • Packages::PypiMetadatum

Optional: Intended side effects

  • Future package type metadata will have their own namespace at the model level too.