Code source de lgrez.bdd.model_ia

"""lg-rez / bdd / Modèle de données

Déclaration de toutes les tables et leurs colonnes

"""

import sqlalchemy

from lgrez import config
from lgrez.bdd import base
from lgrez.bdd.base import (autodoc_Column, autodoc_ManyToOne,
                            autodoc_OneToMany)


# Tables de données

[docs]class Reaction(base.TableBase): """Table de données des réactions d'IA connues du bot. Les instances sont enregistrées via :meth:`\!addIA <.IA.GestionIA.GestionIA.addIA.callback>` et supprimées via :meth:`\!modifIA <.IA.GestionIA.GestionIA.modifIA.callback>`. """ id = autodoc_Column(sqlalchemy.Integer(), primary_key=True, doc="Identifiant unique de la réaction, sans signification") reponse = autodoc_Column(sqlalchemy.String(2000), nullable=False, doc="Réponse, suivant le format (mini-langage) personnalisé " "(``\"txt <||> txt <&&> <##>react\"``)") # One-to-manys triggers = autodoc_OneToMany("Trigger", back_populates="reaction", doc="Déclencheurs associés") def __repr__(self): """Return repr(self).""" extract = self.reponse.replace('\n', ' ')[:15] + "..." return f"<Reaction #{self.id} ({extract})>"
[docs]class Trigger(base.TableBase): """Table de données des mots et expressions déclenchant l'IA du bot. Les instances sont enregistrées via :meth:`\!addIA <.IA.GestionIA.GestionIA.addIA.callback>` ou :meth:`\!modifIA <.IA.GestionIA.GestionIA.modifIA.callback>` et supprimées via :meth:`\!modifIA <.IA.GestionIA.GestionIA.modifIA.callback>`. """ id = autodoc_Column(sqlalchemy.Integer(), primary_key=True, doc="Identifiant unique du déclencheur, sans signification") trigger = autodoc_Column(sqlalchemy.String(500), nullable=False, doc="Mots-clés / expressions") _reac_id = sqlalchemy.Column(sqlalchemy.ForeignKey("reactions.id"), nullable=False) reaction = autodoc_ManyToOne("Reaction", back_populates="triggers", doc="Réaction associée") def __repr__(self): """Return repr(self).""" extract = self.trigger.replace('\n', ' ')[:15] + "..." return f"<Trigger #{self.id} ({extract})>"