pull/22885/merge
Asuka Minato 7 months ago committed by GitHub
commit 43df2b5db4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -6,6 +6,7 @@ from typing import Optional, cast
from flask_login import UserMixin # type: ignore from flask_login import UserMixin # type: ignore
from sqlalchemy import func, select from sqlalchemy import func, select
from sqlalchemy.orm import Mapped, mapped_column, reconstructor from sqlalchemy.orm import Mapped, mapped_column, reconstructor
from sqlalchemy.types import String
from models.base import Base from models.base import Base
@ -86,20 +87,20 @@ class Account(UserMixin, Base):
__table_args__ = (db.PrimaryKeyConstraint("id", name="account_pkey"), db.Index("account_email_idx", "email")) __table_args__ = (db.PrimaryKeyConstraint("id", name="account_pkey"), db.Index("account_email_idx", "email"))
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
name: Mapped[str] = mapped_column(db.String(255)) name: Mapped[str] = mapped_column(String(255))
email: Mapped[str] = mapped_column(db.String(255)) email: Mapped[str] = mapped_column(String(255))
password: Mapped[Optional[str]] = mapped_column(db.String(255)) password: Mapped[Optional[str]] = mapped_column(String(255))
password_salt: Mapped[Optional[str]] = mapped_column(db.String(255)) password_salt: Mapped[Optional[str]] = mapped_column(String(255))
avatar: Mapped[Optional[str]] = mapped_column(db.String(255), nullable=True) avatar: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
interface_language: Mapped[Optional[str]] = mapped_column(db.String(255)) interface_language: Mapped[Optional[str]] = mapped_column(String(255))
interface_theme: Mapped[Optional[str]] = mapped_column(db.String(255), nullable=True) interface_theme: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
timezone: Mapped[Optional[str]] = mapped_column(db.String(255)) timezone: Mapped[Optional[str]] = mapped_column(String(255))
last_login_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime, nullable=True) last_login_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime, nullable=True)
last_login_ip: Mapped[Optional[str]] = mapped_column(db.String(255), nullable=True) last_login_ip: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
last_active_at: Mapped[datetime] = mapped_column( last_active_at: Mapped[datetime] = mapped_column(
db.DateTime, server_default=func.current_timestamp(), nullable=False db.DateTime, server_default=func.current_timestamp(), nullable=False
) )
status: Mapped[str] = mapped_column(db.String(16), server_default=db.text("'active'::character varying")) status: Mapped[str] = mapped_column(String(16), server_default=db.text("'active'::character varying"))
initialized_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime, nullable=True) initialized_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime, nullable=True)
created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp(), nullable=False) created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp(), nullable=False)
updated_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp(), nullable=False) updated_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp(), nullable=False)
@ -200,10 +201,10 @@ class Tenant(Base):
__table_args__ = (db.PrimaryKeyConstraint("id", name="tenant_pkey"),) __table_args__ = (db.PrimaryKeyConstraint("id", name="tenant_pkey"),)
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
name: Mapped[str] = mapped_column(db.String(255)) name: Mapped[str] = mapped_column(String(255))
encrypt_public_key = db.Column(db.Text) encrypt_public_key = db.Column(db.Text)
plan: Mapped[str] = mapped_column(db.String(255), server_default=db.text("'basic'::character varying")) plan: Mapped[str] = mapped_column(String(255), server_default=db.text("'basic'::character varying"))
status: Mapped[str] = mapped_column(db.String(255), server_default=db.text("'normal'::character varying")) status: Mapped[str] = mapped_column(String(255), server_default=db.text("'normal'::character varying"))
custom_config: Mapped[Optional[str]] = mapped_column(db.Text) custom_config: Mapped[Optional[str]] = mapped_column(db.Text)
created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp(), nullable=False) created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp(), nullable=False)
updated_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp()) updated_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp())
@ -237,7 +238,7 @@ class TenantAccountJoin(Base):
tenant_id: Mapped[str] = mapped_column(StringUUID) tenant_id: Mapped[str] = mapped_column(StringUUID)
account_id: Mapped[str] = mapped_column(StringUUID) account_id: Mapped[str] = mapped_column(StringUUID)
current: Mapped[bool] = mapped_column(db.Boolean, server_default=db.text("false")) current: Mapped[bool] = mapped_column(db.Boolean, server_default=db.text("false"))
role: Mapped[str] = mapped_column(db.String(16), server_default="normal") role: Mapped[str] = mapped_column(String(16), server_default="normal")
invited_by: Mapped[Optional[str]] = mapped_column(StringUUID) invited_by: Mapped[Optional[str]] = mapped_column(StringUUID)
created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp())
updated_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp()) updated_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp())
@ -253,9 +254,9 @@ class AccountIntegrate(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
account_id: Mapped[str] = mapped_column(StringUUID) account_id: Mapped[str] = mapped_column(StringUUID)
provider: Mapped[str] = mapped_column(db.String(16)) provider: Mapped[str] = mapped_column(String(16))
open_id: Mapped[str] = mapped_column(db.String(255)) open_id: Mapped[str] = mapped_column(String(255))
encrypted_token: Mapped[str] = mapped_column(db.String(255)) encrypted_token: Mapped[str] = mapped_column(String(255))
created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp())
updated_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp()) updated_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp())
@ -269,9 +270,9 @@ class InvitationCode(Base):
) )
id: Mapped[int] = mapped_column(db.Integer) id: Mapped[int] = mapped_column(db.Integer)
batch: Mapped[str] = mapped_column(db.String(255)) batch: Mapped[str] = mapped_column(String(255))
code: Mapped[str] = mapped_column(db.String(32)) code: Mapped[str] = mapped_column(String(32))
status: Mapped[str] = mapped_column(db.String(16), server_default=db.text("'unused'::character varying")) status: Mapped[str] = mapped_column(String(16), server_default=db.text("'unused'::character varying"))
used_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime) used_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime)
used_by_tenant_id: Mapped[Optional[str]] = mapped_column(StringUUID) used_by_tenant_id: Mapped[Optional[str]] = mapped_column(StringUUID)
used_by_account_id: Mapped[Optional[str]] = mapped_column(StringUUID) used_by_account_id: Mapped[Optional[str]] = mapped_column(StringUUID)
@ -298,10 +299,8 @@ class TenantPluginPermission(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
install_permission: Mapped[InstallPermission] = mapped_column( install_permission: Mapped[InstallPermission] = mapped_column(String(16), nullable=False, server_default="everyone")
db.String(16), nullable=False, server_default="everyone" debug_permission: Mapped[DebugPermission] = mapped_column(String(16), nullable=False, server_default="noone")
)
debug_permission: Mapped[DebugPermission] = mapped_column(db.String(16), nullable=False, server_default="noone")
class TenantPluginAutoUpgradeStrategy(Base): class TenantPluginAutoUpgradeStrategy(Base):
@ -323,14 +322,10 @@ class TenantPluginAutoUpgradeStrategy(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
strategy_setting: Mapped[StrategySetting] = mapped_column(db.String(16), nullable=False, server_default="fix_only") strategy_setting: Mapped[StrategySetting] = mapped_column(String(16), nullable=False, server_default="fix_only")
upgrade_time_of_day: Mapped[int] = mapped_column(db.Integer, nullable=False, default=0) # seconds of the day upgrade_time_of_day: Mapped[int] = mapped_column(db.Integer, nullable=False, default=0) # seconds of the day
upgrade_mode: Mapped[UpgradeMode] = mapped_column(db.String(16), nullable=False, server_default="exclude") upgrade_mode: Mapped[UpgradeMode] = mapped_column(String(16), nullable=False, server_default="exclude")
exclude_plugins: Mapped[list[str]] = mapped_column( exclude_plugins: Mapped[list[str]] = mapped_column(db.ARRAY(String(255)), nullable=False) # plugin_id (author/name)
db.ARRAY(db.String(255)), nullable=False include_plugins: Mapped[list[str]] = mapped_column(db.ARRAY(String(255)), nullable=False) # plugin_id (author/name)
) # plugin_id (author/name)
include_plugins: Mapped[list[str]] = mapped_column(
db.ARRAY(db.String(255)), nullable=False
) # plugin_id (author/name)
created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())

@ -2,6 +2,7 @@ import enum
from sqlalchemy import func from sqlalchemy import func
from sqlalchemy.orm import mapped_column from sqlalchemy.orm import mapped_column
from sqlalchemy.types import DateTime, String, Text
from .base import Base from .base import Base
from .engine import db from .engine import db
@ -24,7 +25,7 @@ class APIBasedExtension(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
name = mapped_column(db.String(255), nullable=False) name = mapped_column(String(255), nullable=False)
api_endpoint = mapped_column(db.String(255), nullable=False) api_endpoint = mapped_column(String(255), nullable=False)
api_key = mapped_column(db.Text, nullable=False) api_key = mapped_column(Text, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())

@ -1,7 +1,15 @@
from typing import Annotated
from sqlalchemy.orm import DeclarativeBase from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.types import String
from models.engine import metadata from models.engine import metadata
str50 = Annotated[str, 50]
class Base(DeclarativeBase): class Base(DeclarativeBase):
metadata = metadata metadata = metadata
type_annotation_map = {
str50: String(50),
}

@ -15,6 +15,7 @@ from typing import Any, Optional, cast
from sqlalchemy import func, select from sqlalchemy import func, select
from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.types import String
from configs import dify_config from configs import dify_config
from core.rag.index_processor.constant.built_in_field import BuiltInField, MetadataDataSource from core.rag.index_processor.constant.built_in_field import BuiltInField, MetadataDataSource
@ -48,19 +49,19 @@ class Dataset(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID) tenant_id: Mapped[str] = mapped_column(StringUUID)
name: Mapped[str] = mapped_column(db.String(255)) name: Mapped[str] = mapped_column(String(255))
description = mapped_column(db.Text, nullable=True) description = mapped_column(db.Text, nullable=True)
provider: Mapped[str] = mapped_column(db.String(255), server_default=db.text("'vendor'::character varying")) provider: Mapped[str] = mapped_column(String(255), server_default=db.text("'vendor'::character varying"))
permission: Mapped[str] = mapped_column(db.String(255), server_default=db.text("'only_me'::character varying")) permission: Mapped[str] = mapped_column(String(255), server_default=db.text("'only_me'::character varying"))
data_source_type = mapped_column(db.String(255)) data_source_type = mapped_column(String(255))
indexing_technique: Mapped[Optional[str]] = mapped_column(db.String(255)) indexing_technique: Mapped[Optional[str]] = mapped_column(String(255))
index_struct = mapped_column(db.Text, nullable=True) index_struct = mapped_column(db.Text, nullable=True)
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = mapped_column(StringUUID, nullable=True) updated_by = mapped_column(StringUUID, nullable=True)
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
embedding_model = db.Column(db.String(255), nullable=True) # TODO: mapped_column embedding_model = db.Column(String(255), nullable=True) # TODO: mapped_column
embedding_model_provider = db.Column(db.String(255), nullable=True) # TODO: mapped_column embedding_model_provider = db.Column(String(255), nullable=True) # TODO: mapped_column
collection_binding_id = mapped_column(StringUUID, nullable=True) collection_binding_id = mapped_column(StringUUID, nullable=True)
retrieval_model = mapped_column(JSONB, nullable=True) retrieval_model = mapped_column(JSONB, nullable=True)
built_in_field_enabled = mapped_column(db.Boolean, nullable=False, server_default=db.text("false")) built_in_field_enabled = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
@ -268,7 +269,7 @@ class DatasetProcessRule(Base):
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
dataset_id = mapped_column(StringUUID, nullable=False) dataset_id = mapped_column(StringUUID, nullable=False)
mode = mapped_column(db.String(255), nullable=False, server_default=db.text("'automatic'::character varying")) mode = mapped_column(String(255), nullable=False, server_default=db.text("'automatic'::character varying"))
rules = mapped_column(db.Text, nullable=True) rules = mapped_column(db.Text, nullable=True)
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -314,12 +315,12 @@ class Document(Base):
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
dataset_id = mapped_column(StringUUID, nullable=False) dataset_id = mapped_column(StringUUID, nullable=False)
position = mapped_column(db.Integer, nullable=False) position = mapped_column(db.Integer, nullable=False)
data_source_type = mapped_column(db.String(255), nullable=False) data_source_type = mapped_column(String(255), nullable=False)
data_source_info = mapped_column(db.Text, nullable=True) data_source_info = mapped_column(db.Text, nullable=True)
dataset_process_rule_id = mapped_column(StringUUID, nullable=True) dataset_process_rule_id = mapped_column(StringUUID, nullable=True)
batch = mapped_column(db.String(255), nullable=False) batch = mapped_column(String(255), nullable=False)
name = mapped_column(db.String(255), nullable=False) name = mapped_column(String(255), nullable=False)
created_from = mapped_column(db.String(255), nullable=False) created_from = mapped_column(String(255), nullable=False)
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_api_request_id = mapped_column(StringUUID, nullable=True) created_api_request_id = mapped_column(StringUUID, nullable=True)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -353,21 +354,19 @@ class Document(Base):
stopped_at = mapped_column(db.DateTime, nullable=True) stopped_at = mapped_column(db.DateTime, nullable=True)
# basic fields # basic fields
indexing_status = mapped_column( indexing_status = mapped_column(String(255), nullable=False, server_default=db.text("'waiting'::character varying"))
db.String(255), nullable=False, server_default=db.text("'waiting'::character varying")
)
enabled = mapped_column(db.Boolean, nullable=False, server_default=db.text("true")) enabled = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
disabled_at = mapped_column(db.DateTime, nullable=True) disabled_at = mapped_column(db.DateTime, nullable=True)
disabled_by = mapped_column(StringUUID, nullable=True) disabled_by = mapped_column(StringUUID, nullable=True)
archived = mapped_column(db.Boolean, nullable=False, server_default=db.text("false")) archived = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
archived_reason = mapped_column(db.String(255), nullable=True) archived_reason = mapped_column(String(255), nullable=True)
archived_by = mapped_column(StringUUID, nullable=True) archived_by = mapped_column(StringUUID, nullable=True)
archived_at = mapped_column(db.DateTime, nullable=True) archived_at = mapped_column(db.DateTime, nullable=True)
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
doc_type = mapped_column(db.String(40), nullable=True) doc_type = mapped_column(String(40), nullable=True)
doc_metadata = mapped_column(JSONB, nullable=True) doc_metadata = mapped_column(JSONB, nullable=True)
doc_form = mapped_column(db.String(255), nullable=False, server_default=db.text("'text_model'::character varying")) doc_form = mapped_column(String(255), nullable=False, server_default=db.text("'text_model'::character varying"))
doc_language = mapped_column(db.String(255), nullable=True) doc_language = mapped_column(String(255), nullable=True)
DATA_SOURCES = ["upload_file", "notion_import", "website_crawl"] DATA_SOURCES = ["upload_file", "notion_import", "website_crawl"]
@ -667,15 +666,15 @@ class DocumentSegment(Base):
# indexing fields # indexing fields
keywords = mapped_column(db.JSON, nullable=True) keywords = mapped_column(db.JSON, nullable=True)
index_node_id = mapped_column(db.String(255), nullable=True) index_node_id = mapped_column(String(255), nullable=True)
index_node_hash = mapped_column(db.String(255), nullable=True) index_node_hash = mapped_column(String(255), nullable=True)
# basic fields # basic fields
hit_count = mapped_column(db.Integer, nullable=False, default=0) hit_count = mapped_column(db.Integer, nullable=False, default=0)
enabled = mapped_column(db.Boolean, nullable=False, server_default=db.text("true")) enabled = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
disabled_at = mapped_column(db.DateTime, nullable=True) disabled_at = mapped_column(db.DateTime, nullable=True)
disabled_by = mapped_column(StringUUID, nullable=True) disabled_by = mapped_column(StringUUID, nullable=True)
status: Mapped[str] = mapped_column(db.String(255), server_default=db.text("'waiting'::character varying")) status: Mapped[str] = mapped_column(String(255), server_default=db.text("'waiting'::character varying"))
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = mapped_column(StringUUID, nullable=True) updated_by = mapped_column(StringUUID, nullable=True)
@ -812,9 +811,9 @@ class ChildChunk(Base):
content = mapped_column(db.Text, nullable=False) content = mapped_column(db.Text, nullable=False)
word_count = mapped_column(db.Integer, nullable=False) word_count = mapped_column(db.Integer, nullable=False)
# indexing fields # indexing fields
index_node_id = mapped_column(db.String(255), nullable=True) index_node_id = mapped_column(String(255), nullable=True)
index_node_hash = mapped_column(db.String(255), nullable=True) index_node_hash = mapped_column(String(255), nullable=True)
type = mapped_column(db.String(255), nullable=False, server_default=db.text("'automatic'::character varying")) type = mapped_column(String(255), nullable=False, server_default=db.text("'automatic'::character varying"))
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)"))
updated_by = mapped_column(StringUUID, nullable=True) updated_by = mapped_column(StringUUID, nullable=True)
@ -863,9 +862,9 @@ class DatasetQuery(Base):
id = mapped_column(StringUUID, primary_key=True, nullable=False, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, primary_key=True, nullable=False, server_default=db.text("uuid_generate_v4()"))
dataset_id = mapped_column(StringUUID, nullable=False) dataset_id = mapped_column(StringUUID, nullable=False)
content = mapped_column(db.Text, nullable=False) content = mapped_column(db.Text, nullable=False)
source = mapped_column(db.String(255), nullable=False) source = mapped_column(String(255), nullable=False)
source_app_id = mapped_column(StringUUID, nullable=True) source_app_id = mapped_column(StringUUID, nullable=True)
created_by_role = mapped_column(db.String, nullable=False) created_by_role = mapped_column(String, nullable=False)
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=db.func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=db.func.current_timestamp())
@ -881,7 +880,7 @@ class DatasetKeywordTable(Base):
dataset_id = mapped_column(StringUUID, nullable=False, unique=True) dataset_id = mapped_column(StringUUID, nullable=False, unique=True)
keyword_table = mapped_column(db.Text, nullable=False) keyword_table = mapped_column(db.Text, nullable=False)
data_source_type = mapped_column( data_source_type = mapped_column(
db.String(255), nullable=False, server_default=db.text("'database'::character varying") String(255), nullable=False, server_default=db.text("'database'::character varying")
) )
@property @property
@ -925,12 +924,12 @@ class Embedding(Base):
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
model_name = mapped_column( model_name = mapped_column(
db.String(255), nullable=False, server_default=db.text("'text-embedding-ada-002'::character varying") String(255), nullable=False, server_default=db.text("'text-embedding-ada-002'::character varying")
) )
hash = mapped_column(db.String(64), nullable=False) hash = mapped_column(String(64), nullable=False)
embedding = mapped_column(db.LargeBinary, nullable=False) embedding = mapped_column(db.LargeBinary, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
provider_name = mapped_column(db.String(255), nullable=False, server_default=db.text("''::character varying")) provider_name = mapped_column(String(255), nullable=False, server_default=db.text("''::character varying"))
def set_embedding(self, embedding_data: list[float]): def set_embedding(self, embedding_data: list[float]):
self.embedding = pickle.dumps(embedding_data, protocol=pickle.HIGHEST_PROTOCOL) self.embedding = pickle.dumps(embedding_data, protocol=pickle.HIGHEST_PROTOCOL)
@ -947,10 +946,10 @@ class DatasetCollectionBinding(Base):
) )
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
provider_name = mapped_column(db.String(255), nullable=False) provider_name = mapped_column(String(255), nullable=False)
model_name = mapped_column(db.String(255), nullable=False) model_name = mapped_column(String(255), nullable=False)
type = mapped_column(db.String(40), server_default=db.text("'dataset'::character varying"), nullable=False) type = mapped_column(String(40), server_default=db.text("'dataset'::character varying"), nullable=False)
collection_name = mapped_column(db.String(64), nullable=False) collection_name = mapped_column(String(64), nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -965,12 +964,12 @@ class TidbAuthBinding(Base):
) )
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=True) tenant_id = mapped_column(StringUUID, nullable=True)
cluster_id = mapped_column(db.String(255), nullable=False) cluster_id = mapped_column(String(255), nullable=False)
cluster_name = mapped_column(db.String(255), nullable=False) cluster_name = mapped_column(String(255), nullable=False)
active = mapped_column(db.Boolean, nullable=False, server_default=db.text("false")) active = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
status = mapped_column(db.String(255), nullable=False, server_default=db.text("CREATING")) status = mapped_column(String(255), nullable=False, server_default=db.text("CREATING"))
account = mapped_column(db.String(255), nullable=False) account = mapped_column(String(255), nullable=False)
password = mapped_column(db.String(255), nullable=False) password = mapped_column(String(255), nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -982,7 +981,7 @@ class Whitelist(Base):
) )
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=True) tenant_id = mapped_column(StringUUID, nullable=True)
category = mapped_column(db.String(255), nullable=False) category = mapped_column(String(255), nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1012,8 +1011,8 @@ class ExternalKnowledgeApis(Base):
) )
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
name = mapped_column(db.String(255), nullable=False) name = mapped_column(String(255), nullable=False)
description = mapped_column(db.String(255), nullable=False) description = mapped_column(String(255), nullable=False)
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
settings = mapped_column(db.Text, nullable=True) settings = mapped_column(db.Text, nullable=True)
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
@ -1104,8 +1103,8 @@ class RateLimitLog(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
subscription_plan = mapped_column(db.String(255), nullable=False) subscription_plan = mapped_column(String(255), nullable=False)
operation = mapped_column(db.String(255), nullable=False) operation = mapped_column(String(255), nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)"))
@ -1120,8 +1119,8 @@ class DatasetMetadata(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
dataset_id = mapped_column(StringUUID, nullable=False) dataset_id = mapped_column(StringUUID, nullable=False)
type = mapped_column(db.String(255), nullable=False) type = mapped_column(String(255), nullable=False)
name = mapped_column(db.String(255), nullable=False) name = mapped_column(String(255), nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)"))
updated_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)"))
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)

