def delete_package_version( platform: str, filename: str, channel_name: str, package_name: str, dao: Dao = Depends(get_dao), db=Depends(get_db), auth: authorization.Rules = Depends(get_rules), ): version = dao.get_package_version_by_filename(channel_name, package_name, filename, platform) auth.assert_package_delete(version.package) if not version: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail=f"package version {platform}/{filename} not found", ) db.delete(version) db.commit() path = os.path.join(platform, filename) pkgstore.delete_file(channel_name, path) dao.update_channel_size(channel_name)
def delete_package( package: db_models.Package = Depends(get_package_or_fail), db=Depends(get_db), auth: authorization.Rules = Depends(get_rules), ): auth.assert_package_delete(package) filenames = [ os.path.join(version.platform, version.filename) for version in package.package_versions # type: ignore ] channel_name = package.channel_name db.delete(package) db.commit() for filename in filenames: pkgstore.delete_file(channel_name, filename)