Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 72 additions & 68 deletions src/pypn_habref_api/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# coding: utf8
from sqlalchemy import ForeignKey
from typing import Optional

from sqlalchemy import Boolean, Column, ForeignKey, Integer, Table, Unicode
from sqlalchemy.orm import Mapped, mapped_column
from utils_flask_sqla.serializers import serializable

from pypn_habref_api.env import db as DB
Expand All @@ -9,31 +12,31 @@
class BibHabrefTypoRel(DB.Model):
__tablename__ = "bib_habref_typo_rel"
__table_args__ = {"schema": "ref_habitats"}
cd_type_rel = DB.Column(DB.Integer, primary_key=True)
lb_type_rel = DB.Column(DB.Unicode)
lb_rel = DB.Column(DB.Unicode)
corresp_hab = DB.Column(DB.Boolean)
corresp_esp = DB.Column(DB.Boolean)
corresp_syn = DB.Column(DB.Boolean)
cd_type_rel: Mapped[int] = mapped_column(Integer, primary_key=True)
lb_type_rel: Mapped[Optional[str]] = mapped_column(Unicode)
lb_rel: Mapped[Optional[str]] = mapped_column(Unicode)
corresp_hab: Mapped[Optional[bool]] = mapped_column(Boolean)
corresp_esp: Mapped[Optional[bool]] = mapped_column(Boolean)
corresp_syn: Mapped[Optional[bool]] = mapped_column(Boolean)


