Source code for timelink.mhk.models.system

""" Models for system tables

Tables defined here:

    - syspar: system parameters
    - syslog: system log

"""

from enum import Enum
from typing import Optional

from datetime import datetime
from pydantic import BaseModel, ConfigDict  # pylint: disable=import-error

from sqlalchemy import Column, String, Integer, DateTime  # pylint: disable=import-error
from sqlalchemy.sql import func  # pylint: disable=import-error
from sqlalchemy.orm import mapped_column  # pylint: disable=import-error
from sqlalchemy.orm import Mapped  # pylint: disable=import-error
from timelink.mhk.models.base_class import Base


[docs] class SysPar(Base): """System parameters table""" __tablename__ = "syspar" pname = Column(String, primary_key=True, index=True) pvalue = Column(String) ptype = Column(String) obs = Column(String)
[docs] class ParTypeSchema(str, Enum): """Parameter type Fields: string: string integer: integer float: float date: date boolean: boolean list: list """ string = "string" integer = "integer" float = "float" date = "date" boolean = "boolean" list = "list"
[docs] class SysParSchema(BaseModel): """System parameters in the Timelink app Fields: pname: parameter name pvalue: parameter value ptype: parameter type obs: parameter description """ pname: str pvalue: str ptype: ParTypeSchema obs: str model_config = ConfigDict(from_attributes=True)
[docs] class LogLevel(str, Enum): """Log level Fields: debug: debug info: info warning: warning error: error critical: critical """ debug = "debug" info = "info" warning = "warning" error = "error" critical = "critical"
[docs] class SysLog(Base): """System log table Fields: seq: sequence number time: time of log entry level: log level origin: origin of log entry message: log message """ seq = Column(Integer, primary_key=True, index=True, autoincrement=True) time = Column(DateTime, default=func.now()) level = Column(Integer) origin = Column(String) message = Column(String)
[docs] class SysLogSchema(BaseModel): """System log in the Timelink app Fields: seq: sequence number time: time of log entry level: log level origin: origin of log entry message: log message """ seq: int time: datetime level: LogLevel origin: str message: str model_config = ConfigDict(from_attributes=True)
[docs] class SysLogCreateSchema(BaseModel): """System log create in the Timelink app Fields: level: log level origin: origin of log entry message: log message """ level: LogLevel origin: str message: str model_config = ConfigDict(from_attributes=True)
[docs] class KleioImportedFile(Base): """Represents a Kleio file imported in the database Fields: path: path of the file name: name of the file structure: structure name translator: translator name translation_date: date of translation nerrors: number of errors nwarnings: number of warnings error_rpt: error report warning_rpt: warning report""" __tablename__ = "kleiofiles" path: Mapped[str] = mapped_column(String(1024), primary_key=True, nullable=False) name: Mapped[str] = mapped_column(String(255), nullable=False) structure: Mapped[str] = mapped_column(String(255), nullable=False) translator: Mapped[str] = mapped_column(String(255), nullable=False) translation_date: Mapped[datetime] = mapped_column(DateTime, nullable=False) nerrors: Mapped[int] = mapped_column(Integer, default=0, nullable=False) nwarnings: Mapped[int] = mapped_column(Integer, default=0, nullable=False) error_rpt: Mapped[Optional[str]] = mapped_column(String(10000), nullable=True) warning_rpt: Mapped[Optional[str]] = mapped_column(String(10000), nullable=True) imported: Mapped[datetime] = mapped_column(DateTime, nullable=True) imported_string: Mapped[str] = mapped_column(String(255), nullable=True)