fix: The default updated_at when a workflow is created (#11709)

Co-authored-by: 刘江波 <jiangbo721@163.com>
This commit is contained in:
jiangbo721 2024-12-21 23:13:58 +08:00 committed by GitHub
parent 9ee9e9c6de
commit 9578246bbb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 110 additions and 106 deletions

View File

@ -2,6 +2,7 @@ import enum
import json import json
from flask_login import UserMixin from flask_login import UserMixin
from sqlalchemy import func
from .engine import db from .engine import db
from .types import StringUUID from .types import StringUUID
@ -30,11 +31,11 @@ class Account(UserMixin, db.Model):
timezone = db.Column(db.String(255)) timezone = db.Column(db.String(255))
last_login_at = db.Column(db.DateTime) last_login_at = db.Column(db.DateTime)
last_login_ip = db.Column(db.String(255)) last_login_ip = db.Column(db.String(255))
last_active_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) last_active_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
status = db.Column(db.String(16), nullable=False, server_default=db.text("'active'::character varying")) status = db.Column(db.String(16), nullable=False, server_default=db.text("'active'::character varying"))
initialized_at = db.Column(db.DateTime) initialized_at = db.Column(db.DateTime)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def is_password_set(self): def is_password_set(self):
@ -187,8 +188,8 @@ class Tenant(db.Model):
plan = db.Column(db.String(255), nullable=False, server_default=db.text("'basic'::character varying")) plan = db.Column(db.String(255), nullable=False, server_default=db.text("'basic'::character varying"))
status = db.Column(db.String(255), nullable=False, server_default=db.text("'normal'::character varying")) status = db.Column(db.String(255), nullable=False, server_default=db.text("'normal'::character varying"))
custom_config = db.Column(db.Text) custom_config = db.Column(db.Text)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
def get_accounts(self) -> list[Account]: def get_accounts(self) -> list[Account]:
return ( return (
@ -228,8 +229,8 @@ class TenantAccountJoin(db.Model):
current = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) current = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
role = db.Column(db.String(16), nullable=False, server_default="normal") role = db.Column(db.String(16), nullable=False, server_default="normal")
invited_by = db.Column(StringUUID, nullable=True) invited_by = db.Column(StringUUID, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class AccountIntegrate(db.Model): class AccountIntegrate(db.Model):
@ -245,8 +246,8 @@ class AccountIntegrate(db.Model):
provider = db.Column(db.String(16), nullable=False) provider = db.Column(db.String(16), nullable=False)
open_id = db.Column(db.String(255), nullable=False) open_id = db.Column(db.String(255), nullable=False)
encrypted_token = db.Column(db.String(255), nullable=False) encrypted_token = db.Column(db.String(255), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class InvitationCode(db.Model): class InvitationCode(db.Model):
@ -265,4 +266,4 @@ class InvitationCode(db.Model):
used_by_tenant_id = db.Column(StringUUID) used_by_tenant_id = db.Column(StringUUID)
used_by_account_id = db.Column(StringUUID) used_by_account_id = db.Column(StringUUID)
deprecated_at = db.Column(db.DateTime) deprecated_at = db.Column(db.DateTime)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())

View File

@ -1,5 +1,7 @@
import enum import enum
from sqlalchemy import func
from .engine import db from .engine import db
from .types import StringUUID from .types import StringUUID
@ -23,4 +25,4 @@ class APIBasedExtension(db.Model):
name = db.Column(db.String(255), nullable=False) name = db.Column(db.String(255), nullable=False)
api_endpoint = db.Column(db.String(255), nullable=False) api_endpoint = db.Column(db.String(255), nullable=False)
api_key = db.Column(db.Text, nullable=False) api_key = db.Column(db.Text, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())

View File

@ -50,9 +50,9 @@ class Dataset(db.Model):
indexing_technique = db.Column(db.String(255), nullable=True) indexing_technique = db.Column(db.String(255), nullable=True)
index_struct = db.Column(db.Text, nullable=True) index_struct = db.Column(db.Text, nullable=True)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = db.Column(StringUUID, nullable=True) updated_by = db.Column(StringUUID, nullable=True)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
embedding_model = db.Column(db.String(255), nullable=True) embedding_model = db.Column(db.String(255), nullable=True)
embedding_model_provider = db.Column(db.String(255), nullable=True) embedding_model_provider = db.Column(db.String(255), nullable=True)
collection_binding_id = db.Column(StringUUID, nullable=True) collection_binding_id = db.Column(StringUUID, nullable=True)
@ -212,7 +212,7 @@ class DatasetProcessRule(db.Model):
mode = db.Column(db.String(255), nullable=False, server_default=db.text("'automatic'::character varying")) mode = db.Column(db.String(255), nullable=False, server_default=db.text("'automatic'::character varying"))
rules = db.Column(db.Text, nullable=True) rules = db.Column(db.Text, nullable=True)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
MODES = ["automatic", "custom"] MODES = ["automatic", "custom"]
PRE_PROCESSING_RULES = ["remove_stopwords", "remove_extra_spaces", "remove_urls_emails"] PRE_PROCESSING_RULES = ["remove_stopwords", "remove_extra_spaces", "remove_urls_emails"]
@ -264,7 +264,7 @@ class Document(db.Model):
created_from = db.Column(db.String(255), nullable=False) created_from = db.Column(db.String(255), nullable=False)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_api_request_id = db.Column(StringUUID, nullable=True) created_api_request_id = db.Column(StringUUID, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
# start processing # start processing
processing_started_at = db.Column(db.DateTime, nullable=True) processing_started_at = db.Column(db.DateTime, nullable=True)
@ -303,7 +303,7 @@ class Document(db.Model):
archived_reason = db.Column(db.String(255), nullable=True) archived_reason = db.Column(db.String(255), nullable=True)
archived_by = db.Column(StringUUID, nullable=True) archived_by = db.Column(StringUUID, nullable=True)
archived_at = db.Column(db.DateTime, nullable=True) archived_at = db.Column(db.DateTime, nullable=True)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
doc_type = db.Column(db.String(40), nullable=True) doc_type = db.Column(db.String(40), nullable=True)
doc_metadata = db.Column(db.JSON, nullable=True) doc_metadata = db.Column(db.JSON, nullable=True)
doc_form = db.Column(db.String(255), nullable=False, server_default=db.text("'text_model'::character varying")) doc_form = db.Column(db.String(255), nullable=False, server_default=db.text("'text_model'::character varying"))
@ -527,9 +527,9 @@ class DocumentSegment(db.Model):
disabled_by = db.Column(StringUUID, nullable=True) disabled_by = db.Column(StringUUID, nullable=True)
status = db.Column(db.String(255), nullable=False, server_default=db.text("'waiting'::character varying")) status = db.Column(db.String(255), nullable=False, server_default=db.text("'waiting'::character varying"))
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = db.Column(StringUUID, nullable=True) updated_by = db.Column(StringUUID, nullable=True)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
indexing_at = db.Column(db.DateTime, nullable=True) indexing_at = db.Column(db.DateTime, nullable=True)
completed_at = db.Column(db.DateTime, nullable=True) completed_at = db.Column(db.DateTime, nullable=True)
error = db.Column(db.Text, nullable=True) error = db.Column(db.Text, nullable=True)
@ -697,7 +697,7 @@ class Embedding(db.Model):
) )
hash = db.Column(db.String(64), nullable=False) hash = db.Column(db.String(64), nullable=False)
embedding = db.Column(db.LargeBinary, nullable=False) embedding = db.Column(db.LargeBinary, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
provider_name = db.Column(db.String(255), nullable=False, server_default=db.text("''::character varying")) provider_name = db.Column(db.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]):
@ -719,7 +719,7 @@ class DatasetCollectionBinding(db.Model):
model_name = db.Column(db.String(255), nullable=False) model_name = db.Column(db.String(255), nullable=False)
type = db.Column(db.String(40), server_default=db.text("'dataset'::character varying"), nullable=False) type = db.Column(db.String(40), server_default=db.text("'dataset'::character varying"), nullable=False)
collection_name = db.Column(db.String(64), nullable=False) collection_name = db.Column(db.String(64), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class TidbAuthBinding(db.Model): class TidbAuthBinding(db.Model):
@ -739,7 +739,7 @@ class TidbAuthBinding(db.Model):
status = db.Column(db.String(255), nullable=False, server_default=db.text("CREATING")) status = db.Column(db.String(255), nullable=False, server_default=db.text("CREATING"))
account = db.Column(db.String(255), nullable=False) account = db.Column(db.String(255), nullable=False)
password = db.Column(db.String(255), nullable=False) password = db.Column(db.String(255), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class Whitelist(db.Model): class Whitelist(db.Model):
@ -751,7 +751,7 @@ class Whitelist(db.Model):
id = db.Column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()")) id = db.Column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
tenant_id = db.Column(StringUUID, nullable=True) tenant_id = db.Column(StringUUID, nullable=True)
category = db.Column(db.String(255), nullable=False) category = db.Column(db.String(255), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class DatasetPermission(db.Model): class DatasetPermission(db.Model):
@ -768,7 +768,7 @@ class DatasetPermission(db.Model):
account_id = db.Column(StringUUID, nullable=False) account_id = db.Column(StringUUID, nullable=False)
tenant_id = db.Column(StringUUID, nullable=False) tenant_id = db.Column(StringUUID, nullable=False)
has_permission = db.Column(db.Boolean, nullable=False, server_default=db.text("true")) has_permission = db.Column(db.Boolean, nullable=False, server_default=db.text("true"))
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class ExternalKnowledgeApis(db.Model): class ExternalKnowledgeApis(db.Model):
@ -785,9 +785,9 @@ class ExternalKnowledgeApis(db.Model):
tenant_id = db.Column(StringUUID, nullable=False) tenant_id = db.Column(StringUUID, nullable=False)
settings = db.Column(db.Text, nullable=True) settings = db.Column(db.Text, nullable=True)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = db.Column(StringUUID, nullable=True) updated_by = db.Column(StringUUID, nullable=True)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
def to_dict(self): def to_dict(self):
return { return {
@ -840,6 +840,6 @@ class ExternalKnowledgeBindings(db.Model):
dataset_id = db.Column(StringUUID, nullable=False) dataset_id = db.Column(StringUUID, nullable=False)
external_knowledge_id = db.Column(db.Text, nullable=False) external_knowledge_id = db.Column(db.Text, nullable=False)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = db.Column(StringUUID, nullable=True) updated_by = db.Column(StringUUID, nullable=True)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())

View File

@ -30,7 +30,7 @@ class DifySetup(db.Model):
__table_args__ = (db.PrimaryKeyConstraint("version", name="dify_setup_pkey"),) __table_args__ = (db.PrimaryKeyConstraint("version", name="dify_setup_pkey"),)
version = db.Column(db.String(255), nullable=False) version = db.Column(db.String(255), nullable=False)
setup_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) setup_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class AppMode(StrEnum): class AppMode(StrEnum):
@ -85,9 +85,9 @@ class App(db.Model):
tracing = db.Column(db.Text, nullable=True) tracing = db.Column(db.Text, nullable=True)
max_active_requests = db.Column(db.Integer, nullable=True) max_active_requests = db.Column(db.Integer, nullable=True)
created_by = db.Column(StringUUID, nullable=True) created_by = db.Column(StringUUID, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = db.Column(StringUUID, nullable=True) updated_by = db.Column(StringUUID, nullable=True)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
use_icon_as_answer_icon = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) use_icon_as_answer_icon = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
@property @property
@ -226,9 +226,9 @@ class AppModelConfig(db.Model):
model_id = db.Column(db.String(255), nullable=True) model_id = db.Column(db.String(255), nullable=True)
configs = db.Column(db.JSON, nullable=True) configs = db.Column(db.JSON, nullable=True)
created_by = db.Column(StringUUID, nullable=True) created_by = db.Column(StringUUID, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = db.Column(StringUUID, nullable=True) updated_by = db.Column(StringUUID, nullable=True)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
opening_statement = db.Column(db.Text) opening_statement = db.Column(db.Text)
suggested_questions = db.Column(db.Text) suggested_questions = db.Column(db.Text)
suggested_questions_after_answer = db.Column(db.Text) suggested_questions_after_answer = db.Column(db.Text)
@ -482,8 +482,8 @@ class RecommendedApp(db.Model):
is_listed = db.Column(db.Boolean, nullable=False, default=True) is_listed = db.Column(db.Boolean, nullable=False, default=True)
install_count = db.Column(db.Integer, nullable=False, default=0) install_count = db.Column(db.Integer, nullable=False, default=0)
language = db.Column(db.String(255), nullable=False, server_default=db.text("'en-US'::character varying")) language = db.Column(db.String(255), nullable=False, server_default=db.text("'en-US'::character varying"))
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def app(self): def app(self):
@ -507,7 +507,7 @@ class InstalledApp(db.Model):
position = db.Column(db.Integer, nullable=False, default=0) position = db.Column(db.Integer, nullable=False, default=0)
is_pinned = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) is_pinned = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
last_used_at = db.Column(db.DateTime, nullable=True) last_used_at = db.Column(db.DateTime, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def app(self): def app(self):
@ -548,8 +548,8 @@ class Conversation(db.Model):
read_at = db.Column(db.DateTime) read_at = db.Column(db.DateTime)
read_account_id = db.Column(StringUUID) read_account_id = db.Column(StringUUID)
dialogue_count: Mapped[int] = mapped_column(default=0) dialogue_count: Mapped[int] = mapped_column(default=0)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
messages = db.relationship("Message", backref="conversation", lazy="select", passive_deletes="all") messages = db.relationship("Message", backref="conversation", lazy="select", passive_deletes="all")
message_annotations = db.relationship( message_annotations = db.relationship(
@ -791,8 +791,8 @@ class Message(db.Model):
from_source = db.Column(db.String(255), nullable=False) from_source = db.Column(db.String(255), nullable=False)
from_end_user_id: Mapped[Optional[str]] = db.Column(StringUUID) from_end_user_id: Mapped[Optional[str]] = db.Column(StringUUID)
from_account_id: Mapped[Optional[str]] = db.Column(StringUUID) from_account_id: Mapped[Optional[str]] = db.Column(StringUUID)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
agent_based = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) agent_based = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
workflow_run_id = db.Column(StringUUID) workflow_run_id = db.Column(StringUUID)
@ -1117,8 +1117,8 @@ class MessageFeedback(db.Model):
from_source = db.Column(db.String(255), nullable=False) from_source = db.Column(db.String(255), nullable=False)
from_end_user_id = db.Column(StringUUID) from_end_user_id = db.Column(StringUUID)
from_account_id = db.Column(StringUUID) from_account_id = db.Column(StringUUID)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def from_account(self): def from_account(self):
@ -1164,9 +1164,7 @@ class MessageFile(db.Model):
upload_file_id: Mapped[Optional[str]] = db.Column(StringUUID, nullable=True) upload_file_id: Mapped[Optional[str]] = db.Column(StringUUID, nullable=True)
created_by_role: Mapped[str] = db.Column(db.String(255), nullable=False) created_by_role: Mapped[str] = db.Column(db.String(255), nullable=False)
created_by: Mapped[str] = db.Column(StringUUID, nullable=False) created_by: Mapped[str] = db.Column(StringUUID, nullable=False)
created_at: Mapped[datetime] = db.Column( created_at: Mapped[datetime] = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
)
class MessageAnnotation(db.Model): class MessageAnnotation(db.Model):
@ -1186,8 +1184,8 @@ class MessageAnnotation(db.Model):
content = db.Column(db.Text, nullable=False) content = db.Column(db.Text, nullable=False)
hit_count = db.Column(db.Integer, nullable=False, server_default=db.text("0")) hit_count = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
account_id = db.Column(StringUUID, nullable=False) account_id = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def account(self): def account(self):
@ -1216,7 +1214,7 @@ class AppAnnotationHitHistory(db.Model):
source = db.Column(db.Text, nullable=False) source = db.Column(db.Text, nullable=False)
question = db.Column(db.Text, nullable=False) question = db.Column(db.Text, nullable=False)
account_id = db.Column(StringUUID, nullable=False) account_id = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
score = db.Column(Float, nullable=False, server_default=db.text("0")) score = db.Column(Float, nullable=False, server_default=db.text("0"))
message_id = db.Column(StringUUID, nullable=False) message_id = db.Column(StringUUID, nullable=False)
annotation_question = db.Column(db.Text, nullable=False) annotation_question = db.Column(db.Text, nullable=False)
@ -1250,9 +1248,9 @@ class AppAnnotationSetting(db.Model):
score_threshold = db.Column(Float, nullable=False, server_default=db.text("0")) score_threshold = db.Column(Float, nullable=False, server_default=db.text("0"))
collection_binding_id = db.Column(StringUUID, nullable=False) collection_binding_id = db.Column(StringUUID, nullable=False)
created_user_id = db.Column(StringUUID, nullable=False) created_user_id = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_user_id = db.Column(StringUUID, nullable=False) updated_user_id = db.Column(StringUUID, nullable=False)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def created_account(self): def created_account(self):
@ -1298,9 +1296,9 @@ class OperationLog(db.Model):
account_id = db.Column(StringUUID, nullable=False) account_id = db.Column(StringUUID, nullable=False)
action = db.Column(db.String(255), nullable=False) action = db.Column(db.String(255), nullable=False)
content = db.Column(db.JSON) content = db.Column(db.JSON)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
created_ip = db.Column(db.String(255), nullable=False) created_ip = db.Column(db.String(255), nullable=False)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class EndUser(UserMixin, db.Model): class EndUser(UserMixin, db.Model):
@ -1319,8 +1317,8 @@ class EndUser(UserMixin, db.Model):
name = db.Column(db.String(255)) name = db.Column(db.String(255))
is_anonymous = db.Column(db.Boolean, nullable=False, server_default=db.text("true")) is_anonymous = db.Column(db.Boolean, nullable=False, server_default=db.text("true"))
session_id = db.Column(db.String(255), nullable=False) session_id = db.Column(db.String(255), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class Site(db.Model): class Site(db.Model):
@ -1351,9 +1349,9 @@ class Site(db.Model):
prompt_public = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) prompt_public = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
status = db.Column(db.String(255), nullable=False, server_default=db.text("'normal'::character varying")) status = db.Column(db.String(255), nullable=False, server_default=db.text("'normal'::character varying"))
created_by = db.Column(StringUUID, nullable=True) created_by = db.Column(StringUUID, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_by = db.Column(StringUUID, nullable=True) updated_by = db.Column(StringUUID, nullable=True)
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
code = db.Column(db.String(255)) code = db.Column(db.String(255))
@property @property
@ -1395,7 +1393,7 @@ class ApiToken(db.Model):
type = db.Column(db.String(16), nullable=False) type = db.Column(db.String(16), nullable=False)
token = db.Column(db.String(255), nullable=False) token = db.Column(db.String(255), nullable=False)
last_used_at = db.Column(db.DateTime, nullable=True) last_used_at = db.Column(db.DateTime, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@staticmethod @staticmethod
def generate_api_key(prefix, n): def generate_api_key(prefix, n):
@ -1426,9 +1424,7 @@ class UploadFile(db.Model):
db.String(255), nullable=False, server_default=db.text("'account'::character varying") db.String(255), nullable=False, server_default=db.text("'account'::character varying")
) )
created_by: Mapped[str] = db.Column(StringUUID, nullable=False) created_by: Mapped[str] = db.Column(StringUUID, nullable=False)
created_at: Mapped[datetime] = db.Column( created_at: Mapped[datetime] = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
)
used: Mapped[bool] = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) used: Mapped[bool] = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
used_by: Mapped[str | None] = db.Column(StringUUID, nullable=True) used_by: Mapped[str | None] = db.Column(StringUUID, nullable=True)
used_at: Mapped[datetime | None] = db.Column(db.DateTime, nullable=True) used_at: Mapped[datetime | None] = db.Column(db.DateTime, nullable=True)
@ -1485,7 +1481,7 @@ class ApiRequest(db.Model):
request = db.Column(db.Text, nullable=True) request = db.Column(db.Text, nullable=True)
response = db.Column(db.Text, nullable=True) response = db.Column(db.Text, nullable=True)
ip = db.Column(db.String(255), nullable=False) ip = db.Column(db.String(255), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class MessageChain(db.Model): class MessageChain(db.Model):
@ -1657,7 +1653,7 @@ class Tag(db.Model):
type = db.Column(db.String(16), nullable=False) type = db.Column(db.String(16), nullable=False)
name = db.Column(db.String(255), nullable=False) name = db.Column(db.String(255), nullable=False)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class TagBinding(db.Model): class TagBinding(db.Model):
@ -1673,7 +1669,7 @@ class TagBinding(db.Model):
tag_id = db.Column(StringUUID, nullable=True) tag_id = db.Column(StringUUID, nullable=True)
target_id = db.Column(StringUUID, nullable=True) target_id = db.Column(StringUUID, nullable=True)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class TraceAppConfig(db.Model): class TraceAppConfig(db.Model):
@ -1687,8 +1683,10 @@ class TraceAppConfig(db.Model):
app_id = db.Column(StringUUID, nullable=False) app_id = db.Column(StringUUID, nullable=False)
tracing_provider = db.Column(db.String(255), nullable=True) tracing_provider = db.Column(db.String(255), nullable=True)
tracing_config = db.Column(db.JSON, nullable=True) tracing_config = db.Column(db.JSON, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=func.now()) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=func.now(), onupdate=func.now()) updated_at = db.Column(
db.DateTime, nullable=False, server_default=func.current_timestamp(), onupdate=func.current_timestamp()
)
is_active = db.Column(db.Boolean, nullable=False, server_default=db.text("true")) is_active = db.Column(db.Boolean, nullable=False, server_default=db.text("true"))
@property @property

View File

@ -1,5 +1,7 @@
from enum import Enum from enum import Enum
from sqlalchemy import func
from .engine import db from .engine import db
from .types import StringUUID from .types import StringUUID
@ -60,8 +62,8 @@ class Provider(db.Model):
quota_limit = db.Column(db.BigInteger, nullable=True) quota_limit = db.Column(db.BigInteger, nullable=True)
quota_used = db.Column(db.BigInteger, default=0) quota_used = db.Column(db.BigInteger, default=0)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
def __repr__(self): def __repr__(self):
return ( return (
@ -108,8 +110,8 @@ class ProviderModel(db.Model):
model_type = db.Column(db.String(40), nullable=False) model_type = db.Column(db.String(40), nullable=False)
encrypted_config = db.Column(db.Text, nullable=True) encrypted_config = db.Column(db.Text, nullable=True)
is_valid = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) is_valid = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class TenantDefaultModel(db.Model): class TenantDefaultModel(db.Model):
@ -124,8 +126,8 @@ class TenantDefaultModel(db.Model):
provider_name = db.Column(db.String(255), nullable=False) provider_name = db.Column(db.String(255), nullable=False)
model_name = db.Column(db.String(255), nullable=False) model_name = db.Column(db.String(255), nullable=False)
model_type = db.Column(db.String(40), nullable=False) model_type = db.Column(db.String(40), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class TenantPreferredModelProvider(db.Model): class TenantPreferredModelProvider(db.Model):
@ -139,8 +141,8 @@ class TenantPreferredModelProvider(db.Model):
tenant_id = db.Column(StringUUID, nullable=False) tenant_id = db.Column(StringUUID, nullable=False)
provider_name = db.Column(db.String(255), nullable=False) provider_name = db.Column(db.String(255), nullable=False)
preferred_provider_type = db.Column(db.String(40), nullable=False) preferred_provider_type = db.Column(db.String(40), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class ProviderOrder(db.Model): class ProviderOrder(db.Model):
@ -164,8 +166,8 @@ class ProviderOrder(db.Model):
paid_at = db.Column(db.DateTime) paid_at = db.Column(db.DateTime)
pay_failed_at = db.Column(db.DateTime) pay_failed_at = db.Column(db.DateTime)
refunded_at = db.Column(db.DateTime) refunded_at = db.Column(db.DateTime)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class ProviderModelSetting(db.Model): class ProviderModelSetting(db.Model):
@ -186,8 +188,8 @@ class ProviderModelSetting(db.Model):
model_type = db.Column(db.String(40), nullable=False) model_type = db.Column(db.String(40), nullable=False)
enabled = db.Column(db.Boolean, nullable=False, server_default=db.text("true")) enabled = db.Column(db.Boolean, nullable=False, server_default=db.text("true"))
load_balancing_enabled = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) load_balancing_enabled = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class LoadBalancingModelConfig(db.Model): class LoadBalancingModelConfig(db.Model):
@ -209,5 +211,5 @@ class LoadBalancingModelConfig(db.Model):
name = db.Column(db.String(255), nullable=False) name = db.Column(db.String(255), nullable=False)
encrypted_config = db.Column(db.Text, nullable=True) encrypted_config = db.Column(db.Text, nullable=True)
enabled = db.Column(db.Boolean, nullable=False, server_default=db.text("true")) enabled = db.Column(db.Boolean, nullable=False, server_default=db.text("true"))
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())

View File

@ -1,5 +1,6 @@
import json import json
from sqlalchemy import func
from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.dialects.postgresql import JSONB
from .engine import db from .engine import db
@ -19,8 +20,8 @@ class DataSourceOauthBinding(db.Model):
access_token = db.Column(db.String(255), nullable=False) access_token = db.Column(db.String(255), nullable=False)
provider = db.Column(db.String(255), nullable=False) provider = db.Column(db.String(255), nullable=False)
source_info = db.Column(JSONB, nullable=False) source_info = db.Column(JSONB, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
disabled = db.Column(db.Boolean, nullable=True, server_default=db.text("false")) disabled = db.Column(db.Boolean, nullable=True, server_default=db.text("false"))
@ -37,8 +38,8 @@ class DataSourceApiKeyAuthBinding(db.Model):
category = db.Column(db.String(255), nullable=False) category = db.Column(db.String(255), nullable=False)
provider = db.Column(db.String(255), nullable=False) provider = db.Column(db.String(255), nullable=False)
credentials = db.Column(db.Text, nullable=True) # JSON credentials = db.Column(db.Text, nullable=True) # JSON
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
disabled = db.Column(db.Boolean, nullable=True, server_default=db.text("false")) disabled = db.Column(db.Boolean, nullable=True, server_default=db.text("false"))
def to_dict(self): def to_dict(self):

View File

@ -2,7 +2,7 @@ import json
from typing import Optional from typing import Optional
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy import ForeignKey from sqlalchemy import ForeignKey, func
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column
from core.tools.entities.common_entities import I18nObject from core.tools.entities.common_entities import I18nObject
@ -36,8 +36,8 @@ class BuiltinToolProvider(db.Model):
provider = db.Column(db.String(40), nullable=False) provider = db.Column(db.String(40), nullable=False)
# credential of the tool provider # credential of the tool provider
encrypted_credentials = db.Column(db.Text, nullable=True) encrypted_credentials = db.Column(db.Text, nullable=True)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def credentials(self) -> dict: def credentials(self) -> dict:
@ -74,8 +74,8 @@ class PublishedAppTool(db.Model):
tool_name = db.Column(db.String(40), nullable=False) tool_name = db.Column(db.String(40), nullable=False)
# author # author
author = db.Column(db.String(40), nullable=False) author = db.Column(db.String(40), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def description_i18n(self) -> I18nObject: def description_i18n(self) -> I18nObject:
@ -120,8 +120,8 @@ class ApiToolProvider(db.Model):
# custom_disclaimer # custom_disclaimer
custom_disclaimer: Mapped[str] = mapped_column(sa.TEXT, default="") custom_disclaimer: Mapped[str] = mapped_column(sa.TEXT, default="")
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def schema_type(self) -> ApiProviderSchemaType: def schema_type(self) -> ApiProviderSchemaType:
@ -198,8 +198,8 @@ class WorkflowToolProvider(db.Model):
# privacy policy # privacy policy
privacy_policy = db.Column(db.String(255), nullable=True, server_default="") privacy_policy = db.Column(db.String(255), nullable=True, server_default="")
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def user(self) -> Account | None: def user(self) -> Account | None:
@ -251,8 +251,8 @@ class ToolModelInvoke(db.Model):
provider_response_latency = db.Column(db.Float, nullable=False, server_default=db.text("0")) provider_response_latency = db.Column(db.Float, nullable=False, server_default=db.text("0"))
total_price = db.Column(db.Numeric(10, 7)) total_price = db.Column(db.Numeric(10, 7))
currency = db.Column(db.String(255), nullable=False) currency = db.Column(db.String(255), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
class ToolConversationVariables(db.Model): class ToolConversationVariables(db.Model):
@ -278,8 +278,8 @@ class ToolConversationVariables(db.Model):
# variables pool # variables pool
variables_str = db.Column(db.Text, nullable=False) variables_str = db.Column(db.Text, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
updated_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def variables(self) -> dict: def variables(self) -> dict:

View File

@ -1,3 +1,5 @@
from sqlalchemy import func
from .engine import db from .engine import db
from .model import Message from .model import Message
from .types import StringUUID from .types import StringUUID
@ -15,7 +17,7 @@ class SavedMessage(db.Model):
message_id = db.Column(StringUUID, nullable=False) message_id = db.Column(StringUUID, nullable=False)
created_by_role = db.Column(db.String(255), nullable=False, server_default=db.text("'end_user'::character varying")) created_by_role = db.Column(db.String(255), nullable=False, server_default=db.text("'end_user'::character varying"))
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def message(self): def message(self):
@ -34,4 +36,4 @@ class PinnedConversation(db.Model):
conversation_id = db.Column(StringUUID, nullable=False) conversation_id = db.Column(StringUUID, nullable=False)
created_by_role = db.Column(db.String(255), nullable=False, server_default=db.text("'end_user'::character varying")) created_by_role = db.Column(db.String(255), nullable=False, server_default=db.text("'end_user'::character varying"))
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())

View File

@ -1,6 +1,6 @@
import json import json
from collections.abc import Mapping, Sequence from collections.abc import Mapping, Sequence
from datetime import UTC, datetime from datetime import datetime
from enum import Enum, StrEnum from enum import Enum, StrEnum
from typing import Any, Optional, Union from typing import Any, Optional, Union
@ -103,12 +103,10 @@ class Workflow(db.Model):
graph: Mapped[str] = mapped_column(sa.Text) graph: Mapped[str] = mapped_column(sa.Text)
_features: Mapped[str] = mapped_column("features", sa.TEXT) _features: Mapped[str] = mapped_column("features", sa.TEXT)
created_by: Mapped[str] = mapped_column(StringUUID, nullable=False) created_by: Mapped[str] = mapped_column(StringUUID, nullable=False)
created_at: Mapped[datetime] = mapped_column( created_at: Mapped[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
)
updated_by: Mapped[Optional[str]] = mapped_column(StringUUID) updated_by: Mapped[Optional[str]] = mapped_column(StringUUID)
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
sa.DateTime, nullable=False, default=datetime.now(tz=UTC), server_onupdate=func.current_timestamp() db.DateTime, nullable=False, server_default=func.current_timestamp(), server_onupdate=func.current_timestamp()
) )
_environment_variables: Mapped[str] = mapped_column( _environment_variables: Mapped[str] = mapped_column(
"environment_variables", db.Text, nullable=False, server_default="{}" "environment_variables", db.Text, nullable=False, server_default="{}"
@ -406,7 +404,7 @@ class WorkflowRun(db.Model):
total_steps = db.Column(db.Integer, server_default=db.text("0")) total_steps = db.Column(db.Integer, server_default=db.text("0"))
created_by_role = db.Column(db.String(255), nullable=False) # account, end_user created_by_role = db.Column(db.String(255), nullable=False) # account, end_user
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
finished_at = db.Column(db.DateTime) finished_at = db.Column(db.DateTime)
exceptions_count = db.Column(db.Integer, server_default=db.text("0")) exceptions_count = db.Column(db.Integer, server_default=db.text("0"))
@ -636,7 +634,7 @@ class WorkflowNodeExecution(db.Model):
error = db.Column(db.Text) error = db.Column(db.Text)
elapsed_time = db.Column(db.Float, nullable=False, server_default=db.text("0")) elapsed_time = db.Column(db.Float, nullable=False, server_default=db.text("0"))
execution_metadata = db.Column(db.Text) execution_metadata = db.Column(db.Text)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
created_by_role = db.Column(db.String(255), nullable=False) created_by_role = db.Column(db.String(255), nullable=False)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
finished_at = db.Column(db.DateTime) finished_at = db.Column(db.DateTime)
@ -755,7 +753,7 @@ class WorkflowAppLog(db.Model):
created_from = db.Column(db.String(255), nullable=False) created_from = db.Column(db.String(255), nullable=False)
created_by_role = db.Column(db.String(255), nullable=False) created_by_role = db.Column(db.String(255), nullable=False)
created_by = db.Column(StringUUID, nullable=False) created_by = db.Column(StringUUID, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
@property @property
def workflow_run(self): def workflow_run(self):
@ -781,7 +779,7 @@ class ConversationVariable(db.Model):
conversation_id: Mapped[str] = db.Column(StringUUID, nullable=False, primary_key=True) conversation_id: Mapped[str] = db.Column(StringUUID, nullable=False, primary_key=True)
app_id: Mapped[str] = db.Column(StringUUID, nullable=False, index=True) app_id: Mapped[str] = db.Column(StringUUID, nullable=False, index=True)
data = db.Column(db.Text, nullable=False) data = db.Column(db.Text, nullable=False)
created_at = db.Column(db.DateTime, nullable=False, index=True, server_default=db.text("CURRENT_TIMESTAMP(0)")) created_at = db.Column(db.DateTime, nullable=False, index=True, server_default=func.current_timestamp())
updated_at = db.Column( updated_at = db.Column(
db.DateTime, nullable=False, server_default=func.current_timestamp(), onupdate=func.current_timestamp() db.DateTime, nullable=False, server_default=func.current_timestamp(), onupdate=func.current_timestamp()
) )