Coverage for polar/models/user_organization.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 12:42 +0000

1from uuid import UUID 

2 

3from sqlalchemy import ForeignKey, Uuid 

4from sqlalchemy.orm import Mapped, declared_attr, mapped_column, relationship 

5 

6from polar.kit.db.models import TimestampedModel 

7from polar.models.organization import Organization 

8from polar.models.user import User 

9 

10 

11class UserOrganization(TimestampedModel): 

12 __tablename__ = "user_organizations" 

13 

14 user_id: Mapped[UUID] = mapped_column( 

15 Uuid, 

16 ForeignKey("users.id"), 

17 nullable=False, 

18 primary_key=True, 

19 ) 

20 

21 organization_id: Mapped[UUID] = mapped_column( 

22 Uuid, 

23 ForeignKey("organizations.id", ondelete="CASCADE"), 

24 nullable=False, 

25 primary_key=True, 

26 ) 

27 

28 @declared_attr 

29 def user(cls) -> "Mapped[User]": 

30 return relationship("User", lazy="raise") 

31 

32 @declared_attr 

33 def organization(cls) -> "Mapped[Organization]": 

34 return relationship("Organization", lazy="raise")