@ -19,6 +19,7 @@ from flask import request
from flask_login import UserMixin from flask_login import UserMixin
from sqlalchemy import Float, Index, PrimaryKeyConstraint, func, text from sqlalchemy import Float, Index, PrimaryKeyConstraint, func, text
from sqlalchemy.orm import Mapped, Session, mapped_column from sqlalchemy.orm import Mapped, Session, mapped_column
from sqlalchemy.types import String
from configs import dify_config from configs import dify_config
from constants import DEFAULT_FILE_NUMBER_LIMITS from constants import DEFAULT_FILE_NUMBER_LIMITS
@ -40,7 +41,7 @@ class DifySetup(Base):
__tablename__ = "dify_setups" __tablename__ = "dify_setups"
__table_args__ = (db.PrimaryKeyConstraint("version", name="dify_setup_pkey"),) __table_args__ = (db.PrimaryKeyConstraint("version", name="dify_setup_pkey"),)
version = mapped_column(db.String(255), nullable=False) version = mapped_column(String(255), nullable=False)
setup_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) setup_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -76,15 +77,15 @@ class App(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID) tenant_id: Mapped[str] = mapped_column(StringUUID)
name: Mapped[str] = mapped_column(db.String(255)) name: Mapped[str] = mapped_column(String(255))
description: Mapped[str] = mapped_column(db.Text, server_default=db.text("''::character varying")) description: Mapped[str] = mapped_column(db.Text, server_default=db.text("''::character varying"))
mode: Mapped[str] = mapped_column(db.String(255)) mode: Mapped[str] = mapped_column(String(255))
icon_type: Mapped[Optional[str]] = mapped_column(db.String(255)) # image, emoji icon_type: Mapped[Optional[str]] = mapped_column(String(255)) # image, emoji
icon = db.Column(db.String(255)) icon = db.Column(String(255))
icon_background: Mapped[Optional[str]] = mapped_column(db.String(255)) icon_background: Mapped[Optional[str]] = mapped_column(String(255))
app_model_config_id = mapped_column(StringUUID, nullable=True) app_model_config_id = mapped_column(StringUUID, nullable=True)
workflow_id = mapped_column(StringUUID, nullable=True) workflow_id = mapped_column(StringUUID, nullable=True)
status: Mapped[str] = mapped_column(db.String(255), server_default=db.text("'normal'::character varying")) status: Mapped[str] = mapped_column(String(255), server_default=db.text("'normal'::character varying"))
enable_site: Mapped[bool] = mapped_column(db.Boolean) enable_site: Mapped[bool] = mapped_column(db.Boolean)
enable_api: Mapped[bool] = mapped_column(db.Boolean) enable_api: Mapped[bool] = mapped_column(db.Boolean)
api_rpm: Mapped[int] = mapped_column(db.Integer, server_default=db.text("0")) api_rpm: Mapped[int] = mapped_column(db.Integer, server_default=db.text("0"))
@ -309,8 +310,8 @@ class AppModelConfig(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
provider = mapped_column(db.String(255), nullable=True) provider = mapped_column(String(255), nullable=True)
model_id = mapped_column(db.String(255), nullable=True) model_id = mapped_column(String(255), nullable=True)
configs = mapped_column(db.JSON, nullable=True) configs = mapped_column(db.JSON, nullable=True)
created_by = mapped_column(StringUUID, nullable=True) created_by = mapped_column(StringUUID, nullable=True)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -324,12 +325,12 @@ class AppModelConfig(Base):
more_like_this = mapped_column(db.Text) more_like_this = mapped_column(db.Text)
model = mapped_column(db.Text) model = mapped_column(db.Text)
user_input_form = mapped_column(db.Text) user_input_form = mapped_column(db.Text)
dataset_query_variable = mapped_column(db.String(255)) dataset_query_variable = mapped_column(String(255))
pre_prompt = mapped_column(db.Text) pre_prompt = mapped_column(db.Text)
agent_mode = mapped_column(db.Text) agent_mode = mapped_column(db.Text)
sensitive_word_avoidance = mapped_column(db.Text) sensitive_word_avoidance = mapped_column(db.Text)
retriever_resource = mapped_column(db.Text) retriever_resource = mapped_column(db.Text)
prompt_type = mapped_column(db.String(255), nullable=False, server_default=db.text("'simple'::character varying")) prompt_type = mapped_column(String(255), nullable=False, server_default=db.text("'simple'::character varying"))
chat_prompt_config = mapped_column(db.Text) chat_prompt_config = mapped_column(db.Text)
completion_prompt_config = mapped_column(db.Text) completion_prompt_config = mapped_column(db.Text)
dataset_configs = mapped_column(db.Text) dataset_configs = mapped_column(db.Text)
@ -564,14 +565,14 @@ class RecommendedApp(Base):
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
description = mapped_column(db.JSON, nullable=False) description = mapped_column(db.JSON, nullable=False)
copyright = mapped_column(db.String(255), nullable=False) copyright = mapped_column(String(255), nullable=False)
privacy_policy = mapped_column(db.String(255), nullable=False) privacy_policy = mapped_column(String(255), nullable=False)
custom_disclaimer: Mapped[str] = mapped_column(sa.TEXT, default="") custom_disclaimer: Mapped[str] = mapped_column(sa.TEXT, default="")
category = mapped_column(db.String(255), nullable=False) category = mapped_column(String(255), nullable=False)
position = mapped_column(db.Integer, nullable=False, default=0) position = mapped_column(db.Integer, nullable=False, default=0)
is_listed = mapped_column(db.Boolean, nullable=False, default=True) is_listed = mapped_column(db.Boolean, nullable=False, default=True)
install_count = mapped_column(db.Integer, nullable=False, default=0) install_count = mapped_column(db.Integer, nullable=False, default=0)
language = mapped_column(db.String(255), nullable=False, server_default=db.text("'en-US'::character varying")) language = mapped_column(String(255), nullable=False, server_default=db.text("'en-US'::character varying"))
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -620,26 +621,26 @@ class Conversation(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
app_model_config_id = mapped_column(StringUUID, nullable=True) app_model_config_id = mapped_column(StringUUID, nullable=True)
model_provider = mapped_column(db.String(255), nullable=True) model_provider = mapped_column(String(255), nullable=True)
override_model_configs = mapped_column(db.Text) override_model_configs = mapped_column(db.Text)
model_id = mapped_column(db.String(255), nullable=True) model_id = mapped_column(String(255), nullable=True)
mode: Mapped[str] = mapped_column(db.String(255)) mode: Mapped[str] = mapped_column(String(255))
name = mapped_column(db.String(255), nullable=False) name = mapped_column(String(255), nullable=False)
summary = mapped_column(db.Text) summary = mapped_column(db.Text)
_inputs: Mapped[dict] = mapped_column("inputs", db.JSON) _inputs: Mapped[dict] = mapped_column("inputs", db.JSON)
introduction = mapped_column(db.Text) introduction = mapped_column(db.Text)
system_instruction = mapped_column(db.Text) system_instruction = mapped_column(db.Text)
system_instruction_tokens = mapped_column(db.Integer, nullable=False, server_default=db.text("0")) system_instruction_tokens = mapped_column(db.Integer, nullable=False, server_default=db.text("0"))
status = mapped_column(db.String(255), nullable=False) status = mapped_column(String(255), nullable=False)
# The `invoke_from` records how the conversation is created. # The `invoke_from` records how the conversation is created.
# #
# Its value corresponds to the members of `InvokeFrom`. # Its value corresponds to the members of `InvokeFrom`.
# (api/core/app/entities/app_invoke_entities.py) # (api/core/app/entities/app_invoke_entities.py)
invoke_from = mapped_column(db.String(255), nullable=True) invoke_from = mapped_column(String(255), nullable=True)
# ref: ConversationSource. # ref: ConversationSource.
from_source = mapped_column(db.String(255), nullable=False) from_source = mapped_column(String(255), nullable=False)
from_end_user_id = mapped_column(StringUUID) from_end_user_id = mapped_column(StringUUID)
from_account_id = mapped_column(StringUUID) from_account_id = mapped_column(StringUUID)
read_at = mapped_column(db.DateTime) read_at = mapped_column(db.DateTime)
@ -897,8 +898,8 @@ class Message(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
model_provider = mapped_column(db.String(255), nullable=True) model_provider = mapped_column(String(255), nullable=True)
model_id = mapped_column(db.String(255), nullable=True) model_id = mapped_column(String(255), nullable=True)
override_model_configs = mapped_column(db.Text) override_model_configs = mapped_column(db.Text)
conversation_id = mapped_column(StringUUID, db.ForeignKey("conversations.id"), nullable=False) conversation_id = mapped_column(StringUUID, db.ForeignKey("conversations.id"), nullable=False)
_inputs: Mapped[dict] = mapped_column("inputs", db.JSON) _inputs: Mapped[dict] = mapped_column("inputs", db.JSON)
@ -914,12 +915,12 @@ class Message(Base):
parent_message_id = mapped_column(StringUUID, nullable=True) parent_message_id = mapped_column(StringUUID, nullable=True)
provider_response_latency = mapped_column(db.Float, nullable=False, server_default=db.text("0")) provider_response_latency = mapped_column(db.Float, nullable=False, server_default=db.text("0"))
total_price = mapped_column(db.Numeric(10, 7)) total_price = mapped_column(db.Numeric(10, 7))
currency = mapped_column(db.String(255), nullable=False) currency = mapped_column(String(255), nullable=False)
status = mapped_column(db.String(255), nullable=False, server_default=db.text("'normal'::character varying")) status = mapped_column(String(255), nullable=False, server_default=db.text("'normal'::character varying"))
error = mapped_column(db.Text) error = mapped_column(db.Text)
message_metadata = mapped_column(db.Text) message_metadata = mapped_column(db.Text)
invoke_from: Mapped[Optional[str]] = mapped_column(db.String(255), nullable=True) invoke_from: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
from_source = mapped_column(db.String(255), nullable=False) from_source = mapped_column(String(255), nullable=False)
from_end_user_id: Mapped[Optional[str]] = mapped_column(StringUUID) from_end_user_id: Mapped[Optional[str]] = mapped_column(StringUUID)
from_account_id: Mapped[Optional[str]] = mapped_column(StringUUID) from_account_id: Mapped[Optional[str]] = mapped_column(StringUUID)
created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp())
@ -1241,9 +1242,9 @@ class MessageFeedback(Base):
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
conversation_id = mapped_column(StringUUID, nullable=False) conversation_id = mapped_column(StringUUID, nullable=False)
message_id = mapped_column(StringUUID, nullable=False) message_id = mapped_column(StringUUID, nullable=False)
rating = mapped_column(db.String(255), nullable=False) rating = mapped_column(String(255), nullable=False)
content = mapped_column(db.Text) content = mapped_column(db.Text)
from_source = mapped_column(db.String(255), nullable=False) from_source = mapped_column(String(255), nullable=False)
from_end_user_id = mapped_column(StringUUID) from_end_user_id = mapped_column(StringUUID)
from_account_id = mapped_column(StringUUID) from_account_id = mapped_column(StringUUID)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1301,12 +1302,12 @@ class MessageFile(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
message_id: Mapped[str] = mapped_column(StringUUID, nullable=False) message_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
type: Mapped[str] = mapped_column(db.String(255), nullable=False) type: Mapped[str] = mapped_column(String(255), nullable=False)
transfer_method: Mapped[str] = mapped_column(db.String(255), nullable=False) transfer_method: Mapped[str] = mapped_column(String(255), nullable=False)
url: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) url: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True)
belongs_to: Mapped[Optional[str]] = mapped_column(db.String(255), nullable=True) belongs_to: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
upload_file_id: Mapped[Optional[str]] = mapped_column(StringUUID, nullable=True) upload_file_id: Mapped[Optional[str]] = mapped_column(StringUUID, nullable=True)
created_by_role: Mapped[str] = mapped_column(db.String(255), nullable=False) created_by_role: Mapped[str] = mapped_column(String(255), nullable=False)
created_by: Mapped[str] = mapped_column(StringUUID, nullable=False) created_by: Mapped[str] = mapped_column(StringUUID, nullable=False)
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1418,10 +1419,10 @@ class OperationLog(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
account_id = mapped_column(StringUUID, nullable=False) account_id = mapped_column(StringUUID, nullable=False)
action = mapped_column(db.String(255), nullable=False) action = mapped_column(String(255), nullable=False)
content = mapped_column(db.JSON) content = mapped_column(db.JSON)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
created_ip = mapped_column(db.String(255), nullable=False) created_ip = mapped_column(String(255), nullable=False)
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1436,9 +1437,9 @@ class EndUser(Base, UserMixin):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
app_id = mapped_column(StringUUID, nullable=True) app_id = mapped_column(StringUUID, nullable=True)
type = mapped_column(db.String(255), nullable=False) type = mapped_column(String(255), nullable=False)
external_user_id = mapped_column(db.String(255), nullable=True) external_user_id = mapped_column(String(255), nullable=True)
name = mapped_column(db.String(255)) name = mapped_column(String(255))
is_anonymous = mapped_column(db.Boolean, nullable=False, server_default=db.text("true")) is_anonymous = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
session_id: Mapped[str] = mapped_column() session_id: Mapped[str] = mapped_column()
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1455,10 +1456,10 @@ class AppMCPServer(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
name = mapped_column(db.String(255), nullable=False) name = mapped_column(String(255), nullable=False)
description = mapped_column(db.String(255), nullable=False) description = mapped_column(String(255), nullable=False)
server_code = mapped_column(db.String(255), nullable=False) server_code = mapped_column(String(255), nullable=False)
status = mapped_column(db.String(255), nullable=False, server_default=db.text("'normal'::character varying")) status = mapped_column(String(255), nullable=False, server_default=db.text("'normal'::character varying"))
parameters = mapped_column(db.Text, nullable=False) parameters = mapped_column(db.Text, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1488,28 +1489,28 @@ class Site(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
title = mapped_column(db.String(255), nullable=False) title = mapped_column(String(255), nullable=False)
icon_type = mapped_column(db.String(255), nullable=True) icon_type = mapped_column(String(255), nullable=True)
icon = mapped_column(db.String(255)) icon = mapped_column(String(255))
icon_background = mapped_column(db.String(255)) icon_background = mapped_column(String(255))
description = mapped_column(db.Text) description = mapped_column(db.Text)
default_language = mapped_column(db.String(255), nullable=False) default_language = mapped_column(String(255), nullable=False)
chat_color_theme = mapped_column(db.String(255)) chat_color_theme = mapped_column(String(255))
chat_color_theme_inverted = mapped_column(db.Boolean, nullable=False, server_default=db.text("false")) chat_color_theme_inverted = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
copyright = mapped_column(db.String(255)) copyright = mapped_column(String(255))
privacy_policy = mapped_column(db.String(255)) privacy_policy = mapped_column(String(255))
show_workflow_steps = mapped_column(db.Boolean, nullable=False, server_default=db.text("true")) show_workflow_steps = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
use_icon_as_answer_icon = mapped_column(db.Boolean, nullable=False, server_default=db.text("false")) use_icon_as_answer_icon = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
_custom_disclaimer: Mapped[str] = mapped_column("custom_disclaimer", sa.TEXT, default="") _custom_disclaimer: Mapped[str] = mapped_column("custom_disclaimer", sa.TEXT, default="")
customize_domain = mapped_column(db.String(255)) customize_domain = mapped_column(String(255))
customize_token_strategy = mapped_column(db.String(255), nullable=False) customize_token_strategy = mapped_column(String(255), nullable=False)
prompt_public = mapped_column(db.Boolean, nullable=False, server_default=db.text("false")) prompt_public = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
status = mapped_column(db.String(255), nullable=False, server_default=db.text("'normal'::character varying")) status = mapped_column(String(255), nullable=False, server_default=db.text("'normal'::character varying"))
created_by = mapped_column(StringUUID, nullable=True) created_by = mapped_column(StringUUID, nullable=True)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = mapped_column(StringUUID, nullable=True) updated_by = mapped_column(StringUUID, nullable=True)
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
code = mapped_column(db.String(255)) code = mapped_column(String(255))
@property @property
def custom_disclaimer(self): def custom_disclaimer(self):
@ -1547,8 +1548,8 @@ class ApiToken(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
app_id = mapped_column(StringUUID, nullable=True) app_id = mapped_column(StringUUID, nullable=True)
tenant_id = mapped_column(StringUUID, nullable=True) tenant_id = mapped_column(StringUUID, nullable=True)
type = mapped_column(db.String(16), nullable=False) type = mapped_column(String(16), nullable=False)
token = mapped_column(db.String(255), nullable=False) token = mapped_column(String(255), nullable=False)
last_used_at = mapped_column(db.DateTime, nullable=True) last_used_at = mapped_column(db.DateTime, nullable=True)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1570,21 +1571,21 @@ class UploadFile(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
storage_type: Mapped[str] = mapped_column(db.String(255), nullable=False) storage_type: Mapped[str] = mapped_column(String(255), nullable=False)
key: Mapped[str] = mapped_column(db.String(255), nullable=False) key: Mapped[str] = mapped_column(String(255), nullable=False)
name: Mapped[str] = mapped_column(db.String(255), nullable=False) name: Mapped[str] = mapped_column(String(255), nullable=False)
size: Mapped[int] = mapped_column(db.Integer, nullable=False) size: Mapped[int] = mapped_column(db.Integer, nullable=False)
extension: Mapped[str] = mapped_column(db.String(255), nullable=False) extension: Mapped[str] = mapped_column(String(255), nullable=False)
mime_type: Mapped[str] = mapped_column(db.String(255), nullable=True) mime_type: Mapped[str] = mapped_column(String(255), nullable=True)
created_by_role: Mapped[str] = mapped_column( created_by_role: Mapped[str] = mapped_column(
db.String(255), nullable=False, server_default=db.text("'account'::character varying") String(255), nullable=False, server_default=db.text("'account'::character varying")
) )
created_by: Mapped[str] = mapped_column(StringUUID, nullable=False) created_by: Mapped[str] = mapped_column(StringUUID, nullable=False)
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
used: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false")) used: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
used_by: Mapped[str | None] = mapped_column(StringUUID, nullable=True) used_by: Mapped[str | None] = mapped_column(StringUUID, nullable=True)
used_at: Mapped[datetime | None] = mapped_column(db.DateTime, nullable=True) used_at: Mapped[datetime | None] = mapped_column(db.DateTime, nullable=True)
hash: Mapped[str | None] = mapped_column(db.String(255), nullable=True) hash: Mapped[str | None] = mapped_column(String(255), nullable=True)
source_url: Mapped[str] = mapped_column(sa.TEXT, default="") source_url: Mapped[str] = mapped_column(sa.TEXT, default="")
def __init__( def __init__(
@ -1633,10 +1634,10 @@ class ApiRequest(Base):
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
api_token_id = mapped_column(StringUUID, nullable=False) api_token_id = mapped_column(StringUUID, nullable=False)
path = mapped_column(db.String(255), nullable=False) path = mapped_column(String(255), nullable=False)
request = mapped_column(db.Text, nullable=True) request = mapped_column(db.Text, nullable=True)
response = mapped_column(db.Text, nullable=True) response = mapped_column(db.Text, nullable=True)
ip = mapped_column(db.String(255), nullable=False) ip = mapped_column(String(255), nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1649,7 +1650,7 @@ class MessageChain(Base):
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
message_id = mapped_column(StringUUID, nullable=False) message_id = mapped_column(StringUUID, nullable=False)
type = mapped_column(db.String(255), nullable=False) type = mapped_column(String(255), nullable=False)
input = mapped_column(db.Text, nullable=True) input = mapped_column(db.Text, nullable=True)
output = mapped_column(db.Text, nullable=True) output = mapped_column(db.Text, nullable=True)
created_at = mapped_column(db.DateTime, nullable=False, server_default=db.func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=db.func.current_timestamp())
@ -1686,9 +1687,9 @@ class MessageAgentThought(Base):
answer_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001")) answer_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001"))
tokens = mapped_column(db.Integer, nullable=True) tokens = mapped_column(db.Integer, nullable=True)
total_price = mapped_column(db.Numeric, nullable=True) total_price = mapped_column(db.Numeric, nullable=True)
currency = mapped_column(db.String, nullable=True) currency = mapped_column(String, nullable=True)
latency = mapped_column(db.Float, nullable=True) latency = mapped_column(db.Float, nullable=True)
created_by_role = mapped_column(db.String, nullable=False) created_by_role = mapped_column(String, nullable=False)
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=db.func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=db.func.current_timestamp())
@ -1808,8 +1809,8 @@ class Tag(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=True) tenant_id = mapped_column(StringUUID, nullable=True)
type = mapped_column(db.String(16), nullable=False) type = mapped_column(String(16), nullable=False)
name = mapped_column(db.String(255), nullable=False) name = mapped_column(String(255), nullable=False)
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -1839,7 +1840,7 @@ class TraceAppConfig(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
tracing_provider = mapped_column(db.String(255), nullable=True) tracing_provider = mapped_column(String(255), nullable=True)
tracing_config = mapped_column(db.JSON, nullable=True) tracing_config = mapped_column(db.JSON, nullable=True)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = mapped_column( updated_at = mapped_column(

@ -4,6 +4,7 @@ from typing import Optional
from sqlalchemy import func, text from sqlalchemy import func, text
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.types import String
from .base import Base from .base import Base
from .engine import db from .engine import db
@ -56,16 +57,16 @@ class Provider(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
provider_name: Mapped[str] = mapped_column(db.String(255), nullable=False) provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
provider_type: Mapped[str] = mapped_column( provider_type: Mapped[str] = mapped_column(
db.String(40), nullable=False, server_default=text("'custom'::character varying") String(40), nullable=False, server_default=text("'custom'::character varying")
) )
encrypted_config: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) encrypted_config: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True)
is_valid: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("false")) is_valid: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("false"))
last_used: Mapped[Optional[datetime]] = mapped_column(db.DateTime, nullable=True) last_used: Mapped[Optional[datetime]] = mapped_column(db.DateTime, nullable=True)
quota_type: Mapped[Optional[str]] = mapped_column( quota_type: Mapped[Optional[str]] = mapped_column(
db.String(40), nullable=True, server_default=text("''::character varying") String(40), nullable=True, server_default=text("''::character varying")
) )
quota_limit: Mapped[Optional[int]] = mapped_column(db.BigInteger, nullable=True) quota_limit: Mapped[Optional[int]] = mapped_column(db.BigInteger, nullable=True)
quota_used: Mapped[Optional[int]] = mapped_column(db.BigInteger, default=0) quota_used: Mapped[Optional[int]] = mapped_column(db.BigInteger, default=0)
@ -113,9 +114,9 @@ class ProviderModel(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
provider_name: Mapped[str] = mapped_column(db.String(255), nullable=False) provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
model_name: Mapped[str] = mapped_column(db.String(255), nullable=False) model_name: Mapped[str] = mapped_column(String(255), nullable=False)
model_type: Mapped[str] = mapped_column(db.String(40), nullable=False) model_type: Mapped[str] = mapped_column(String(40), nullable=False)
encrypted_config: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) encrypted_config: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True)
is_valid: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("false")) is_valid: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("false"))
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -131,9 +132,9 @@ class TenantDefaultModel(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
provider_name: Mapped[str] = mapped_column(db.String(255), nullable=False) provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
model_name: Mapped[str] = mapped_column(db.String(255), nullable=False) model_name: Mapped[str] = mapped_column(String(255), nullable=False)
model_type: Mapped[str] = mapped_column(db.String(40), nullable=False) model_type: Mapped[str] = mapped_column(String(40), nullable=False)
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -147,8 +148,8 @@ class TenantPreferredModelProvider(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
provider_name: Mapped[str] = mapped_column(db.String(255), nullable=False) provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
preferred_provider_type: Mapped[str] = mapped_column(db.String(40), nullable=False) preferred_provider_type: Mapped[str] = mapped_column(String(40), nullable=False)
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -162,16 +163,16 @@ class ProviderOrder(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
provider_name: Mapped[str] = mapped_column(db.String(255), nullable=False) provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
account_id: Mapped[str] = mapped_column(StringUUID, nullable=False) account_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
payment_product_id: Mapped[str] = mapped_column(db.String(191), nullable=False) payment_product_id: Mapped[str] = mapped_column(String(191), nullable=False)
payment_id: Mapped[Optional[str]] = mapped_column(db.String(191)) payment_id: Mapped[Optional[str]] = mapped_column(String(191))
transaction_id: Mapped[Optional[str]] = mapped_column(db.String(191)) transaction_id: Mapped[Optional[str]] = mapped_column(String(191))
quantity: Mapped[int] = mapped_column(db.Integer, nullable=False, server_default=text("1")) quantity: Mapped[int] = mapped_column(db.Integer, nullable=False, server_default=text("1"))
currency: Mapped[Optional[str]] = mapped_column(db.String(40)) currency: Mapped[Optional[str]] = mapped_column(String(40))
total_amount: Mapped[Optional[int]] = mapped_column(db.Integer) total_amount: Mapped[Optional[int]] = mapped_column(db.Integer)
payment_status: Mapped[str] = mapped_column( payment_status: Mapped[str] = mapped_column(
db.String(40), nullable=False, server_default=text("'wait_pay'::character varying") String(40), nullable=False, server_default=text("'wait_pay'::character varying")
) )
paid_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime) paid_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime)
pay_failed_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime) pay_failed_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime)
@ -193,9 +194,9 @@ class ProviderModelSetting(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
provider_name: Mapped[str] = mapped_column(db.String(255), nullable=False) provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
model_name: Mapped[str] = mapped_column(db.String(255), nullable=False) model_name: Mapped[str] = mapped_column(String(255), nullable=False)
model_type: Mapped[str] = mapped_column(db.String(40), nullable=False) model_type: Mapped[str] = mapped_column(String(40), nullable=False)
enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("true")) enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("true"))
load_balancing_enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("false")) load_balancing_enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("false"))
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -215,10 +216,10 @@ class LoadBalancingModelConfig(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
provider_name: Mapped[str] = mapped_column(db.String(255), nullable=False) provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
model_name: Mapped[str] = mapped_column(db.String(255), nullable=False) model_name: Mapped[str] = mapped_column(String(255), nullable=False)
model_type: Mapped[str] = mapped_column(db.String(40), nullable=False) model_type: Mapped[str] = mapped_column(String(40), nullable=False)
name: Mapped[str] = mapped_column(db.String(255), nullable=False) name: Mapped[str] = mapped_column(String(255), nullable=False)
encrypted_config: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) encrypted_config: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True)
enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("true")) enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("true"))
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())

