@startuml
skinparam backgroundColor White
skinparam defaultFontColor Black
skinparam shadowing false
skinparam componentStyle rectangle
skinparam ArrowColor Black
skinparam packageBorderColor Black
skinparam packageBackgroundColor #F7F9FC
skinparam componentBackgroundColor #E5F7EA
skinparam componentBorderColor Black

title /organization/list after fix (non-persistent execution)

actor Client #FFF6D5
component "Organization Handler\n(GET /organization/list)" as Handler #D9E8FF
component "SqlxAdapter::list_user_organizations\nSELECT o.* ..." as Adapter #D9E8FF
component "SQLx Query Builder\n.persistent(false)" as NonPersistent #CFF3D4
database "PostgreSQL" as PG #FFF4CC
component "Schema Change\n(add/drop/type change in organization columns)" as DDL #FFD1DC

Client --> Handler : request
Handler --> Adapter : list_user_organizations(user_id)
Adapter --> NonPersistent : build non-cached query
NonPersistent --> PG : parse + execute per call
DDL --> PG : row shape may change
PG --> NonPersistent : current plan compiled for current shape
NonPersistent --> Adapter : rows
Adapter --> Handler : organizations JSON
Handler --> Client : 200 response
@enduml
