Skip to content
This repository was archived by the owner on Oct 1, 2024. It is now read-only.

Commit b4a4009

Browse files
committed
dds_glossary/model.py: simplify boilerplate
1 parent 92583aa commit b4a4009

2 files changed

Lines changed: 20 additions & 24 deletions

File tree

dds_glossary/model.py

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from abc import abstractmethod
44
from typing import ClassVar
55

6-
from pydantic import BaseModel
76
from sqlalchemy import Column, ForeignKey, String, Table
87
from sqlalchemy.dialects.postgresql import JSONB
9-
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
8+
from sqlalchemy.orm import DeclarativeBase, Mapped, Relationship, mapped_column
9+
from sqlmodel import SQLModel
1010

1111
from .enums import MemberType, SemanticRelationType
1212
from .xml import (
@@ -18,7 +18,7 @@
1818
)
1919

2020

21-
class Dataset(BaseModel):
21+
class Dataset(SQLModel):
2222
"""
2323
Base class for the datasets.
2424
@@ -124,12 +124,11 @@ class ConceptScheme(Base):
124124
__tablename__ = "concept_schemes"
125125

126126
iri: Mapped[str] = mapped_column(primary_key=True)
127-
notation: Mapped[str] = mapped_column()
128-
scopeNote: Mapped[str] = mapped_column()
129-
prefLabels: Mapped[dict[str, str]] = mapped_column()
127+
notation: Mapped[str]
128+
scopeNote: Mapped[str]
129+
prefLabels: Mapped[dict[str, str]]
130130

131-
members: Mapped[list["Member"]] = relationship(
132-
"Member",
131+
members: Mapped[list["Member"]] = Relationship(
133132
secondary="in_scheme",
134133
back_populates="concept_schemes",
135134
)
@@ -190,22 +189,20 @@ class Member(Base):
190189
__tablename__ = "collection_members"
191190

192191
iri: Mapped[str] = mapped_column(primary_key=True)
193-
notation: Mapped[str] = mapped_column()
194-
prefLabels: Mapped[dict[str, str]] = mapped_column()
195-
member_type: Mapped[MemberType] = mapped_column()
192+
notation: Mapped[str]
193+
prefLabels: Mapped[dict[str, str]]
194+
member_type: Mapped[MemberType]
196195

197196
__mapper_args__ = {
198197
"polymorphic_identity": MemberType.COLLECTION_MEMBER,
199198
"polymorphic_on": "member_type",
200199
}
201200

202-
concept_schemes: Mapped[list[ConceptScheme]] = relationship(
203-
"ConceptScheme",
201+
concept_schemes: Mapped[list[ConceptScheme]] = Relationship(
204202
secondary="in_scheme",
205203
back_populates="members",
206204
)
207-
collections: Mapped[list["Collection"]] = relationship(
208-
"Collection",
205+
collections: Mapped[list["Collection"]] = Relationship(
209206
secondary="in_collection",
210207
back_populates="members",
211208
)
@@ -270,8 +267,7 @@ class Collection(Member):
270267
iri: Mapped[str] = mapped_column(ForeignKey(Member.iri), primary_key=True)
271268
member_iris: list[str] = []
272269

273-
members: Mapped[list[Member]] = relationship(
274-
"Member",
270+
members: Mapped[list[Member]] = Relationship(
275271
secondary="in_collection",
276272
back_populates="collections",
277273
)
@@ -348,9 +344,9 @@ class Concept(Member):
348344
__tablename__ = "concepts"
349345

350346
iri: Mapped[str] = mapped_column(ForeignKey(Member.iri), primary_key=True)
351-
identifier: Mapped[str] = mapped_column()
352-
altLabels: Mapped[dict[str, list[str]]] = mapped_column()
353-
scopeNotes: Mapped[dict[str, str]] = mapped_column()
347+
identifier: Mapped[str]
348+
altLabels: Mapped[dict[str, list[str]]]
349+
scopeNotes: Mapped[dict[str, str]]
354350

355351
__mapper_args__ = {
356352
"polymorphic_identity": MemberType.CONCEPT,
@@ -459,7 +455,7 @@ class SemanticRelation(Base):
459455

460456
__tablename__ = "semantic_relations"
461457

462-
type: Mapped[SemanticRelationType] = mapped_column()
458+
type: Mapped[SemanticRelationType]
463459

464460
source_concept_iri: Mapped[str] = mapped_column(
465461
ForeignKey(Concept.iri),
@@ -469,8 +465,8 @@ class SemanticRelation(Base):
469465
ForeignKey(Concept.iri),
470466
primary_key=True,
471467
)
472-
source_concept: Mapped["Concept"] = relationship(foreign_keys=[source_concept_iri])
473-
target_concept: Mapped["Concept"] = relationship(foreign_keys=[target_concept_iri])
468+
source_concept: Mapped[Concept] = Relationship(foreign_keys=[source_concept_iri])
469+
target_concept: Mapped[Concept] = Relationship(foreign_keys=[target_concept_iri])
474470

475471
@classmethod
476472
def from_xml_element(cls, element) -> list["SemanticRelation"]:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ dependencies = [
3636
"psycopg",
3737
"python-dotenv",
3838
"sentry-sdk[fastapi]",
39-
"SQLAlchemy>=2.0.0",
39+
"sqlmodel>=0.0.12",
4040
"sqlalchemy-utils",
4141
"uvicorn[standard]",
4242
]

0 commit comments

Comments
 (0)