Context
Persist the new icon and icon_color fields for Place. Depends on PlaceBrain/contracts#1.
Changes
- SQLAlchemy: add nullable
icon: str | None and icon_color: str | None columns in backend/places/src/infra/db/models/place.py.
- DTOs: extend
PlaceDTO and PlaceWithRoleDTO in backend/places/src/core/dto.py.
- Service: thread fields through
create_place and update_place in backend/places/src/services/places.py. Existing role enforcement via _get_member_or_fail (OWNER / ADMIN for update) stays unchanged.
- Handler: pass through proto ↔ service in
backend/places/src/handlers/places.py.
- Migration: generate via
make places-migration m="add place icon fields". Never hand-write the migration file.
Acceptance
- Auto-generated Alembic migration applied cleanly on a fresh and on an existing DB.
ruff check, ruff format --check, mypy green.
- No Kafka event schema changes.
Blocked by
Blocks
Context
Persist the new
iconandicon_colorfields for Place. Depends on PlaceBrain/contracts#1.Changes
icon: str | Noneandicon_color: str | Nonecolumns inbackend/places/src/infra/db/models/place.py.PlaceDTOandPlaceWithRoleDTOinbackend/places/src/core/dto.py.create_placeandupdate_placeinbackend/places/src/services/places.py. Existing role enforcement via_get_member_or_fail(OWNER / ADMIN for update) stays unchanged.backend/places/src/handlers/places.py.make places-migration m="add place icon fields". Never hand-write the migration file.Acceptance
ruff check,ruff format --check,mypygreen.Blocked by
Blocks