@ -3,6 +3,7 @@ import json
from sqlalchemy import func from sqlalchemy import func
from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import mapped_column from sqlalchemy.orm import mapped_column
from sqlalchemy.types import String
from models.base import Base from models.base import Base
@ -20,8 +21,8 @@ class DataSourceOauthBinding(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
access_token = mapped_column(db.String(255), nullable=False) access_token = mapped_column(String(255), nullable=False)
provider = mapped_column(db.String(255), nullable=False) provider = mapped_column(String(255), nullable=False)
source_info = mapped_column(JSONB, nullable=False) source_info = mapped_column(JSONB, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -38,8 +39,8 @@ class DataSourceApiKeyAuthBinding(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
category = mapped_column(db.String(255), nullable=False) category = mapped_column(String(255), nullable=False)
provider = mapped_column(db.String(255), nullable=False) provider = mapped_column(String(255), nullable=False)
credentials = mapped_column(db.Text, nullable=True) # JSON credentials = mapped_column(db.Text, nullable=True) # JSON
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())

@ -3,6 +3,7 @@ from typing import Optional
from celery import states # type: ignore from celery import states # type: ignore
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.types import String
from libs.datetime_utils import naive_utc_now from libs.datetime_utils import naive_utc_now
from models.base import Base from models.base import Base
@ -16,8 +17,8 @@ class CeleryTask(Base):
__tablename__ = "celery_taskmeta" __tablename__ = "celery_taskmeta"
id = mapped_column(db.Integer, db.Sequence("task_id_sequence"), primary_key=True, autoincrement=True) id = mapped_column(db.Integer, db.Sequence("task_id_sequence"), primary_key=True, autoincrement=True)
task_id = mapped_column(db.String(155), unique=True) task_id = mapped_column(String(155), unique=True)
status = mapped_column(db.String(50), default=states.PENDING) status = mapped_column(String(50), default=states.PENDING)
result = mapped_column(db.PickleType, nullable=True) result = mapped_column(db.PickleType, nullable=True)
date_done = mapped_column( date_done = mapped_column(
db.DateTime, db.DateTime,
@ -26,12 +27,12 @@ class CeleryTask(Base):
nullable=True, nullable=True,
) )
traceback = mapped_column(db.Text, nullable=True) traceback = mapped_column(db.Text, nullable=True)
name = mapped_column(db.String(155), nullable=True) name = mapped_column(String(155), nullable=True)
args = mapped_column(db.LargeBinary, nullable=True) args = mapped_column(db.LargeBinary, nullable=True)
kwargs = mapped_column(db.LargeBinary, nullable=True) kwargs = mapped_column(db.LargeBinary, nullable=True)
worker = mapped_column(db.String(155), nullable=True) worker = mapped_column(String(155), nullable=True)
retries = mapped_column(db.Integer, nullable=True) retries = mapped_column(db.Integer, nullable=True)
queue = mapped_column(db.String(155), nullable=True) queue = mapped_column(String(155), nullable=True)
class CeleryTaskSet(Base): class CeleryTaskSet(Base):
@ -42,6 +43,6 @@ class CeleryTaskSet(Base):
id: Mapped[int] = mapped_column( id: Mapped[int] = mapped_column(
db.Integer, db.Sequence("taskset_id_sequence"), autoincrement=True, primary_key=True db.Integer, db.Sequence("taskset_id_sequence"), autoincrement=True, primary_key=True
) )
taskset_id = mapped_column(db.String(155), unique=True) taskset_id = mapped_column(String(155), unique=True)
result = mapped_column(db.PickleType, nullable=True) result = mapped_column(db.PickleType, nullable=True)
date_done: Mapped[Optional[datetime]] = mapped_column(db.DateTime, default=lambda: naive_utc_now(), nullable=True) date_done: Mapped[Optional[datetime]] = mapped_column(db.DateTime, default=lambda: naive_utc_now(), nullable=True)

@ -7,6 +7,7 @@ import sqlalchemy as sa
from deprecated import deprecated from deprecated import deprecated
from sqlalchemy import ForeignKey, func from sqlalchemy import ForeignKey, func
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.types import String
from core.file import helpers as file_helpers from core.file import helpers as file_helpers
from core.helper import encrypter from core.helper import encrypter
@ -30,8 +31,8 @@ class ToolOAuthSystemClient(Base):
) )
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
plugin_id: Mapped[str] = mapped_column(db.String(512), nullable=False) plugin_id = mapped_column(String(512), nullable=False)
provider: Mapped[str] = mapped_column(db.String(255), nullable=False) provider: Mapped[str] = mapped_column(String(255), nullable=False)
# oauth params of the tool provider # oauth params of the tool provider
encrypted_oauth_params: Mapped[str] = mapped_column(db.Text, nullable=False) encrypted_oauth_params: Mapped[str] = mapped_column(db.Text, nullable=False)
@ -47,8 +48,8 @@ class ToolOAuthTenantClient(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
# tenant id # tenant id
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
plugin_id: Mapped[str] = mapped_column(db.String(512), nullable=False) plugin_id: Mapped[str] = mapped_column(String(512), nullable=False)
provider: Mapped[str] = mapped_column(db.String(255), nullable=False) provider: Mapped[str] = mapped_column(String(255), nullable=False)
enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("true")) enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
# oauth params of the tool provider # oauth params of the tool provider
encrypted_oauth_params: Mapped[str] = mapped_column(db.Text, nullable=False) encrypted_oauth_params: Mapped[str] = mapped_column(db.Text, nullable=False)
@ -72,14 +73,14 @@ class BuiltinToolProvider(Base):
# id of the tool provider # id of the tool provider
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
name: Mapped[str] = mapped_column( name: Mapped[str] = mapped_column(
db.String(256), nullable=False, server_default=db.text("'API KEY 1'::character varying") String(256), nullable=False, server_default=db.text("'API KEY 1'::character varying")
) )
# id of the tenant # id of the tenant
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=True) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=True)
# who created this tool provider # who created this tool provider
user_id: Mapped[str] = mapped_column(StringUUID, nullable=False) user_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
# name of the tool provider # name of the tool provider
provider: Mapped[str] = mapped_column(db.String(256), nullable=False) provider: Mapped[str] = mapped_column(String(256), nullable=False)
# credential of the tool provider # credential of the tool provider
encrypted_credentials: Mapped[str] = mapped_column(db.Text, nullable=True) encrypted_credentials: Mapped[str] = mapped_column(db.Text, nullable=True)
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
@ -91,7 +92,7 @@ class BuiltinToolProvider(Base):
is_default: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false")) is_default: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
# credential type, e.g., "api-key", "oauth2" # credential type, e.g., "api-key", "oauth2"
credential_type: Mapped[str] = mapped_column( credential_type: Mapped[str] = mapped_column(
db.String(32), nullable=False, server_default=db.text("'api-key'::character varying") String(32), nullable=False, server_default=db.text("'api-key'::character varying")
) )
expires_at: Mapped[int] = mapped_column(db.BigInteger, nullable=False, server_default=db.text("-1")) expires_at: Mapped[int] = mapped_column(db.BigInteger, nullable=False, server_default=db.text("-1"))
@ -113,12 +114,12 @@ class ApiToolProvider(Base):
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
# name of the api provider # name of the api provider
name = mapped_column(db.String(255), nullable=False, server_default=db.text("'API KEY 1'::character varying")) name = mapped_column(String(255), nullable=False, server_default=db.text("'API KEY 1'::character varying"))
# icon # icon
icon = mapped_column(db.String(255), nullable=False) icon = mapped_column(String(255), nullable=False)
# original schema # original schema
schema = mapped_column(db.Text, nullable=False) schema = mapped_column(db.Text, nullable=False)
schema_type_str: Mapped[str] = mapped_column(db.String(40), nullable=False) schema_type_str: Mapped[str] = mapped_column(String(40), nullable=False)
# who created this tool # who created this tool
user_id = mapped_column(StringUUID, nullable=False) user_id = mapped_column(StringUUID, nullable=False)
# tenant id # tenant id
@ -130,7 +131,7 @@ class ApiToolProvider(Base):
# json format credentials # json format credentials
credentials_str = mapped_column(db.Text, nullable=False) credentials_str = mapped_column(db.Text, nullable=False)
# privacy policy # privacy policy
privacy_policy = mapped_column(db.String(255), nullable=True) privacy_policy = mapped_column(String(255), nullable=True)
# custom_disclaimer # custom_disclaimer
custom_disclaimer: Mapped[str] = mapped_column(sa.TEXT, default="") custom_disclaimer: Mapped[str] = mapped_column(sa.TEXT, default="")
@ -173,11 +174,11 @@ class ToolLabelBinding(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
# tool id # tool id
tool_id: Mapped[str] = mapped_column(db.String(64), nullable=False) tool_id: Mapped[str] = mapped_column(String(64), nullable=False)
# tool type # tool type
tool_type: Mapped[str] = mapped_column(db.String(40), nullable=False) tool_type: Mapped[str] = mapped_column(String(40), nullable=False)
# label name # label name
label_name: Mapped[str] = mapped_column(db.String(40), nullable=False) label_name: Mapped[str] = mapped_column(String(40), nullable=False)
class WorkflowToolProvider(Base): class WorkflowToolProvider(Base):
@ -194,15 +195,15 @@ class WorkflowToolProvider(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
# name of the workflow provider # name of the workflow provider
name: Mapped[str] = mapped_column(db.String(255), nullable=False) name: Mapped[str] = mapped_column(String(255), nullable=False)
# label of the workflow provider # label of the workflow provider
label: Mapped[str] = mapped_column(db.String(255), nullable=False, server_default="") label: Mapped[str] = mapped_column(String(255), nullable=False, server_default="")
# icon # icon
icon: Mapped[str] = mapped_column(db.String(255), nullable=False) icon: Mapped[str] = mapped_column(String(255), nullable=False)
# app id of the workflow provider # app id of the workflow provider
app_id: Mapped[str] = mapped_column(StringUUID, nullable=False) app_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
# version of the workflow provider # version of the workflow provider
version: Mapped[str] = mapped_column(db.String(255), nullable=False, server_default="") version: Mapped[str] = mapped_column(String(255), nullable=False, server_default="")
# who created this tool # who created this tool
user_id: Mapped[str] = mapped_column(StringUUID, nullable=False) user_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
# tenant id # tenant id
@ -212,7 +213,7 @@ class WorkflowToolProvider(Base):
# parameter configuration # parameter configuration
parameter_configuration: Mapped[str] = mapped_column(db.Text, nullable=False, server_default="[]") parameter_configuration: Mapped[str] = mapped_column(db.Text, nullable=False, server_default="[]")
# privacy policy # privacy policy
privacy_policy: Mapped[str] = mapped_column(db.String(255), nullable=True, server_default="") privacy_policy: Mapped[str] = mapped_column(String(255), nullable=True, server_default="")
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(
db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)") db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
@ -253,15 +254,15 @@ class MCPToolProvider(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
# name of the mcp provider # name of the mcp provider
name: Mapped[str] = mapped_column(db.String(40), nullable=False) name: Mapped[str] = mapped_column(String(40), nullable=False)
# server identifier of the mcp provider # server identifier of the mcp provider
server_identifier: Mapped[str] = mapped_column(db.String(64), nullable=False) server_identifier: Mapped[str] = mapped_column(String(64), nullable=False)
# encrypted url of the mcp provider # encrypted url of the mcp provider
server_url: Mapped[str] = mapped_column(db.Text, nullable=False) server_url: Mapped[str] = mapped_column(db.Text, nullable=False)
# hash of server_url for uniqueness check # hash of server_url for uniqueness check
server_url_hash: Mapped[str] = mapped_column(db.String(64), nullable=False) server_url_hash: Mapped[str] = mapped_column(String(64), nullable=False)
# icon of the mcp provider # icon of the mcp provider
icon: Mapped[str] = mapped_column(db.String(255), nullable=True) icon: Mapped[str] = mapped_column(String(255), nullable=True)
# tenant id # tenant id
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
# who created this tool # who created this tool
@ -355,11 +356,11 @@ class ToolModelInvoke(Base):
# tenant id # tenant id
tenant_id = mapped_column(StringUUID, nullable=False) tenant_id = mapped_column(StringUUID, nullable=False)
# provider # provider
provider = mapped_column(db.String(255), nullable=False) provider = mapped_column(String(255), nullable=False)
# type # type
tool_type = mapped_column(db.String(40), nullable=False) tool_type = mapped_column(String(40), nullable=False)
# tool name # tool name
tool_name = mapped_column(db.String(128), nullable=False) tool_name = mapped_column(String(128), nullable=False)
# invoke parameters # invoke parameters
model_parameters = mapped_column(db.Text, nullable=False) model_parameters = mapped_column(db.Text, nullable=False)
# prompt messages # prompt messages
@ -373,7 +374,7 @@ class ToolModelInvoke(Base):
answer_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001")) answer_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001"))
provider_response_latency = mapped_column(db.Float, nullable=False, server_default=db.text("0")) provider_response_latency = mapped_column(db.Float, nullable=False, server_default=db.text("0"))
total_price = mapped_column(db.Numeric(10, 7)) total_price = mapped_column(db.Numeric(10, 7))
currency = mapped_column(db.String(255), nullable=False) currency = mapped_column(String(255), nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -429,11 +430,11 @@ class ToolFile(Base):
# conversation id # conversation id
conversation_id: Mapped[str] = mapped_column(StringUUID, nullable=True) conversation_id: Mapped[str] = mapped_column(StringUUID, nullable=True)
# file key # file key
file_key: Mapped[str] = mapped_column(db.String(255), nullable=False) file_key: Mapped[str] = mapped_column(String(255), nullable=False)
# mime type # mime type
mimetype: Mapped[str] = mapped_column(db.String(255), nullable=False) mimetype: Mapped[str] = mapped_column(String(255), nullable=False)
# original url # original url
original_url: Mapped[str] = mapped_column(db.String(2048), nullable=True) original_url: Mapped[str] = mapped_column(String(2048), nullable=True)
# name # name
name: Mapped[str] = mapped_column(default="") name: Mapped[str] = mapped_column(default="")
# size # size
@ -465,11 +466,11 @@ class DeprecatedPublishedAppTool(Base):
# to describe this parameter to llm, we need this field # to describe this parameter to llm, we need this field
query_description = mapped_column(db.Text, nullable=False) query_description = mapped_column(db.Text, nullable=False)
# query name, the name of the query parameter # query name, the name of the query parameter
query_name = mapped_column(db.String(40), nullable=False) query_name = mapped_column(String(40), nullable=False)
# name of the tool provider # name of the tool provider
tool_name = mapped_column(db.String(40), nullable=False) tool_name = mapped_column(String(40), nullable=False)
# author # author
author = mapped_column(db.String(40), nullable=False) author = mapped_column(String(40), nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)"))
updated_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = mapped_column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)"))

@ -1,5 +1,6 @@
from sqlalchemy import func from sqlalchemy import func
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.types import String
from models.base import Base from models.base import Base
@ -19,7 +20,7 @@ class SavedMessage(Base):
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
message_id = mapped_column(StringUUID, nullable=False) message_id = mapped_column(StringUUID, nullable=False)
created_by_role = mapped_column( created_by_role = mapped_column(
db.String(255), nullable=False, server_default=db.text("'end_user'::character varying") String(255), nullable=False, server_default=db.text("'end_user'::character varying")
) )
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@ -40,7 +41,7 @@ class PinnedConversation(Base):
app_id = mapped_column(StringUUID, nullable=False) app_id = mapped_column(StringUUID, nullable=False)
conversation_id: Mapped[str] = mapped_column(StringUUID) conversation_id: Mapped[str] = mapped_column(StringUUID)
created_by_role = mapped_column( created_by_role = mapped_column(
db.String(255), nullable=False, server_default=db.text("'end_user'::character varying") String(255), nullable=False, server_default=db.text("'end_user'::character varying")
) )
created_by = mapped_column(StringUUID, nullable=False) created_by = mapped_column(StringUUID, nullable=False)
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())

