Skip to content

Commit 8358f26

Browse files
jeremie0342Jeremie Zitti
andauthored
fix(ci): pass lint + check + type-safe i18n (#9)
- backend: fix ruff B008 (Depends in defaults) via Annotated[Session, Depends] alias - backend: fix E501 in alembic migration + reformat with ruff - backend: commit uv.lock so uv sync --frozen works - frontend: extract Dict interface into types.ts so en/fr strings are widened - frontend: prettier --write across sources - frontend: commit package-lock.json Co-authored-by: Jeremie Zitti <manage-dev@kpsgroupe.com>
1 parent 4c3237f commit 8358f26

16 files changed

Lines changed: 6629 additions & 31 deletions

File tree

backend/alembic/env.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from logging.config import fileConfig
22

3-
from alembic import context
43
from sqlalchemy import engine_from_config, pool
54

5+
from alembic import context
66
from app.config import settings
77
from app.db.session import Base
88
from app.models import Note # noqa: F401 — ensures model is registered on metadata

backend/alembic/versions/0001_notes.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
Create Date: 2026-07-22
66
77
"""
8+
89
from collections.abc import Sequence
910

1011
import sqlalchemy as sa
11-
from alembic import op
1212
from sqlalchemy.dialects import postgresql
1313

14+
from alembic import op
15+
1416
revision: str = "0001"
1517
down_revision: str | None = None
1618
branch_labels: str | Sequence[str] | None = None
@@ -22,7 +24,12 @@ def upgrade() -> None:
2224
"notes",
2325
sa.Column("id", postgresql.UUID(as_uuid=True), primary_key=True),
2426
sa.Column("text", sa.String(500), nullable=False),
25-
sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False),
27+
sa.Column(
28+
"created_at",
29+
sa.DateTime(timezone=True),
30+
server_default=sa.func.now(),
31+
nullable=False,
32+
),
2633
)
2734
op.create_index("notes_created_at_idx", "notes", ["created_at"])
2835

backend/app/models/note.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414
class Note(Base):
1515
__tablename__ = "notes"
1616

17-
id: Mapped[uuid.UUID] = mapped_column(
18-
UUID(as_uuid=True), primary_key=True, default=uuid.uuid4
19-
)
17+
id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
2018
text: Mapped[str] = mapped_column(String(500), nullable=False)
2119
created_at: Mapped[datetime] = mapped_column(
2220
DateTime(timezone=True), server_default=func.now(), nullable=False

backend/app/routers/notes.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import uuid
44
from datetime import datetime
5+
from typing import Annotated
56

67
from fastapi import APIRouter, Depends, HTTPException, status
78
from pydantic import BaseModel, ConfigDict, Field
@@ -13,6 +14,8 @@
1314

1415
router = APIRouter(prefix="/api/notes", tags=["notes"])
1516

17+
SessionDep = Annotated[Session, Depends(get_session)]
18+
1619

1720
class NoteOut(BaseModel):
1821
model_config = ConfigDict(from_attributes=True)
@@ -27,13 +30,13 @@ class NoteIn(BaseModel):
2730

2831

2932
@router.get("", response_model=list[NoteOut])
30-
def list_notes(session: Session = Depends(get_session)) -> list[Note]:
33+
def list_notes(session: SessionDep) -> list[Note]:
3134
stmt = select(Note).order_by(Note.created_at.desc()).limit(100)
3235
return list(session.scalars(stmt).all())
3336

3437

3538
@router.post("", response_model=NoteOut, status_code=status.HTTP_201_CREATED)
36-
def create_note(body: NoteIn, session: Session = Depends(get_session)) -> Note:
39+
def create_note(body: NoteIn, session: SessionDep) -> Note:
3740
note = Note(text=body.text.strip())
3841
session.add(note)
3942
session.commit()
@@ -42,7 +45,7 @@ def create_note(body: NoteIn, session: Session = Depends(get_session)) -> Note:
4245

4346

4447
@router.delete("/{note_id}", status_code=status.HTTP_204_NO_CONTENT)
45-
def delete_note(note_id: uuid.UUID, session: Session = Depends(get_session)) -> None:
48+
def delete_note(note_id: uuid.UUID, session: SessionDep) -> None:
4649
note = session.get(Note, note_id)
4750
if note is None:
4851
raise HTTPException(status.HTTP_404_NOT_FOUND, "note not found")

backend/uv.lock

Lines changed: 1128 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)