|
import json |
|
from enum import Enum |
|
|
|
from extensions.ext_database import db |
|
|
|
from .types import StringUUID |
|
|
|
|
|
class ToolProviderName(Enum): |
|
SERPAPI = "serpapi" |
|
|
|
@staticmethod |
|
def value_of(value): |
|
for member in ToolProviderName: |
|
if member.value == value: |
|
return member |
|
raise ValueError(f"No matching enum found for value '{value}'") |
|
|
|
|
|
class ToolProvider(db.Model): |
|
__tablename__ = "tool_providers" |
|
__table_args__ = ( |
|
db.PrimaryKeyConstraint("id", name="tool_provider_pkey"), |
|
db.UniqueConstraint("tenant_id", "tool_name", name="unique_tool_provider_tool_name"), |
|
) |
|
|
|
id = db.Column(StringUUID, server_default=db.text("uuid_generate_v4()")) |
|
tenant_id = db.Column(StringUUID, nullable=False) |
|
tool_name = db.Column(db.String(40), nullable=False) |
|
encrypted_credentials = db.Column(db.Text, nullable=True) |
|
is_enabled = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) |
|
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) |
|
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) |
|
|
|
@property |
|
def credentials_is_set(self): |
|
""" |
|
Returns True if the encrypted_config is not None, indicating that the token is set. |
|
""" |
|
return self.encrypted_credentials is not None |
|
|
|
@property |
|
def credentials(self): |
|
""" |
|
Returns the decrypted config. |
|
""" |
|
return json.loads(self.encrypted_credentials) if self.encrypted_credentials is not None else None |
|
|