57 lines
1.0 KiB
Python
57 lines
1.0 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import List, Optional
|
|
|
|
|
|
# --- 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: Optional[EchoedSearchRequest] = None
|