from dataclasses import dataclass
import random
from faker import Faker

@dataclass
class NetworkingSize:
    request_size: int = 0
    response_size: int = 0


def get_size_from_dict(data: dict):
    return NetworkingSize(
        request_size=data.get('request_bytes', 0),
        response_size=data.get('response_bytes', 0)
    )


def generate_random_book_data(count: int) -> list[dict]:
    fake = Faker("en_GB")

    return [
        {
            # 'id': book_id,
            'isbn': fake.isbn13(separator='-'),
            'barcode': fake.ean(length=13),
            'title': fake.sentence(nb_words=6),
            'subtitle': fake.sentence(nb_words=3),
            'author': fake.name(),
            'translator': fake.name(),
            'editor': fake.name(),
            'publisher': fake.company(),
            'publication_date': random.randint(-2190472676, 1754206067),
            'edition': fake.word(),
            'pages': random.randint(100, 1000),
            'language': random.choice(['English', 'Français', 'Deutsch']),
            'category_id': random.randint(1, 100),
            'subject': fake.word(),
            'keywords': ", ".join(fake.words(nb=5, unique=True, ext_word_list=None)),
            'description': fake.text(max_nb_chars=200),
            'abstract': fake.text(max_nb_chars=100),
            'format': random.choice(['16mo', '8vo', '4to', 'Folio', 'Quarto']),
            'binding': random.choice(['expensive', 'cheap', 'paperback', 'hardcover']),
            'weight': random.uniform(100, 2000),
            'cover_image': "https://example.com/cover_image.jpg"
        } for _ in range(count)
    ]
