"""Минимальные модели для gost-воркера.""" from datetime import datetime from sqlalchemy import JSON, Integer, String, Text, func from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Task(Base): __tablename__ = "tasks" id: Mapped[str] = mapped_column(String(36), primary_key=True) user_id: Mapped[int] = mapped_column(Integer) type: Mapped[str] = mapped_column(String(20)) status: Mapped[str] = mapped_column(String(20)) result: Mapped[dict | None] = mapped_column(JSON, nullable=True) error: Mapped[str | None] = mapped_column(Text, nullable=True) created_at: Mapped[datetime] = mapped_column(server_default=func.now()) class Document(Base): __tablename__ = "documents" id: Mapped[int] = mapped_column(Integer, primary_key=True) source: Mapped[str] = mapped_column(String(50)) ext_id: Mapped[str] = mapped_column(String(255)) doi: Mapped[str | None] = mapped_column(String(255), nullable=True) title: Mapped[str] = mapped_column(Text) authors: Mapped[list] = mapped_column(JSON, default=list) year: Mapped[int | None] = mapped_column(nullable=True) lang: Mapped[str | None] = mapped_column(String(10), nullable=True) journal: Mapped[str | None] = mapped_column(Text, nullable=True) volume: Mapped[str | None] = mapped_column(String(50), nullable=True) issue: Mapped[str | None] = mapped_column(String(50), nullable=True) pages: Mapped[str | None] = mapped_column(String(50), nullable=True) abstract: Mapped[str | None] = mapped_column(Text, nullable=True) url: Mapped[str | None] = mapped_column(Text, nullable=True)