1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
from .SqlAlchemyBase import Base
from sqlalchemy import Column, String, Integer, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from typing import Dict
class IdentityProviderMetadata:
def __init__(self, icon_url: str,
provider_labels: Dict[str, str],
default_label_culture: str='en') -> None:
self.icon_url = icon_url
self.provider_labels = provider_labels
self.default_label_culture = default_label_culture
class DbProviderLabel(Base):
__tablename__ = 'provider_labels'
provider_label_id = Column(Integer, primary_key=True, autoincrement=True)
provider_metadata_id = Column(Integer, ForeignKey('provider_metadata.provider_metadata_id'))
label_culture = Column(String(5))
label_value = Column(String(128))
class DbIdentityProviderMetadata(Base):
__tablename__ = 'provider_metadata'
provider_metadata_id = Column(Integer, primary_key=True, autoincrement=True)
provider_id = Column(Integer, ForeignKey("identity_provider.provider_id"), unique=True)
icon_url = Column(String(1024))
default_label_culture = Column(String(5))
provider_labels = relationship("DbProviderLabel")
def toIdentityProviderMetadata(self) -> IdentityProviderMetadata:
provider_labels: Dict[str, str] = {}
for provider_label in self.provider_labels:
provider_labels[provider_label.label_culture] = provider_label.label_value
return IdentityProviderMetadata(icon_url=self.icon_url,
provider_labels=provider_labels,
default_label_culture=self.default_label_culture)
|