Files
BibAPI/src/bibapi/schemas/marcxml.py

68 lines
1.3 KiB
Python

from dataclasses import dataclass, field
# --- MARC XML structures ---
@dataclass
class ControlField:
tag: str
value: str
@dataclass
class SubField:
code: str
value: str
@dataclass
class DataField:
tag: str
ind1: str = " "
ind2: str = " "
subfields: list[SubField] = field(default_factory=list)
@dataclass
class MarcRecord:
leader: str
controlfields: list[ControlField] = field(default_factory=list)
datafields: list[DataField] = field(default_factory=list)
# --- SRU record wrapper ---
@dataclass
class Record:
recordSchema: str
recordPacking: str
recordData: MarcRecord
recordPosition: int
@dataclass
class EchoedSearchRequest:
version: str
query: str
maximumRecords: int
recordPacking: str
recordSchema: str
@dataclass
class SearchRetrieveResponse:
version: str
numberOfRecords: int
records: list[Record] = field(default_factory=list)
echoedSearchRetrieveRequest: EchoedSearchRequest | None = None
@dataclass
class FormattedResponse:
title: str
edition: str | None = None
publisher: str | None = None
year: str | None = None
authors: list[str] = field(default_factory=list)
isbn: list[str] = field(default_factory=list)
ppn: str | None = None
libraries: list[str] = field(default_factory=list)