Source code for luna_handlers.db.handlers_db_tools.models.handlers_models
from typing import List
from luna_db_tools.functions import currentDBTimestamp
from sqlalchemy import Column, String, TIMESTAMP, Integer, Index, SmallInteger
from sqlalchemy.dialects.oracle import CLOB
from sqlalchemy.ext.declarative import declarative_base
from .config import DBConfig
# raw sql function to get utc timestamp for creating/updating table columns
DB_CURRENT_TIMESTAMP = currentDBTimestamp(DBConfig.dbType) if DBConfig.dbType else None
Base = declarative_base()
[docs]
class Handler(Base):
"""
Database table model for handlers.
"""
__tablename__ = "handler"
#: str: handler id, uuid4 in format "xxxxxxxx-xxxx-4xxx-{8-9}xx-xxxxxxxxxxxx"
handler_id = Column(String(36), primary_key=True)
#: str: account uuid4 in format "xxxxxxxx-xxxx-4xxx-{8-9}xx-xxxxxxxxxxxx", to which this handler belong
account_id = Column(String(36), nullable=False)
#: DateTime: date and time of creation handler
create_time = Column(TIMESTAMP, server_default=DB_CURRENT_TIMESTAMP, nullable=False)
#: DateTime: date and time of last change of the handler
last_update_time = Column(TIMESTAMP, server_default=DB_CURRENT_TIMESTAMP, nullable=False)
#: str: a client handler description
description = Column(String(128), index=True)
#: str: json with policies
policies = Column(CLOB) if DBConfig.dbType == "oracle" else Column(String)
#: int: handler type
handler_type = Column(SmallInteger, nullable=False)
#: str: lambda id, uuid4 in format "xxxxxxxx-xxxx-4xxx-{8-9}xx-xxxxxxxxxxxx"
lambda_id = Column(String(36), nullable=True)
ix_handler_account_id_create_time = Index("ix_handlers_account_id_create_time", "account_id", "create_time")
[docs]
@classmethod
def getColumnNames(cls) -> List[str]:
"""
Get all column name of table.
Returns:
list of column name in order as in db
"""
return cls.__table__.columns._data._list
[docs]
class Verifier(Base):
"""
Database table model for verifiers.
"""
__tablename__ = "verifier"
#: str: verifier id
verifier_id = Column(String(36), primary_key=True)
#: str: account id
account_id = Column(String(36), nullable=False)
#: DateTime: verifier creation time
create_time = Column(TIMESTAMP, server_default=DB_CURRENT_TIMESTAMP, nullable=False)
#: DateTime: verifier last update time
last_update_time = Column(TIMESTAMP, server_default=DB_CURRENT_TIMESTAMP, nullable=False)
#: str: verifier description
description = Column(String(128), index=True)
#: str: verifier policies
policies = Column(CLOB) if DBConfig.dbType == "oracle" else Column(String)
#: int: verifier version
version = Column(Integer, server_default="0", nullable=False)
ix_verifier_account_id_create_time = Index("ix_verifier_account_id_create_time", account_id, create_time)
[docs]
@classmethod
def getColumnNames(cls) -> List[str]:
"""
Get all column name of table.
Returns:
list of column name in order as in db
"""
return cls.__table__.columns._data._list