@serializable
class CorespHab(DB.Model):
__tablename__ = "habref_corresp_hab"
__table_args__ = {"schema": "ref_habitats"}
cd_corresp_hab = DB.Column(DB.Integer, primary_key=True)
cd_hab_entre = DB.Column(DB.Integer, ForeignKey("ref_habitats.habref.cd_hab"))
cd_hab_sortie = DB.Column(DB.Integer)
cd_type_relation = DB.Column(
DB.Integer, ForeignKey("ref_habitats.bib_habref_typo_rel.cd_type_rel")
cd_corresp_hab: Mapped[int] = mapped_column(Integer, primary_key=True)
cd_hab_entre: Mapped[int] = mapped_column(Integer, ForeignKey("ref_habitats.habref.cd_hab"))
cd_hab_sortie: Mapped[Optional[int]] = mapped_column(Integer)
cd_type_relation: Mapped[Optional[int]] = mapped_column(
Integer, ForeignKey("ref_habitats.bib_habref_typo_rel.cd_type_rel")
)
lb_condition = DB.Column(DB.Unicode)
lb_remarques = DB.Column(DB.Unicode)
validite = DB.Column(DB.Boolean)
cd_typo_entre = DB.Column(DB.Integer)
cd_typo_sortie = DB.Column(DB.Integer)
date_crea = DB.Column(DB.Integer)
diffusion = DB.Column(DB.Boolean)
lb_condition: Mapped[Optional[str]] = mapped_column(Unicode)
lb_remarques: Mapped[Optional[str]] = mapped_column(Unicode)
validite: Mapped[Optional[bool]] = mapped_column(Boolean)
cd_typo_entre: Mapped[Optional[int]] = mapped_column(Integer)
cd_typo_sortie: Mapped[Optional[int]] = mapped_column(Integer)
date_crea: Mapped[Optional[int]] = mapped_column(Integer)
diffusion: Mapped[Optional[bool]] = mapped_column(Boolean)

type_rel = DB.relationship("BibHabrefTypoRel", lazy="select")

Expand All @@ -42,39 +45,40 @@ class CorespHab(DB.Model):
class TypoRef(DB.Model):
__tablename__ = "typoref"
__table_args__ = {"schema": "ref_habitats"}
cd_typo = DB.Column(DB.Integer, primary_key=True)
cd_table = DB.Column(DB.Unicode)
lb_nom_typo = DB.Column(DB.Unicode)
nom_jeu_donnees = DB.Column(DB.Unicode)
date_creation = DB.Column(DB.Unicode)
date_mise_jour_table = DB.Column(DB.Unicode)
date_mise_jour_metadonnees = DB.Column(DB.Unicode)
auteur_typo = DB.Column(DB.Unicode)
auteur_table = DB.Column(DB.Unicode)
territoire = DB.Column(DB.Unicode)
organisme = DB.Column(DB.Unicode)
langue = DB.Column(DB.Unicode)
presentation = DB.Column(DB.Unicode)
description = DB.Column(DB.Unicode)
origine = DB.Column(DB.Unicode)
ref_biblio = DB.Column(DB.Unicode)
mots_cles = DB.Column(DB.Unicode)
referencement = DB.Column(DB.Unicode)
diffusion = DB.Column(DB.Unicode)
derniere_modif = DB.Column(DB.Unicode)
type_table = DB.Column(DB.Unicode)
cd_typo_entre = DB.Column(DB.Integer)
cd_typo_sortie = DB.Column(DB.Integer)
niveau_inpn = DB.Column(DB.Integer)
cd_typo: Mapped[int] = mapped_column(Integer, primary_key=True)
cd_table: Mapped[Optional[str]] = mapped_column(Unicode)
lb_nom_typo: Mapped[Optional[str]] = mapped_column(Unicode)
nom_jeu_donnees: Mapped[Optional[str]] = mapped_column(Unicode)
date_creation: Mapped[Optional[str]] = mapped_column(Unicode)
date_mise_jour_table: Mapped[Optional[str]] = mapped_column(Unicode)
date_mise_jour_metadonnees: Mapped[Optional[str]] = mapped_column(Unicode)
auteur_typo: Mapped[Optional[str]] = mapped_column(Unicode)
auteur_table: Mapped[Optional[str]] = mapped_column(Unicode)
territoire: Mapped[Optional[str]] = mapped_column(Unicode)
organisme: Mapped[Optional[str]] = mapped_column(Unicode)
langue: Mapped[Optional[str]] = mapped_column(Unicode)
presentation: Mapped[Optional[str]] = mapped_column(Unicode)
description: Mapped[Optional[str]] = mapped_column(Unicode)
origine: Mapped[Optional[str]] = mapped_column(Unicode)
ref_biblio: Mapped[Optional[str]] = mapped_column(Unicode)
mots_cles: Mapped[Optional[str]] = mapped_column(Unicode)
referencement: Mapped[Optional[str]] = mapped_column(Unicode)
diffusion: Mapped[Optional[str]] = mapped_column(Unicode)
derniere_modif: Mapped[Optional[str]] = mapped_column(Unicode)
type_table: Mapped[Optional[str]] = mapped_column(Unicode)
cd_typo_entre: Mapped[Optional[int]] = mapped_column(Integer)
cd_typo_sortie: Mapped[Optional[int]] = mapped_column(Integer)
niveau_inpn: Mapped[Optional[int]] = mapped_column(Integer)

habitats = DB.relationship("Habref", back_populates="typo")


cor_list_habitat = DB.Table(
cor_list_habitat = Table(
"cor_list_habitat",
DB.Column("id_cor_list", DB.Integer, primary_key=True),
DB.Column("id_list", DB.Integer, ForeignKey("ref_habitats.bib_list_habitat.id_list")),
DB.Column("cd_hab", DB.Integer, ForeignKey("ref_habitats.habref.cd_hab")),
DB.metadata,
Column("id_cor_list", Integer, primary_key=True),
Column("id_list", Integer, ForeignKey("ref_habitats.bib_list_habitat.id_list")),
Column("cd_hab", Integer, ForeignKey("ref_habitats.habref.cd_hab")),
schema="ref_habitats",
)

Expand All @@ -83,20 +87,20 @@ class TypoRef(DB.Model):
class Habref(DB.Model):
__tablename__ = "habref"
__table_args__ = {"schema": "ref_habitats"}
cd_hab = DB.Column(DB.Integer, primary_key=True)
fg_validite = DB.Column(DB.Unicode)
cd_typo = DB.Column(DB.Integer, ForeignKey("ref_habitats.typoref.cd_typo"))
lb_code = DB.Column(DB.Unicode)
lb_hab_fr = DB.Column(DB.Unicode)
lb_hab_fr_complet = DB.Column(DB.Unicode)
lb_hab_en = DB.Column(DB.Unicode)
lb_auteur = DB.Column(DB.Unicode)
niveau = DB.Column(DB.Integer)
lb_niveau = DB.Column(DB.Unicode)
cd_hab_sup = DB.Column(DB.Integer)
path_cd_hab = DB.Column(DB.Unicode)
france = DB.Column(DB.Unicode)
lb_description = DB.Column(DB.Unicode)
cd_hab: Mapped[int] = mapped_column(Integer, primary_key=True)
fg_validite: Mapped[str] = mapped_column(Unicode)
cd_typo: Mapped[int] = mapped_column(Integer, ForeignKey("ref_habitats.typoref.cd_typo"))
lb_code: Mapped[Optional[str]] = mapped_column(Unicode)
lb_hab_fr: Mapped[Optional[str]] = mapped_column(Unicode)
lb_hab_fr_complet: Mapped[Optional[str]] = mapped_column(Unicode)
lb_hab_en: Mapped[Optional[str]] = mapped_column(Unicode)
lb_auteur: Mapped[Optional[str]] = mapped_column(Unicode)
niveau: Mapped[Optional[int]] = mapped_column(Integer)
lb_niveau: Mapped[Optional[str]] = mapped_column(Unicode)
cd_hab_sup: Mapped[Optional[int]] = mapped_column(Integer)
path_cd_hab: Mapped[Optional[str]] = mapped_column(Unicode)
france: Mapped[Optional[str]] = mapped_column(Unicode)
lb_description: Mapped[Optional[str]] = mapped_column(Unicode)

typo = DB.relationship("TypoRef", lazy="joined", back_populates="habitats")
correspondances = DB.relationship("CorespHab", lazy="select")
Expand All @@ -109,20 +113,20 @@ class Habref(DB.Model):
class BibListHabitat(DB.Model):
__tablename__ = "bib_list_habitat"
__table_args__ = {"schema": "ref_habitats"}
id_list = DB.Column(DB.Integer, primary_key=True)
list_name = DB.Column(DB.Unicode)
id_list: Mapped[int] = mapped_column(Integer, primary_key=True)
list_name: Mapped[str] = mapped_column(Unicode)
habitats = DB.relationship("Habref", secondary=cor_list_habitat, back_populates="lists")


@serializable
class AutoCompleteHabitat(DB.Model):
__tablename__ = "autocomplete_habitat"
__table_args__ = {"schema": "ref_habitats"}
cd_hab = DB.Column(DB.Integer, primary_key=True)
cd_typo = DB.Column(DB.Integer)
lb_code = DB.Column(DB.Unicode)
lb_nom_typo = DB.Column(DB.Unicode)
search_name = DB.Column(DB.Unicode)
cd_hab: Mapped[int] = mapped_column(Integer, primary_key=True)
cd_typo: Mapped[int] = mapped_column(Integer)
lb_code: Mapped[Optional[str]] = mapped_column(Unicode)
lb_nom_typo: Mapped[str] = mapped_column(Unicode)
search_name: Mapped[str] = mapped_column(Unicode)
lists = DB.relationship(
BibListHabitat,
primaryjoin=(cor_list_habitat.c.cd_hab == cd_hab),
Expand Down
Loading