chore(db): use a better way to export models and remove unused table (#11838)
Signed-off-by: -LAN- <laipz8200@outlook.com>pull/11887/head
parent
2d186e1e76
commit
3599751f93
@ -0,0 +1,39 @@
|
|||||||
|
"""remove unused tool_providers
|
||||||
|
|
||||||
|
Revision ID: 11b07f66c737
|
||||||
|
Revises: cf8f4fc45278
|
||||||
|
Create Date: 2024-12-19 17:46:25.780116
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import models as models
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from sqlalchemy.dialects import postgresql
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '11b07f66c737'
|
||||||
|
down_revision = 'cf8f4fc45278'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_table('tool_providers')
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.create_table('tool_providers',
|
||||||
|
sa.Column('id', sa.UUID(), server_default=sa.text('uuid_generate_v4()'), autoincrement=False, nullable=False),
|
||||||
|
sa.Column('tenant_id', sa.UUID(), autoincrement=False, nullable=False),
|
||||||
|
sa.Column('tool_name', sa.VARCHAR(length=40), autoincrement=False, nullable=False),
|
||||||
|
sa.Column('encrypted_credentials', sa.TEXT(), autoincrement=False, nullable=True),
|
||||||
|
sa.Column('is_enabled', sa.BOOLEAN(), server_default=sa.text('false'), autoincrement=False, nullable=False),
|
||||||
|
sa.Column('created_at', postgresql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP(0)'), autoincrement=False, nullable=False),
|
||||||
|
sa.Column('updated_at', postgresql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP(0)'), autoincrement=False, nullable=False),
|
||||||
|
sa.PrimaryKeyConstraint('id', name='tool_provider_pkey'),
|
||||||
|
sa.UniqueConstraint('tenant_id', 'tool_name', name='unique_tool_provider_tool_name')
|
||||||
|
)
|
||||||
|
# ### end Alembic commands ###
|
||||||
@ -1,53 +1,187 @@
|
|||||||
from .account import Account, AccountIntegrate, InvitationCode, Tenant
|
from .account import (
|
||||||
from .dataset import Dataset, DatasetProcessRule, Document, DocumentSegment
|
Account,
|
||||||
|
AccountIntegrate,
|
||||||
|
AccountStatus,
|
||||||
|
InvitationCode,
|
||||||
|
Tenant,
|
||||||
|
TenantAccountJoin,
|
||||||
|
TenantAccountJoinRole,
|
||||||
|
TenantAccountRole,
|
||||||
|
TenantStatus,
|
||||||
|
)
|
||||||
|
from .api_based_extension import APIBasedExtension, APIBasedExtensionPoint
|
||||||
|
from .dataset import (
|
||||||
|
AppDatasetJoin,
|
||||||
|
Dataset,
|
||||||
|
DatasetCollectionBinding,
|
||||||
|
DatasetKeywordTable,
|
||||||
|
DatasetPermission,
|
||||||
|
DatasetPermissionEnum,
|
||||||
|
DatasetProcessRule,
|
||||||
|
DatasetQuery,
|
||||||
|
Document,
|
||||||
|
DocumentSegment,
|
||||||
|
Embedding,
|
||||||
|
ExternalKnowledgeApis,
|
||||||
|
ExternalKnowledgeBindings,
|
||||||
|
TidbAuthBinding,
|
||||||
|
Whitelist,
|
||||||
|
)
|
||||||
|
from .engine import db
|
||||||
|
from .enums import CreatedByRole, UserFrom, WorkflowRunTriggeredFrom
|
||||||
from .model import (
|
from .model import (
|
||||||
|
ApiRequest,
|
||||||
ApiToken,
|
ApiToken,
|
||||||
App,
|
App,
|
||||||
|
AppAnnotationHitHistory,
|
||||||
|
AppAnnotationSetting,
|
||||||
AppMode,
|
AppMode,
|
||||||
|
AppModelConfig,
|
||||||
Conversation,
|
Conversation,
|
||||||
|
DatasetRetrieverResource,
|
||||||
|
DifySetup,
|
||||||
EndUser,
|
EndUser,
|
||||||
|
IconType,
|
||||||
InstalledApp,
|
InstalledApp,
|
||||||
Message,
|
Message,
|
||||||
|
MessageAgentThought,
|
||||||
MessageAnnotation,
|
MessageAnnotation,
|
||||||
|
MessageChain,
|
||||||
|
MessageFeedback,
|
||||||
MessageFile,
|
MessageFile,
|
||||||
|
OperationLog,
|
||||||
RecommendedApp,
|
RecommendedApp,
|
||||||
Site,
|
Site,
|
||||||
|
Tag,
|
||||||
|
TagBinding,
|
||||||
|
TraceAppConfig,
|
||||||
UploadFile,
|
UploadFile,
|
||||||
)
|
)
|
||||||
from .source import DataSourceOauthBinding
|
from .provider import (
|
||||||
from .tools import ToolFile
|
LoadBalancingModelConfig,
|
||||||
|
Provider,
|
||||||
|
ProviderModel,
|
||||||
|
ProviderModelSetting,
|
||||||
|
ProviderOrder,
|
||||||
|
ProviderQuotaType,
|
||||||
|
ProviderType,
|
||||||
|
TenantDefaultModel,
|
||||||
|
TenantPreferredModelProvider,
|
||||||
|
)
|
||||||
|
from .source import DataSourceApiKeyAuthBinding, DataSourceOauthBinding
|
||||||
|
from .task import CeleryTask, CeleryTaskSet
|
||||||
|
from .tools import (
|
||||||
|
ApiToolProvider,
|
||||||
|
BuiltinToolProvider,
|
||||||
|
PublishedAppTool,
|
||||||
|
ToolConversationVariables,
|
||||||
|
ToolFile,
|
||||||
|
ToolLabelBinding,
|
||||||
|
ToolModelInvoke,
|
||||||
|
WorkflowToolProvider,
|
||||||
|
)
|
||||||
|
from .web import PinnedConversation, SavedMessage
|
||||||
from .workflow import (
|
from .workflow import (
|
||||||
ConversationVariable,
|
ConversationVariable,
|
||||||
Workflow,
|
Workflow,
|
||||||
WorkflowAppLog,
|
WorkflowAppLog,
|
||||||
|
WorkflowAppLogCreatedFrom,
|
||||||
|
WorkflowNodeExecution,
|
||||||
|
WorkflowNodeExecutionStatus,
|
||||||
|
WorkflowNodeExecutionTriggeredFrom,
|
||||||
WorkflowRun,
|
WorkflowRun,
|
||||||
|
WorkflowRunStatus,
|
||||||
|
WorkflowType,
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
"APIBasedExtension",
|
||||||
|
"APIBasedExtensionPoint",
|
||||||
"Account",
|
"Account",
|
||||||
"AccountIntegrate",
|
"AccountIntegrate",
|
||||||
|
"AccountStatus",
|
||||||
|
"ApiRequest",
|
||||||
"ApiToken",
|
"ApiToken",
|
||||||
|
"ApiToolProvider", # Added
|
||||||
"App",
|
"App",
|
||||||
|
"AppAnnotationHitHistory",
|
||||||
|
"AppAnnotationSetting",
|
||||||
|
"AppDatasetJoin",
|
||||||
"AppMode",
|
"AppMode",
|
||||||
|
"AppModelConfig",
|
||||||
|
"BuiltinToolProvider", # Added
|
||||||
|
"CeleryTask",
|
||||||
|
"CeleryTaskSet",
|
||||||
"Conversation",
|
"Conversation",
|
||||||
"ConversationVariable",
|
"ConversationVariable",
|
||||||
|
"CreatedByRole",
|
||||||
|
"DataSourceApiKeyAuthBinding",
|
||||||
"DataSourceOauthBinding",
|
"DataSourceOauthBinding",
|
||||||
"Dataset",
|
"Dataset",
|
||||||
|
"DatasetCollectionBinding",
|
||||||
|
"DatasetKeywordTable",
|
||||||
|
"DatasetPermission",
|
||||||
|
"DatasetPermissionEnum",
|
||||||
"DatasetProcessRule",
|
"DatasetProcessRule",
|
||||||
|
"DatasetQuery",
|
||||||
|
"DatasetRetrieverResource",
|
||||||
|
"DifySetup",
|
||||||
"Document",
|
"Document",
|
||||||
"DocumentSegment",
|
"DocumentSegment",
|
||||||
|
"Embedding",
|
||||||
"EndUser",
|
"EndUser",
|
||||||
|
"ExternalKnowledgeApis",
|
||||||
|
"ExternalKnowledgeBindings",
|
||||||
|
"IconType",
|
||||||
"InstalledApp",
|
"InstalledApp",
|
||||||
"InvitationCode",
|
"InvitationCode",
|
||||||
|
"LoadBalancingModelConfig",
|
||||||
"Message",
|
"Message",
|
||||||
|
"MessageAgentThought",
|
||||||
"MessageAnnotation",
|
"MessageAnnotation",
|
||||||
|
"MessageChain",
|
||||||
|
"MessageFeedback",
|
||||||
"MessageFile",
|
"MessageFile",
|
||||||
|
"OperationLog",
|
||||||
|
"PinnedConversation",
|
||||||
|
"Provider",
|
||||||
|
"ProviderModel",
|
||||||
|
"ProviderModelSetting",
|
||||||
|
"ProviderOrder",
|
||||||
|
"ProviderQuotaType",
|
||||||
|
"ProviderType",
|
||||||
|
"PublishedAppTool",
|
||||||
"RecommendedApp",
|
"RecommendedApp",
|
||||||
|
"SavedMessage",
|
||||||
"Site",
|
"Site",
|
||||||
|
"Tag",
|
||||||
|
"TagBinding",
|
||||||
"Tenant",
|
"Tenant",
|
||||||
|
"TenantAccountJoin",
|
||||||
|
"TenantAccountJoinRole",
|
||||||
|
"TenantAccountRole",
|
||||||
|
"TenantDefaultModel",
|
||||||
|
"TenantPreferredModelProvider",
|
||||||
|
"TenantStatus",
|
||||||
|
"TidbAuthBinding",
|
||||||
|
"ToolConversationVariables",
|
||||||
"ToolFile",
|
"ToolFile",
|
||||||
|
"ToolLabelBinding",
|
||||||
|
"ToolModelInvoke",
|
||||||
|
"TraceAppConfig",
|
||||||
"UploadFile",
|
"UploadFile",
|
||||||
|
"UserFrom",
|
||||||
|
"Whitelist",
|
||||||
"Workflow",
|
"Workflow",
|
||||||
"WorkflowAppLog",
|
"WorkflowAppLog",
|
||||||
|
"WorkflowAppLogCreatedFrom",
|
||||||
|
"WorkflowNodeExecution",
|
||||||
|
"WorkflowNodeExecutionStatus",
|
||||||
|
"WorkflowNodeExecutionTriggeredFrom",
|
||||||
"WorkflowRun",
|
"WorkflowRun",
|
||||||
|
"WorkflowRunStatus",
|
||||||
|
"WorkflowRunTriggeredFrom",
|
||||||
|
"WorkflowToolProvider",
|
||||||
|
"WorkflowType",
|
||||||
|
"db",
|
||||||
]
|
]
|
||||||
|
|||||||
@ -0,0 +1,13 @@
|
|||||||
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
|
from sqlalchemy import MetaData
|
||||||
|
|
||||||
|
POSTGRES_INDEXES_NAMING_CONVENTION = {
|
||||||
|
"ix": "%(column_0_label)s_idx",
|
||||||
|
"uq": "%(table_name)s_%(column_0_name)s_key",
|
||||||
|
"ck": "%(table_name)s_%(constraint_name)s_check",
|
||||||
|
"fk": "%(table_name)s_%(column_0_name)s_fkey",
|
||||||
|
"pk": "%(table_name)s_pkey",
|
||||||
|
}
|
||||||
|
|
||||||
|
metadata = MetaData(naming_convention=POSTGRES_INDEXES_NAMING_CONVENTION)
|
||||||
|
db = SQLAlchemy(metadata=metadata)
|
||||||
@ -1,47 +0,0 @@
|
|||||||
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
|
|
||||||
Loading…
Reference in New Issue