@ -27,6 +27,7 @@ if TYPE_CHECKING:
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy import Index, PrimaryKeyConstraint, UniqueConstraint, func from sqlalchemy import Index, PrimaryKeyConstraint, UniqueConstraint, func
from sqlalchemy.orm import Mapped, declared_attr, mapped_column from sqlalchemy.orm import Mapped, declared_attr, mapped_column
from sqlalchemy.types import String
from constants import DEFAULT_FILE_NUMBER_LIMITS, HIDDEN_VALUE from constants import DEFAULT_FILE_NUMBER_LIMITS, HIDDEN_VALUE
from core.helper import encrypter from core.helper import encrypter
@ -127,8 +128,8 @@ class Workflow(Base):
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False) tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
app_id: Mapped[str] = mapped_column(StringUUID, nullable=False) app_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
type: Mapped[str] = mapped_column(db.String(255), nullable=False) type: Mapped[str] = mapped_column(String(255), nullable=False)
version: Mapped[str] = mapped_column(db.String(255), nullable=False) version: Mapped[str] = mapped_column(String(255), nullable=False)
marked_name: Mapped[str] = mapped_column(default="", server_default="") marked_name: Mapped[str] = mapped_column(default="", server_default="")
marked_comment: Mapped[str] = mapped_column(default="", server_default="") marked_comment: Mapped[str] = mapped_column(default="", server_default="")
graph: Mapped[str] = mapped_column(sa.Text) graph: Mapped[str] = mapped_column(sa.Text)
@ -503,18 +504,18 @@ class WorkflowRun(Base):
app_id: Mapped[str] = mapped_column(StringUUID) app_id: Mapped[str] = mapped_column(StringUUID)
workflow_id: Mapped[str] = mapped_column(StringUUID) workflow_id: Mapped[str] = mapped_column(StringUUID)
type: Mapped[str] = mapped_column(db.String(255)) type: Mapped[str] = mapped_column(String(255))
triggered_from: Mapped[str] = mapped_column(db.String(255)) triggered_from: Mapped[str] = mapped_column(String(255))
version: Mapped[str] = mapped_column(db.String(255)) version: Mapped[str] = mapped_column(String(255))
graph: Mapped[Optional[str]] = mapped_column(db.Text) graph: Mapped[Optional[str]] = mapped_column(db.Text)
inputs: Mapped[Optional[str]] = mapped_column(db.Text) inputs: Mapped[Optional[str]] = mapped_column(db.Text)
status: Mapped[str] = mapped_column(db.String(255)) # running, succeeded, failed, stopped, partial-succeeded status: Mapped[str] = mapped_column(String(255)) # running, succeeded, failed, stopped, partial-succeeded
outputs: Mapped[Optional[str]] = mapped_column(sa.Text, default="{}") outputs: Mapped[Optional[str]] = mapped_column(sa.Text, default="{}")
error: Mapped[Optional[str]] = mapped_column(db.Text) error: Mapped[Optional[str]] = mapped_column(db.Text)
elapsed_time: Mapped[float] = mapped_column(db.Float, nullable=False, server_default=sa.text("0")) elapsed_time: Mapped[float] = mapped_column(db.Float, nullable=False, server_default=sa.text("0"))
total_tokens: Mapped[int] = mapped_column(sa.BigInteger, server_default=sa.text("0")) total_tokens: Mapped[int] = mapped_column(sa.BigInteger, server_default=sa.text("0"))
total_steps: Mapped[int] = mapped_column(db.Integer, server_default=db.text("0"), nullable=True) total_steps: Mapped[int] = mapped_column(db.Integer, server_default=db.text("0"), nullable=True)
created_by_role: Mapped[str] = mapped_column(db.String(255)) # account, end_user created_by_role: Mapped[str] = mapped_column(String(255)) # account, end_user
created_by: Mapped[str] = mapped_column(StringUUID, nullable=False) created_by: Mapped[str] = mapped_column(StringUUID, nullable=False)
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
finished_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime) finished_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime)
@ -711,23 +712,23 @@ class WorkflowNodeExecutionModel(Base):
tenant_id: Mapped[str] = mapped_column(StringUUID) tenant_id: Mapped[str] = mapped_column(StringUUID)
app_id: Mapped[str] = mapped_column(StringUUID) app_id: Mapped[str] = mapped_column(StringUUID)
workflow_id: Mapped[str] = mapped_column(StringUUID) workflow_id: Mapped[str] = mapped_column(StringUUID)
triggered_from: Mapped[str] = mapped_column(db.String(255)) triggered_from: Mapped[str] = mapped_column(String(255))
workflow_run_id: Mapped[Optional[str]] = mapped_column(StringUUID) workflow_run_id: Mapped[Optional[str]] = mapped_column(StringUUID)
index: Mapped[int] = mapped_column(db.Integer) index: Mapped[int] = mapped_column(db.Integer)
predecessor_node_id: Mapped[Optional[str]] = mapped_column(db.String(255)) predecessor_node_id: Mapped[Optional[str]] = mapped_column(String(255))
node_execution_id: Mapped[Optional[str]] = mapped_column(db.String(255)) node_execution_id: Mapped[Optional[str]] = mapped_column(String(255))
node_id: Mapped[str] = mapped_column(db.String(255)) node_id: Mapped[str] = mapped_column(String(255))
node_type: Mapped[str] = mapped_column(db.String(255)) node_type: Mapped[str] = mapped_column(String(255))
title: Mapped[str] = mapped_column(db.String(255)) title: Mapped[str] = mapped_column(String(255))
inputs: Mapped[Optional[str]] = mapped_column(db.Text) inputs: Mapped[Optional[str]] = mapped_column(db.Text)
process_data: Mapped[Optional[str]] = mapped_column(db.Text) process_data: Mapped[Optional[str]] = mapped_column(db.Text)
outputs: Mapped[Optional[str]] = mapped_column(db.Text) outputs: Mapped[Optional[str]] = mapped_column(db.Text)
status: Mapped[str] = mapped_column(db.String(255)) status: Mapped[str] = mapped_column(String(255))
error: Mapped[Optional[str]] = mapped_column(db.Text) error: Mapped[Optional[str]] = mapped_column(db.Text)
elapsed_time: Mapped[float] = mapped_column(db.Float, server_default=db.text("0")) elapsed_time: Mapped[float] = mapped_column(db.Float, server_default=db.text("0"))
execution_metadata: Mapped[Optional[str]] = mapped_column(db.Text) execution_metadata: Mapped[Optional[str]] = mapped_column(db.Text)
created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, server_default=func.current_timestamp())
created_by_role: Mapped[str] = mapped_column(db.String(255)) created_by_role: Mapped[str] = mapped_column(String(255))
created_by: Mapped[str] = mapped_column(StringUUID) created_by: Mapped[str] = mapped_column(StringUUID)
finished_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime) finished_at: Mapped[Optional[datetime]] = mapped_column(db.DateTime)
@ -846,8 +847,8 @@ class WorkflowAppLog(Base):
app_id: Mapped[str] = mapped_column(StringUUID) app_id: Mapped[str] = mapped_column(StringUUID)
workflow_id: Mapped[str] = mapped_column(StringUUID, nullable=False) workflow_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
workflow_run_id: Mapped[str] = mapped_column(StringUUID) workflow_run_id: Mapped[str] = mapped_column(StringUUID)
created_from: Mapped[str] = mapped_column(db.String(255), nullable=False) created_from: Mapped[str] = mapped_column(String(255), nullable=False)
created_by_role: Mapped[str] = mapped_column(db.String(255), nullable=False) created_by_role: Mapped[str] = mapped_column(String(255), nullable=False)
created_by: Mapped[str] = mapped_column(StringUUID, nullable=False) created_by: Mapped[str] = mapped_column(StringUUID, nullable=False)
created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp()) created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())

Loading…
Cancel
Save