34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
# [DEF:backend.src.models.connection:Module]
|
|
#
|
|
# @SEMANTICS: database, connection, configuration, sqlalchemy, sqlite
|
|
# @PURPOSE: Defines the database schema for external database connection configurations.
|
|
# @LAYER: Domain
|
|
# @RELATION: DEPENDS_ON -> sqlalchemy
|
|
#
|
|
# @INVARIANT: All primary keys are UUID strings.
|
|
|
|
# [SECTION: IMPORTS]
|
|
from sqlalchemy import Column, String, Integer, DateTime
|
|
from sqlalchemy.sql import func
|
|
from .mapping import Base
|
|
import uuid
|
|
# [/SECTION]
|
|
|
|
# [DEF:ConnectionConfig:Class]
|
|
# @PURPOSE: Stores credentials for external databases used for column mapping.
|
|
class ConnectionConfig(Base):
|
|
__tablename__ = "connection_configs"
|
|
|
|
id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
|
|
name = Column(String, nullable=False)
|
|
type = Column(String, nullable=False) # e.g., "postgres"
|
|
host = Column(String, nullable=True)
|
|
port = Column(Integer, nullable=True)
|
|
database = Column(String, nullable=True)
|
|
username = Column(String, nullable=True)
|
|
password = Column(String, nullable=True) # Encrypted/Obfuscated password
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
|
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
|
# [/DEF:ConnectionConfig:Class]
|
|
|
|
# [/DEF:backend.src.models.connection:Module] |