Skip to content

Commit 0db4536

Browse files
committed
Add university data fields to inferred_user table and enumeration
1 parent 71534cd commit 0db4536

4 files changed

Lines changed: 65 additions & 2 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "welearn-database"
3-
version = "1.4.4"
3+
version = "1.4.5"
44
description = "All stuff related to relationnal database from the WeLearn project"
55
authors = [
66
{name = "Théo",email = "theo.nardin@cri-paris.org"}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
"""add_university_data
2+
3+
Revision ID: 8b780aea403a
4+
Revises: f1ce0ad2845b
5+
Create Date: 2026-06-03 11:34:02.441435
6+
7+
"""
8+
9+
from typing import Sequence, Union
10+
11+
import sqlalchemy as sa
12+
from alembic import op
13+
from sqlalchemy.dialects import postgresql
14+
15+
# revision identifiers, used by Alembic.
16+
revision: str = "8b780aea403a"
17+
down_revision: Union[str, None] = "f1ce0ad2845b"
18+
branch_labels: Union[str, Sequence[str], None] = None
19+
depends_on: Union[str, Sequence[str], None] = None
20+
21+
22+
def upgrade() -> None:
23+
op.add_column(
24+
"inferred_user",
25+
sa.Column("university_title", sa.String(), nullable=True),
26+
schema="user_related",
27+
)
28+
op.add_column(
29+
"inferred_user",
30+
sa.Column(
31+
"role",
32+
postgresql.ENUM(
33+
"student",
34+
"teacher",
35+
"staff",
36+
name="university_role",
37+
schema="user_related",
38+
),
39+
nullable=True,
40+
),
41+
schema="user_related",
42+
)
43+
44+
45+
def downgrade() -> None:
46+
op.drop_column("inferred_user", "university_title", schema="user_related")
47+
op.drop_column("inferred_user", "role", schema="user_related")
48+
op.execute("DROP TYPE user_related.university_role")

welearn_database/data/enumeration.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,9 @@ class ExternalIdType(StrEnum):
4343
class FilterType(StrEnum):
4444
SDG = auto()
4545
SOURCE = auto()
46+
47+
48+
class UniversityRole(StrEnum):
49+
STUDENT = auto()
50+
TEACHER = auto()
51+
STAFF = auto()

welearn_database/data/models/user_related.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from sqlalchemy.dialects.postgresql import ENUM, TIMESTAMP
66
from sqlalchemy.orm import Mapped, mapped_column, relationship
77

8-
from welearn_database.data.enumeration import DbSchemaEnum, FilterType
8+
from welearn_database.data.enumeration import DbSchemaEnum, FilterType, UniversityRole
99
from welearn_database.data.models.document_related import WeLearnDocument
1010

1111
from . import Base
@@ -216,6 +216,15 @@ class InferredUser(Base):
216216
types.Uuid, primary_key=True, nullable=False, server_default="gen_random_uuid()"
217217
)
218218
origin_referrer: Mapped[str | None]
219+
university_title: Mapped[str | None]
220+
role: Mapped[str] = mapped_column(
221+
ENUM(
222+
*(r.value.lower() for r in UniversityRole),
223+
name="university_role",
224+
schema="user_related",
225+
),
226+
nullable=False,
227+
)
219228
created_at: Mapped[datetime] = mapped_column(
220229
TIMESTAMP(timezone=False),
221230
nullable=False,

0 commit comments

Comments
 (0)