Add worker to cleanup orphaned packages_nuget_symbols records

The following discussion from !129916 (merged) should be addressed:

  • @10io started a discussion: (+1 comment)

    We can't have on_delete: :cascade.

    The problem is that this table holds a reference to a file located on object storage. If we let the database delete these rows when a packages_packages row is removed, then the file on object storage is left behind.

    We have two ways to solve this:

    1. Let rails handle the cascade of deletes with has_many .... dependent: :destroy.
    2. In NPM metadata caches, we are trying a new approach:
      • nullify the foreign key when the parent object is deleted. See this part.
      • Have a background worker cleanup that will detect those stale rows and delete them one by one using standard rails methods (like destroy!) which in turn will properly remove files from object storage.
      • For this to work, we need to entire object storage key within the considered record.

    From what I see here, you're going for (2.). If that's the case, we will need to update this on_delete statement and have a follow up issue for the background cleaner worker. Regarding the worker, there might be a way that it supports multiple tables. A bit like the uploader class, I'm convinced that we can centralize things for models that have the object_storage_key column.