diff --git a/data/model/__init__.py b/data/model/__init__.py index 0c8122c31..7115aa9a9 100644 --- a/data/model/__init__.py +++ b/data/model/__init__.py @@ -8,6 +8,9 @@ class DataModelException(Exception): class BlobDoesNotExist(DataModelException): pass +class TorrentInfoDoesNotExist(DataModelException): + pass + class InvalidBlobUpload(DataModelException): pass diff --git a/data/model/storage.py b/data/model/storage.py index efca90365..d0122d9a8 100644 --- a/data/model/storage.py +++ b/data/model/storage.py @@ -2,7 +2,7 @@ import logging from peewee import JOIN_LEFT_OUTER, fn, SQL -from data.model import config, db_transaction, InvalidImageException +from data.model import config, db_transaction, InvalidImageException, TorrentInfoDoesNotExist from data.database import (ImageStorage, Image, DerivedStorageForImage, ImageStoragePlacement, ImageStorageLocation, ImageStorageTransformation, ImageStorageSignature, ImageStorageSignatureKind, Repository, Namespace, TorrentInfo) @@ -216,3 +216,13 @@ def get_storage_locations(uuid): def save_torrent_info(storage_object, piece_length, pieces): TorrentInfo.create(storage=storage_object, piece_length=piece_length, pieces=pieces) + +def get_torrent_info(blob): + try: + return (TorrentInfo + .select() + .join(ImageStorage) + .where(blob.id == ImageStorage.id) + .get()) + except TorrentInfo.DoesNotExist: + raise TorrentInfoDoesNotExist