replace db with sa to get typing support (#23240)
This commit is contained in:
parent
ff9fd0cdb2
commit
58608f51da
17 changed files with 623 additions and 613 deletions
|
|
@ -5,6 +5,7 @@ import secrets
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
import click
|
import click
|
||||||
|
import sqlalchemy as sa
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from pydantic import TypeAdapter
|
from pydantic import TypeAdapter
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
@ -457,7 +458,7 @@ def convert_to_agent_apps():
|
||||||
"""
|
"""
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query))
|
rs = conn.execute(sa.text(sql_query))
|
||||||
|
|
||||||
apps = []
|
apps = []
|
||||||
for i in rs:
|
for i in rs:
|
||||||
|
|
@ -702,7 +703,7 @@ def fix_app_site_missing():
|
||||||
sql = """select apps.id as id from apps left join sites on sites.app_id=apps.id
|
sql = """select apps.id as id from apps left join sites on sites.app_id=apps.id
|
||||||
where sites.id is null limit 1000"""
|
where sites.id is null limit 1000"""
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql))
|
rs = conn.execute(sa.text(sql))
|
||||||
|
|
||||||
processed_count = 0
|
processed_count = 0
|
||||||
for i in rs:
|
for i in rs:
|
||||||
|
|
@ -916,7 +917,7 @@ def clear_orphaned_file_records(force: bool):
|
||||||
)
|
)
|
||||||
orphaned_message_files = []
|
orphaned_message_files = []
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(query))
|
rs = conn.execute(sa.text(query))
|
||||||
for i in rs:
|
for i in rs:
|
||||||
orphaned_message_files.append({"id": str(i[0]), "message_id": str(i[1])})
|
orphaned_message_files.append({"id": str(i[0]), "message_id": str(i[1])})
|
||||||
|
|
||||||
|
|
@ -937,7 +938,7 @@ def clear_orphaned_file_records(force: bool):
|
||||||
click.echo(click.style("- Deleting orphaned message_files records", fg="white"))
|
click.echo(click.style("- Deleting orphaned message_files records", fg="white"))
|
||||||
query = "DELETE FROM message_files WHERE id IN :ids"
|
query = "DELETE FROM message_files WHERE id IN :ids"
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
conn.execute(db.text(query), {"ids": tuple([record["id"] for record in orphaned_message_files])})
|
conn.execute(sa.text(query), {"ids": tuple([record["id"] for record in orphaned_message_files])})
|
||||||
click.echo(
|
click.echo(
|
||||||
click.style(f"Removed {len(orphaned_message_files)} orphaned message_files records.", fg="green")
|
click.style(f"Removed {len(orphaned_message_files)} orphaned message_files records.", fg="green")
|
||||||
)
|
)
|
||||||
|
|
@ -954,7 +955,7 @@ def clear_orphaned_file_records(force: bool):
|
||||||
click.echo(click.style(f"- Listing file records in table {files_table['table']}", fg="white"))
|
click.echo(click.style(f"- Listing file records in table {files_table['table']}", fg="white"))
|
||||||
query = f"SELECT {files_table['id_column']}, {files_table['key_column']} FROM {files_table['table']}"
|
query = f"SELECT {files_table['id_column']}, {files_table['key_column']} FROM {files_table['table']}"
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(query))
|
rs = conn.execute(sa.text(query))
|
||||||
for i in rs:
|
for i in rs:
|
||||||
all_files_in_tables.append({"table": files_table["table"], "id": str(i[0]), "key": i[1]})
|
all_files_in_tables.append({"table": files_table["table"], "id": str(i[0]), "key": i[1]})
|
||||||
click.echo(click.style(f"Found {len(all_files_in_tables)} files in tables.", fg="white"))
|
click.echo(click.style(f"Found {len(all_files_in_tables)} files in tables.", fg="white"))
|
||||||
|
|
@ -974,7 +975,7 @@ def clear_orphaned_file_records(force: bool):
|
||||||
f"SELECT {ids_table['column']} FROM {ids_table['table']} WHERE {ids_table['column']} IS NOT NULL"
|
f"SELECT {ids_table['column']} FROM {ids_table['table']} WHERE {ids_table['column']} IS NOT NULL"
|
||||||
)
|
)
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(query))
|
rs = conn.execute(sa.text(query))
|
||||||
for i in rs:
|
for i in rs:
|
||||||
all_ids_in_tables.append({"table": ids_table["table"], "id": str(i[0])})
|
all_ids_in_tables.append({"table": ids_table["table"], "id": str(i[0])})
|
||||||
elif ids_table["type"] == "text":
|
elif ids_table["type"] == "text":
|
||||||
|
|
@ -989,7 +990,7 @@ def clear_orphaned_file_records(force: bool):
|
||||||
f"FROM {ids_table['table']}"
|
f"FROM {ids_table['table']}"
|
||||||
)
|
)
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(query))
|
rs = conn.execute(sa.text(query))
|
||||||
for i in rs:
|
for i in rs:
|
||||||
for j in i[0]:
|
for j in i[0]:
|
||||||
all_ids_in_tables.append({"table": ids_table["table"], "id": j})
|
all_ids_in_tables.append({"table": ids_table["table"], "id": j})
|
||||||
|
|
@ -1008,7 +1009,7 @@ def clear_orphaned_file_records(force: bool):
|
||||||
f"FROM {ids_table['table']}"
|
f"FROM {ids_table['table']}"
|
||||||
)
|
)
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(query))
|
rs = conn.execute(sa.text(query))
|
||||||
for i in rs:
|
for i in rs:
|
||||||
for j in i[0]:
|
for j in i[0]:
|
||||||
all_ids_in_tables.append({"table": ids_table["table"], "id": j})
|
all_ids_in_tables.append({"table": ids_table["table"], "id": j})
|
||||||
|
|
@ -1037,7 +1038,7 @@ def clear_orphaned_file_records(force: bool):
|
||||||
click.echo(click.style(f"- Deleting orphaned file records in table {files_table['table']}", fg="white"))
|
click.echo(click.style(f"- Deleting orphaned file records in table {files_table['table']}", fg="white"))
|
||||||
query = f"DELETE FROM {files_table['table']} WHERE {files_table['id_column']} IN :ids"
|
query = f"DELETE FROM {files_table['table']} WHERE {files_table['id_column']} IN :ids"
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
conn.execute(db.text(query), {"ids": tuple(orphaned_files)})
|
conn.execute(sa.text(query), {"ids": tuple(orphaned_files)})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
click.echo(click.style(f"Error deleting orphaned file records: {str(e)}", fg="red"))
|
click.echo(click.style(f"Error deleting orphaned file records: {str(e)}", fg="red"))
|
||||||
return
|
return
|
||||||
|
|
@ -1107,7 +1108,7 @@ def remove_orphaned_files_on_storage(force: bool):
|
||||||
click.echo(click.style(f"- Listing files from table {files_table['table']}", fg="white"))
|
click.echo(click.style(f"- Listing files from table {files_table['table']}", fg="white"))
|
||||||
query = f"SELECT {files_table['key_column']} FROM {files_table['table']}"
|
query = f"SELECT {files_table['key_column']} FROM {files_table['table']}"
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(query))
|
rs = conn.execute(sa.text(query))
|
||||||
for i in rs:
|
for i in rs:
|
||||||
all_files_in_tables.append(str(i[0]))
|
all_files_in_tables.append(str(i[0]))
|
||||||
click.echo(click.style(f"Found {len(all_files_in_tables)} files in tables.", fg="white"))
|
click.echo(click.style(f"Found {len(all_files_in_tables)} files in tables.", fg="white"))
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append({"date": str(i.date), "message_count": i.message_count})
|
response_data.append({"date": str(i.date), "message_count": i.message_count})
|
||||||
|
|
||||||
|
|
@ -176,7 +176,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append({"date": str(i.date), "terminal_count": i.terminal_count})
|
response_data.append({"date": str(i.date), "terminal_count": i.terminal_count})
|
||||||
|
|
||||||
|
|
@ -234,7 +234,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append(
|
response_data.append(
|
||||||
{"date": str(i.date), "token_count": i.token_count, "total_price": i.total_price, "currency": "USD"}
|
{"date": str(i.date), "token_count": i.token_count, "total_price": i.total_price, "currency": "USD"}
|
||||||
|
|
@ -310,7 +310,7 @@ ORDER BY
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append(
|
response_data.append(
|
||||||
{"date": str(i.date), "interactions": float(i.interactions.quantize(Decimal("0.01")))}
|
{"date": str(i.date), "interactions": float(i.interactions.quantize(Decimal("0.01")))}
|
||||||
|
|
@ -373,7 +373,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append(
|
response_data.append(
|
||||||
{
|
{
|
||||||
|
|
@ -435,7 +435,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append({"date": str(i.date), "latency": round(i.latency * 1000, 4)})
|
response_data.append({"date": str(i.date), "latency": round(i.latency * 1000, 4)})
|
||||||
|
|
||||||
|
|
@ -495,7 +495,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append({"date": str(i.date), "tps": round(i.tokens_per_second, 4)})
|
response_data.append({"date": str(i.date), "tps": round(i.tokens_per_second, 4)})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ from datetime import datetime
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
import pytz
|
import pytz
|
||||||
|
import sqlalchemy as sa
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from flask_restful import Resource, reqparse
|
from flask_restful import Resource, reqparse
|
||||||
|
|
@ -71,7 +72,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append({"date": str(i.date), "runs": i.runs})
|
response_data.append({"date": str(i.date), "runs": i.runs})
|
||||||
|
|
||||||
|
|
@ -133,7 +134,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append({"date": str(i.date), "terminal_count": i.terminal_count})
|
response_data.append({"date": str(i.date), "terminal_count": i.terminal_count})
|
||||||
|
|
||||||
|
|
@ -195,7 +196,7 @@ WHERE
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append(
|
response_data.append(
|
||||||
{
|
{
|
||||||
|
|
@ -277,7 +278,7 @@ GROUP BY
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql_query), arg_dict)
|
rs = conn.execute(sa.text(sql_query), arg_dict)
|
||||||
for i in rs:
|
for i in rs:
|
||||||
response_data.append(
|
response_data.append(
|
||||||
{"date": str(i.date), "interactions": float(i.interactions.quantize(Decimal("0.01")))}
|
{"date": str(i.date), "interactions": float(i.interactions.quantize(Decimal("0.01")))}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ from os import listdir, path
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
from typing import TYPE_CHECKING, Any, Literal, Optional, Union, cast
|
from typing import TYPE_CHECKING, Any, Literal, Optional, Union, cast
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from pydantic import TypeAdapter
|
from pydantic import TypeAdapter
|
||||||
from yarl import URL
|
from yarl import URL
|
||||||
|
|
||||||
|
|
@ -616,7 +617,7 @@ class ToolManager:
|
||||||
WHERE tenant_id = :tenant_id
|
WHERE tenant_id = :tenant_id
|
||||||
ORDER BY tenant_id, provider, is_default DESC, created_at DESC
|
ORDER BY tenant_id, provider, is_default DESC, created_at DESC
|
||||||
"""
|
"""
|
||||||
ids = [row.id for row in db.session.execute(db.text(sql), {"tenant_id": tenant_id}).all()]
|
ids = [row.id for row in db.session.execute(sa.text(sql), {"tenant_id": tenant_id}).all()]
|
||||||
return db.session.query(BuiltinToolProvider).where(BuiltinToolProvider.id.in_(ids)).all()
|
return db.session.query(BuiltinToolProvider).where(BuiltinToolProvider.id.in_(ids)).all()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import json
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional, cast
|
from typing import Optional, cast
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from flask_login import UserMixin # type: ignore
|
from flask_login import UserMixin # type: ignore
|
||||||
from sqlalchemy import DateTime, String, func, select
|
from sqlalchemy import DateTime, String, func, select
|
||||||
from sqlalchemy.orm import Mapped, mapped_column, reconstructor
|
from sqlalchemy.orm import Mapped, mapped_column, reconstructor
|
||||||
|
|
@ -83,9 +84,9 @@ class AccountStatus(enum.StrEnum):
|
||||||
|
|
||||||
class Account(UserMixin, Base):
|
class Account(UserMixin, Base):
|
||||||
__tablename__ = "accounts"
|
__tablename__ = "accounts"
|
||||||
__table_args__ = (db.PrimaryKeyConstraint("id", name="account_pkey"), db.Index("account_email_idx", "email"))
|
__table_args__ = (sa.PrimaryKeyConstraint("id", name="account_pkey"), sa.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=sa.text("uuid_generate_v4()"))
|
||||||
name: Mapped[str] = mapped_column(String(255))
|
name: Mapped[str] = mapped_column(String(255))
|
||||||
email: Mapped[str] = mapped_column(String(255))
|
email: Mapped[str] = mapped_column(String(255))
|
||||||
password: Mapped[Optional[str]] = mapped_column(String(255))
|
password: Mapped[Optional[str]] = mapped_column(String(255))
|
||||||
|
|
@ -97,7 +98,7 @@ class Account(UserMixin, Base):
|
||||||
last_login_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
last_login_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
last_login_ip: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
|
last_login_ip: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
|
||||||
last_active_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp(), nullable=False)
|
last_active_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp(), nullable=False)
|
||||||
status: Mapped[str] = mapped_column(String(16), server_default=db.text("'active'::character varying"))
|
status: Mapped[str] = mapped_column(String(16), server_default=sa.text("'active'::character varying"))
|
||||||
initialized_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
initialized_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp(), nullable=False)
|
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp(), nullable=False)
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp(), nullable=False)
|
updated_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp(), nullable=False)
|
||||||
|
|
@ -195,14 +196,14 @@ class TenantStatus(enum.StrEnum):
|
||||||
|
|
||||||
class Tenant(Base):
|
class Tenant(Base):
|
||||||
__tablename__ = "tenants"
|
__tablename__ = "tenants"
|
||||||
__table_args__ = (db.PrimaryKeyConstraint("id", name="tenant_pkey"),)
|
__table_args__ = (sa.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=sa.text("uuid_generate_v4()"))
|
||||||
name: Mapped[str] = mapped_column(String(255))
|
name: Mapped[str] = mapped_column(String(255))
|
||||||
encrypt_public_key = db.Column(db.Text)
|
encrypt_public_key = db.Column(sa.Text)
|
||||||
plan: Mapped[str] = mapped_column(String(255), server_default=db.text("'basic'::character varying"))
|
plan: Mapped[str] = mapped_column(String(255), server_default=sa.text("'basic'::character varying"))
|
||||||
status: Mapped[str] = mapped_column(String(255), server_default=db.text("'normal'::character varying"))
|
status: Mapped[str] = mapped_column(String(255), server_default=sa.text("'normal'::character varying"))
|
||||||
custom_config: Mapped[Optional[str]] = mapped_column(db.Text)
|
custom_config: Mapped[Optional[str]] = mapped_column(sa.Text)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp(), nullable=False)
|
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp(), nullable=False)
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
@ -225,16 +226,16 @@ class Tenant(Base):
|
||||||
class TenantAccountJoin(Base):
|
class TenantAccountJoin(Base):
|
||||||
__tablename__ = "tenant_account_joins"
|
__tablename__ = "tenant_account_joins"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tenant_account_join_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tenant_account_join_pkey"),
|
||||||
db.Index("tenant_account_join_account_id_idx", "account_id"),
|
sa.Index("tenant_account_join_account_id_idx", "account_id"),
|
||||||
db.Index("tenant_account_join_tenant_id_idx", "tenant_id"),
|
sa.Index("tenant_account_join_tenant_id_idx", "tenant_id"),
|
||||||
db.UniqueConstraint("tenant_id", "account_id", name="unique_tenant_account_join"),
|
sa.UniqueConstraint("tenant_id", "account_id", name="unique_tenant_account_join"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
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(sa.Boolean, server_default=sa.text("false"))
|
||||||
role: Mapped[str] = mapped_column(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(DateTime, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp())
|
||||||
|
|
@ -244,12 +245,12 @@ class TenantAccountJoin(Base):
|
||||||
class AccountIntegrate(Base):
|
class AccountIntegrate(Base):
|
||||||
__tablename__ = "account_integrates"
|
__tablename__ = "account_integrates"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="account_integrate_pkey"),
|
sa.PrimaryKeyConstraint("id", name="account_integrate_pkey"),
|
||||||
db.UniqueConstraint("account_id", "provider", name="unique_account_provider"),
|
sa.UniqueConstraint("account_id", "provider", name="unique_account_provider"),
|
||||||
db.UniqueConstraint("provider", "open_id", name="unique_provider_open_id"),
|
sa.UniqueConstraint("provider", "open_id", name="unique_provider_open_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
account_id: Mapped[str] = mapped_column(StringUUID)
|
account_id: Mapped[str] = mapped_column(StringUUID)
|
||||||
provider: Mapped[str] = mapped_column(String(16))
|
provider: Mapped[str] = mapped_column(String(16))
|
||||||
open_id: Mapped[str] = mapped_column(String(255))
|
open_id: Mapped[str] = mapped_column(String(255))
|
||||||
|
|
@ -261,20 +262,20 @@ class AccountIntegrate(Base):
|
||||||
class InvitationCode(Base):
|
class InvitationCode(Base):
|
||||||
__tablename__ = "invitation_codes"
|
__tablename__ = "invitation_codes"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="invitation_code_pkey"),
|
sa.PrimaryKeyConstraint("id", name="invitation_code_pkey"),
|
||||||
db.Index("invitation_codes_batch_idx", "batch"),
|
sa.Index("invitation_codes_batch_idx", "batch"),
|
||||||
db.Index("invitation_codes_code_idx", "code", "status"),
|
sa.Index("invitation_codes_code_idx", "code", "status"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(db.Integer)
|
id: Mapped[int] = mapped_column(sa.Integer)
|
||||||
batch: Mapped[str] = mapped_column(String(255))
|
batch: Mapped[str] = mapped_column(String(255))
|
||||||
code: Mapped[str] = mapped_column(String(32))
|
code: Mapped[str] = mapped_column(String(32))
|
||||||
status: Mapped[str] = mapped_column(String(16), server_default=db.text("'unused'::character varying"))
|
status: Mapped[str] = mapped_column(String(16), server_default=sa.text("'unused'::character varying"))
|
||||||
used_at: Mapped[Optional[datetime]] = mapped_column(DateTime)
|
used_at: Mapped[Optional[datetime]] = mapped_column(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)
|
||||||
deprecated_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
deprecated_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=db.text("CURRENT_TIMESTAMP(0)"))
|
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=sa.text("CURRENT_TIMESTAMP(0)"))
|
||||||
|
|
||||||
|
|
||||||
class TenantPluginPermission(Base):
|
class TenantPluginPermission(Base):
|
||||||
|
|
@ -290,11 +291,11 @@ class TenantPluginPermission(Base):
|
||||||
|
|
||||||
__tablename__ = "account_plugin_permissions"
|
__tablename__ = "account_plugin_permissions"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="account_plugin_permission_pkey"),
|
sa.PrimaryKeyConstraint("id", name="account_plugin_permission_pkey"),
|
||||||
db.UniqueConstraint("tenant_id", name="unique_tenant_plugin"),
|
sa.UniqueConstraint("tenant_id", name="unique_tenant_plugin"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.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(String(16), nullable=False, server_default="everyone")
|
install_permission: Mapped[InstallPermission] = mapped_column(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(String(16), nullable=False, server_default="noone")
|
||||||
|
|
@ -313,16 +314,16 @@ class TenantPluginAutoUpgradeStrategy(Base):
|
||||||
|
|
||||||
__tablename__ = "tenant_plugin_auto_upgrade_strategies"
|
__tablename__ = "tenant_plugin_auto_upgrade_strategies"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tenant_plugin_auto_upgrade_strategy_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tenant_plugin_auto_upgrade_strategy_pkey"),
|
||||||
db.UniqueConstraint("tenant_id", name="unique_tenant_plugin_auto_upgrade_strategy"),
|
sa.UniqueConstraint("tenant_id", name="unique_tenant_plugin_auto_upgrade_strategy"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.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(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(sa.Integer, nullable=False, default=0) # seconds of the day
|
||||||
upgrade_mode: Mapped[UpgradeMode] = mapped_column(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(db.ARRAY(String(255)), nullable=False) # plugin_id (author/name)
|
exclude_plugins: Mapped[list[str]] = mapped_column(sa.ARRAY(String(255)), nullable=False) # plugin_id (author/name)
|
||||||
include_plugins: Mapped[list[str]] = mapped_column(db.ARRAY(String(255)), nullable=False) # plugin_id (author/name)
|
include_plugins: Mapped[list[str]] = mapped_column(sa.ARRAY(String(255)), nullable=False) # plugin_id (author/name)
|
||||||
created_at = db.Column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = db.Column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at = db.Column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at = db.Column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import enum
|
import enum
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from sqlalchemy import DateTime, String, Text, func
|
from sqlalchemy import DateTime, String, Text, func
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
from .base import Base
|
from .base import Base
|
||||||
from .engine import db
|
|
||||||
from .types import StringUUID
|
from .types import StringUUID
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -19,11 +19,11 @@ class APIBasedExtensionPoint(enum.Enum):
|
||||||
class APIBasedExtension(Base):
|
class APIBasedExtension(Base):
|
||||||
__tablename__ = "api_based_extensions"
|
__tablename__ = "api_based_extensions"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="api_based_extension_pkey"),
|
sa.PrimaryKeyConstraint("id", name="api_based_extension_pkey"),
|
||||||
db.Index("api_based_extension_tenant_idx", "tenant_id"),
|
sa.Index("api_based_extension_tenant_idx", "tenant_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=False)
|
tenant_id = mapped_column(StringUUID, nullable=False)
|
||||||
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
api_endpoint: Mapped[str] = mapped_column(String(255), nullable=False)
|
api_endpoint: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ from datetime import datetime
|
||||||
from json import JSONDecodeError
|
from json import JSONDecodeError
|
||||||
from typing import Any, Optional, cast
|
from typing import Any, Optional, cast
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from sqlalchemy import DateTime, String, func, select
|
from sqlalchemy import DateTime, String, 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
|
||||||
|
|
@ -38,23 +39,23 @@ class DatasetPermissionEnum(enum.StrEnum):
|
||||||
class Dataset(Base):
|
class Dataset(Base):
|
||||||
__tablename__ = "datasets"
|
__tablename__ = "datasets"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_pkey"),
|
||||||
db.Index("dataset_tenant_idx", "tenant_id"),
|
sa.Index("dataset_tenant_idx", "tenant_id"),
|
||||||
db.Index("retrieval_model_idx", "retrieval_model", postgresql_using="gin"),
|
sa.Index("retrieval_model_idx", "retrieval_model", postgresql_using="gin"),
|
||||||
)
|
)
|
||||||
|
|
||||||
INDEXING_TECHNIQUE_LIST = ["high_quality", "economy", None]
|
INDEXING_TECHNIQUE_LIST = ["high_quality", "economy", None]
|
||||||
PROVIDER_LIST = ["vendor", "external", None]
|
PROVIDER_LIST = ["vendor", "external", None]
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id: Mapped[str] = mapped_column(StringUUID)
|
tenant_id: Mapped[str] = mapped_column(StringUUID)
|
||||||
name: Mapped[str] = mapped_column(String(255))
|
name: Mapped[str] = mapped_column(String(255))
|
||||||
description = mapped_column(db.Text, nullable=True)
|
description = mapped_column(sa.Text, nullable=True)
|
||||||
provider: Mapped[str] = mapped_column(String(255), server_default=db.text("'vendor'::character varying"))
|
provider: Mapped[str] = mapped_column(String(255), server_default=sa.text("'vendor'::character varying"))
|
||||||
permission: Mapped[str] = mapped_column(String(255), server_default=db.text("'only_me'::character varying"))
|
permission: Mapped[str] = mapped_column(String(255), server_default=sa.text("'only_me'::character varying"))
|
||||||
data_source_type = mapped_column(String(255))
|
data_source_type = mapped_column(String(255))
|
||||||
indexing_technique: Mapped[Optional[str]] = mapped_column(String(255))
|
indexing_technique: Mapped[Optional[str]] = mapped_column(String(255))
|
||||||
index_struct = mapped_column(db.Text, nullable=True)
|
index_struct = mapped_column(sa.Text, nullable=True)
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_by = mapped_column(StringUUID, nullable=True)
|
updated_by = mapped_column(StringUUID, nullable=True)
|
||||||
|
|
@ -63,7 +64,7 @@ class Dataset(Base):
|
||||||
embedding_model_provider = db.Column(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[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
built_in_field_enabled: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def dataset_keyword_table(self):
|
def dataset_keyword_table(self):
|
||||||
|
|
@ -262,14 +263,14 @@ class Dataset(Base):
|
||||||
class DatasetProcessRule(Base):
|
class DatasetProcessRule(Base):
|
||||||
__tablename__ = "dataset_process_rules"
|
__tablename__ = "dataset_process_rules"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_process_rule_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_process_rule_pkey"),
|
||||||
db.Index("dataset_process_rule_dataset_id_idx", "dataset_id"),
|
sa.Index("dataset_process_rule_dataset_id_idx", "dataset_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.text("uuid_generate_v4()"))
|
||||||
dataset_id = mapped_column(StringUUID, nullable=False)
|
dataset_id = mapped_column(StringUUID, nullable=False)
|
||||||
mode = mapped_column(String(255), nullable=False, server_default=db.text("'automatic'::character varying"))
|
mode = mapped_column(String(255), nullable=False, server_default=sa.text("'automatic'::character varying"))
|
||||||
rules = mapped_column(db.Text, nullable=True)
|
rules = mapped_column(sa.Text, nullable=True)
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
@ -302,20 +303,20 @@ class DatasetProcessRule(Base):
|
||||||
class Document(Base):
|
class Document(Base):
|
||||||
__tablename__ = "documents"
|
__tablename__ = "documents"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="document_pkey"),
|
sa.PrimaryKeyConstraint("id", name="document_pkey"),
|
||||||
db.Index("document_dataset_id_idx", "dataset_id"),
|
sa.Index("document_dataset_id_idx", "dataset_id"),
|
||||||
db.Index("document_is_paused_idx", "is_paused"),
|
sa.Index("document_is_paused_idx", "is_paused"),
|
||||||
db.Index("document_tenant_idx", "tenant_id"),
|
sa.Index("document_tenant_idx", "tenant_id"),
|
||||||
db.Index("document_metadata_idx", "doc_metadata", postgresql_using="gin"),
|
sa.Index("document_metadata_idx", "doc_metadata", postgresql_using="gin"),
|
||||||
)
|
)
|
||||||
|
|
||||||
# initial fields
|
# initial fields
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.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)
|
||||||
position: Mapped[int] = mapped_column(db.Integer, nullable=False)
|
position: Mapped[int] = mapped_column(sa.Integer, nullable=False)
|
||||||
data_source_type: Mapped[str] = mapped_column(String(255), nullable=False)
|
data_source_type: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
data_source_info = mapped_column(db.Text, nullable=True)
|
data_source_info = mapped_column(sa.Text, nullable=True)
|
||||||
dataset_process_rule_id = mapped_column(StringUUID, nullable=True)
|
dataset_process_rule_id = mapped_column(StringUUID, nullable=True)
|
||||||
batch: Mapped[str] = mapped_column(String(255), nullable=False)
|
batch: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
|
|
@ -328,8 +329,8 @@ class Document(Base):
|
||||||
processing_started_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
processing_started_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
|
|
||||||
# parsing
|
# parsing
|
||||||
file_id = mapped_column(db.Text, nullable=True)
|
file_id = mapped_column(sa.Text, nullable=True)
|
||||||
word_count: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True) # TODO: make this not nullable
|
word_count: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True) # TODO: make this not nullable
|
||||||
parsing_completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
parsing_completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
|
|
||||||
# cleaning
|
# cleaning
|
||||||
|
|
@ -339,32 +340,32 @@ class Document(Base):
|
||||||
splitting_completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
splitting_completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
|
|
||||||
# indexing
|
# indexing
|
||||||
tokens: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True)
|
tokens: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True)
|
||||||
indexing_latency: Mapped[Optional[float]] = mapped_column(db.Float, nullable=True)
|
indexing_latency: Mapped[Optional[float]] = mapped_column(sa.Float, nullable=True)
|
||||||
completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
|
|
||||||
# pause
|
# pause
|
||||||
is_paused: Mapped[Optional[bool]] = mapped_column(db.Boolean, nullable=True, server_default=db.text("false"))
|
is_paused: Mapped[Optional[bool]] = mapped_column(sa.Boolean, nullable=True, server_default=sa.text("false"))
|
||||||
paused_by = mapped_column(StringUUID, nullable=True)
|
paused_by = mapped_column(StringUUID, nullable=True)
|
||||||
paused_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
paused_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
|
|
||||||
# error
|
# error
|
||||||
error = mapped_column(db.Text, nullable=True)
|
error = mapped_column(sa.Text, nullable=True)
|
||||||
stopped_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
stopped_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
|
|
||||||
# basic fields
|
# basic fields
|
||||||
indexing_status = mapped_column(String(255), nullable=False, server_default=db.text("'waiting'::character varying"))
|
indexing_status = mapped_column(String(255), nullable=False, server_default=sa.text("'waiting'::character varying"))
|
||||||
enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
|
enabled: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("true"))
|
||||||
disabled_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
disabled_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
disabled_by = mapped_column(StringUUID, nullable=True)
|
disabled_by = mapped_column(StringUUID, nullable=True)
|
||||||
archived: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
archived: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
archived_reason = mapped_column(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[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
archived_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
doc_type = mapped_column(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(String(255), nullable=False, server_default=db.text("'text_model'::character varying"))
|
doc_form = mapped_column(String(255), nullable=False, server_default=sa.text("'text_model'::character varying"))
|
||||||
doc_language = mapped_column(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"]
|
||||||
|
|
@ -643,44 +644,44 @@ class Document(Base):
|
||||||
class DocumentSegment(Base):
|
class DocumentSegment(Base):
|
||||||
__tablename__ = "document_segments"
|
__tablename__ = "document_segments"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="document_segment_pkey"),
|
sa.PrimaryKeyConstraint("id", name="document_segment_pkey"),
|
||||||
db.Index("document_segment_dataset_id_idx", "dataset_id"),
|
sa.Index("document_segment_dataset_id_idx", "dataset_id"),
|
||||||
db.Index("document_segment_document_id_idx", "document_id"),
|
sa.Index("document_segment_document_id_idx", "document_id"),
|
||||||
db.Index("document_segment_tenant_dataset_idx", "dataset_id", "tenant_id"),
|
sa.Index("document_segment_tenant_dataset_idx", "dataset_id", "tenant_id"),
|
||||||
db.Index("document_segment_tenant_document_idx", "document_id", "tenant_id"),
|
sa.Index("document_segment_tenant_document_idx", "document_id", "tenant_id"),
|
||||||
db.Index("document_segment_node_dataset_idx", "index_node_id", "dataset_id"),
|
sa.Index("document_segment_node_dataset_idx", "index_node_id", "dataset_id"),
|
||||||
db.Index("document_segment_tenant_idx", "tenant_id"),
|
sa.Index("document_segment_tenant_idx", "tenant_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
# initial fields
|
# initial fields
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.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)
|
||||||
document_id = mapped_column(StringUUID, nullable=False)
|
document_id = mapped_column(StringUUID, nullable=False)
|
||||||
position: Mapped[int]
|
position: Mapped[int]
|
||||||
content = mapped_column(db.Text, nullable=False)
|
content = mapped_column(sa.Text, nullable=False)
|
||||||
answer = mapped_column(db.Text, nullable=True)
|
answer = mapped_column(sa.Text, nullable=True)
|
||||||
word_count: Mapped[int]
|
word_count: Mapped[int]
|
||||||
tokens: Mapped[int]
|
tokens: Mapped[int]
|
||||||
|
|
||||||
# indexing fields
|
# indexing fields
|
||||||
keywords = mapped_column(db.JSON, nullable=True)
|
keywords = mapped_column(sa.JSON, nullable=True)
|
||||||
index_node_id = mapped_column(String(255), nullable=True)
|
index_node_id = mapped_column(String(255), nullable=True)
|
||||||
index_node_hash = mapped_column(String(255), nullable=True)
|
index_node_hash = mapped_column(String(255), nullable=True)
|
||||||
|
|
||||||
# basic fields
|
# basic fields
|
||||||
hit_count: Mapped[int] = mapped_column(db.Integer, nullable=False, default=0)
|
hit_count: Mapped[int] = mapped_column(sa.Integer, nullable=False, default=0)
|
||||||
enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
|
enabled: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("true"))
|
||||||
disabled_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
disabled_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
disabled_by = mapped_column(StringUUID, nullable=True)
|
disabled_by = mapped_column(StringUUID, nullable=True)
|
||||||
status: Mapped[str] = mapped_column(String(255), server_default=db.text("'waiting'::character varying"))
|
status: Mapped[str] = mapped_column(String(255), server_default=sa.text("'waiting'::character varying"))
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(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[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
indexing_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
indexing_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
error = mapped_column(db.Text, nullable=True)
|
error = mapped_column(sa.Text, nullable=True)
|
||||||
stopped_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
stopped_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
@ -794,36 +795,36 @@ class DocumentSegment(Base):
|
||||||
class ChildChunk(Base):
|
class ChildChunk(Base):
|
||||||
__tablename__ = "child_chunks"
|
__tablename__ = "child_chunks"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="child_chunk_pkey"),
|
sa.PrimaryKeyConstraint("id", name="child_chunk_pkey"),
|
||||||
db.Index("child_chunk_dataset_id_idx", "tenant_id", "dataset_id", "document_id", "segment_id", "index_node_id"),
|
sa.Index("child_chunk_dataset_id_idx", "tenant_id", "dataset_id", "document_id", "segment_id", "index_node_id"),
|
||||||
db.Index("child_chunks_node_idx", "index_node_id", "dataset_id"),
|
sa.Index("child_chunks_node_idx", "index_node_id", "dataset_id"),
|
||||||
db.Index("child_chunks_segment_idx", "segment_id"),
|
sa.Index("child_chunks_segment_idx", "segment_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
# initial fields
|
# initial fields
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.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)
|
||||||
document_id = mapped_column(StringUUID, nullable=False)
|
document_id = mapped_column(StringUUID, nullable=False)
|
||||||
segment_id = mapped_column(StringUUID, nullable=False)
|
segment_id = mapped_column(StringUUID, nullable=False)
|
||||||
position: Mapped[int] = mapped_column(db.Integer, nullable=False)
|
position: Mapped[int] = mapped_column(sa.Integer, nullable=False)
|
||||||
content = mapped_column(db.Text, nullable=False)
|
content = mapped_column(sa.Text, nullable=False)
|
||||||
word_count: Mapped[int] = mapped_column(db.Integer, nullable=False)
|
word_count: Mapped[int] = mapped_column(sa.Integer, nullable=False)
|
||||||
# indexing fields
|
# indexing fields
|
||||||
index_node_id = mapped_column(String(255), nullable=True)
|
index_node_id = mapped_column(String(255), nullable=True)
|
||||||
index_node_hash = mapped_column(String(255), nullable=True)
|
index_node_hash = mapped_column(String(255), nullable=True)
|
||||||
type = mapped_column(String(255), nullable=False, server_default=db.text("'automatic'::character varying"))
|
type = mapped_column(String(255), nullable=False, server_default=sa.text("'automatic'::character varying"))
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
updated_by = mapped_column(StringUUID, nullable=True)
|
updated_by = mapped_column(StringUUID, nullable=True)
|
||||||
updated_at: Mapped[datetime] = mapped_column(
|
updated_at: Mapped[datetime] = mapped_column(
|
||||||
DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
indexing_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
indexing_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
error = mapped_column(db.Text, nullable=True)
|
error = mapped_column(sa.Text, nullable=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def dataset(self):
|
def dataset(self):
|
||||||
|
|
@ -841,11 +842,11 @@ class ChildChunk(Base):
|
||||||
class AppDatasetJoin(Base):
|
class AppDatasetJoin(Base):
|
||||||
__tablename__ = "app_dataset_joins"
|
__tablename__ = "app_dataset_joins"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="app_dataset_join_pkey"),
|
sa.PrimaryKeyConstraint("id", name="app_dataset_join_pkey"),
|
||||||
db.Index("app_dataset_join_app_dataset_idx", "dataset_id", "app_id"),
|
sa.Index("app_dataset_join_app_dataset_idx", "dataset_id", "app_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
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=sa.text("uuid_generate_v4()"))
|
||||||
app_id = mapped_column(StringUUID, nullable=False)
|
app_id = mapped_column(StringUUID, nullable=False)
|
||||||
dataset_id = mapped_column(StringUUID, nullable=False)
|
dataset_id = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=db.func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=db.func.current_timestamp())
|
||||||
|
|
@ -858,13 +859,13 @@ class AppDatasetJoin(Base):
|
||||||
class DatasetQuery(Base):
|
class DatasetQuery(Base):
|
||||||
__tablename__ = "dataset_queries"
|
__tablename__ = "dataset_queries"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_query_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_query_pkey"),
|
||||||
db.Index("dataset_query_dataset_id_idx", "dataset_id"),
|
sa.Index("dataset_query_dataset_id_idx", "dataset_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
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=sa.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(sa.Text, nullable=False)
|
||||||
source: Mapped[str] = mapped_column(String(255), nullable=False)
|
source: Mapped[str] = 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(String, nullable=False)
|
created_by_role = mapped_column(String, nullable=False)
|
||||||
|
|
@ -875,15 +876,15 @@ class DatasetQuery(Base):
|
||||||
class DatasetKeywordTable(Base):
|
class DatasetKeywordTable(Base):
|
||||||
__tablename__ = "dataset_keyword_tables"
|
__tablename__ = "dataset_keyword_tables"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_keyword_table_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_keyword_table_pkey"),
|
||||||
db.Index("dataset_keyword_table_dataset_id_idx", "dataset_id"),
|
sa.Index("dataset_keyword_table_dataset_id_idx", "dataset_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, primary_key=True, server_default=sa.text("uuid_generate_v4()"))
|
||||||
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(sa.Text, nullable=False)
|
||||||
data_source_type = mapped_column(
|
data_source_type = mapped_column(
|
||||||
String(255), nullable=False, server_default=db.text("'database'::character varying")
|
String(255), nullable=False, server_default=sa.text("'database'::character varying")
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
@ -920,19 +921,19 @@ class DatasetKeywordTable(Base):
|
||||||
class Embedding(Base):
|
class Embedding(Base):
|
||||||
__tablename__ = "embeddings"
|
__tablename__ = "embeddings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="embedding_pkey"),
|
sa.PrimaryKeyConstraint("id", name="embedding_pkey"),
|
||||||
db.UniqueConstraint("model_name", "hash", "provider_name", name="embedding_hash_idx"),
|
sa.UniqueConstraint("model_name", "hash", "provider_name", name="embedding_hash_idx"),
|
||||||
db.Index("created_at_idx", "created_at"),
|
sa.Index("created_at_idx", "created_at"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, primary_key=True, server_default=sa.text("uuid_generate_v4()"))
|
||||||
model_name = mapped_column(
|
model_name = mapped_column(
|
||||||
String(255), nullable=False, server_default=db.text("'text-embedding-ada-002'::character varying")
|
String(255), nullable=False, server_default=sa.text("'text-embedding-ada-002'::character varying")
|
||||||
)
|
)
|
||||||
hash = mapped_column(String(64), nullable=False)
|
hash = mapped_column(String(64), nullable=False)
|
||||||
embedding = mapped_column(db.LargeBinary, nullable=False)
|
embedding = mapped_column(sa.LargeBinary, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
provider_name = mapped_column(String(255), nullable=False, server_default=db.text("''::character varying"))
|
provider_name = mapped_column(String(255), nullable=False, server_default=sa.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)
|
||||||
|
|
@ -944,14 +945,14 @@ class Embedding(Base):
|
||||||
class DatasetCollectionBinding(Base):
|
class DatasetCollectionBinding(Base):
|
||||||
__tablename__ = "dataset_collection_bindings"
|
__tablename__ = "dataset_collection_bindings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_collection_bindings_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_collection_bindings_pkey"),
|
||||||
db.Index("provider_model_name_idx", "provider_name", "model_name"),
|
sa.Index("provider_model_name_idx", "provider_name", "model_name"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, primary_key=True, server_default=sa.text("uuid_generate_v4()"))
|
||||||
provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
model_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
model_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
type = mapped_column(String(40), server_default=db.text("'dataset'::character varying"), nullable=False)
|
type = mapped_column(String(40), server_default=sa.text("'dataset'::character varying"), nullable=False)
|
||||||
collection_name = mapped_column(String(64), nullable=False)
|
collection_name = mapped_column(String(64), nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
@ -959,17 +960,17 @@ class DatasetCollectionBinding(Base):
|
||||||
class TidbAuthBinding(Base):
|
class TidbAuthBinding(Base):
|
||||||
__tablename__ = "tidb_auth_bindings"
|
__tablename__ = "tidb_auth_bindings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tidb_auth_bindings_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tidb_auth_bindings_pkey"),
|
||||||
db.Index("tidb_auth_bindings_tenant_idx", "tenant_id"),
|
sa.Index("tidb_auth_bindings_tenant_idx", "tenant_id"),
|
||||||
db.Index("tidb_auth_bindings_active_idx", "active"),
|
sa.Index("tidb_auth_bindings_active_idx", "active"),
|
||||||
db.Index("tidb_auth_bindings_created_at_idx", "created_at"),
|
sa.Index("tidb_auth_bindings_created_at_idx", "created_at"),
|
||||||
db.Index("tidb_auth_bindings_status_idx", "status"),
|
sa.Index("tidb_auth_bindings_status_idx", "status"),
|
||||||
)
|
)
|
||||||
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, primary_key=True, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=True)
|
tenant_id = mapped_column(StringUUID, nullable=True)
|
||||||
cluster_id: Mapped[str] = mapped_column(String(255), nullable=False)
|
cluster_id: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
cluster_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
cluster_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
active: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
active: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=db.text("false"))
|
||||||
status = mapped_column(String(255), nullable=False, server_default=db.text("'CREATING'::character varying"))
|
status = mapped_column(String(255), nullable=False, server_default=db.text("'CREATING'::character varying"))
|
||||||
account: Mapped[str] = mapped_column(String(255), nullable=False)
|
account: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
password: Mapped[str] = mapped_column(String(255), nullable=False)
|
password: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
|
|
@ -979,10 +980,10 @@ class TidbAuthBinding(Base):
|
||||||
class Whitelist(Base):
|
class Whitelist(Base):
|
||||||
__tablename__ = "whitelists"
|
__tablename__ = "whitelists"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="whitelists_pkey"),
|
sa.PrimaryKeyConstraint("id", name="whitelists_pkey"),
|
||||||
db.Index("whitelists_tenant_idx", "tenant_id"),
|
sa.Index("whitelists_tenant_idx", "tenant_id"),
|
||||||
)
|
)
|
||||||
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, primary_key=True, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=True)
|
tenant_id = mapped_column(StringUUID, nullable=True)
|
||||||
category: Mapped[str] = mapped_column(String(255), nullable=False)
|
category: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
@ -991,33 +992,33 @@ class Whitelist(Base):
|
||||||
class DatasetPermission(Base):
|
class DatasetPermission(Base):
|
||||||
__tablename__ = "dataset_permissions"
|
__tablename__ = "dataset_permissions"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_permission_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_permission_pkey"),
|
||||||
db.Index("idx_dataset_permissions_dataset_id", "dataset_id"),
|
sa.Index("idx_dataset_permissions_dataset_id", "dataset_id"),
|
||||||
db.Index("idx_dataset_permissions_account_id", "account_id"),
|
sa.Index("idx_dataset_permissions_account_id", "account_id"),
|
||||||
db.Index("idx_dataset_permissions_tenant_id", "tenant_id"),
|
sa.Index("idx_dataset_permissions_tenant_id", "tenant_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"), primary_key=True)
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"), primary_key=True)
|
||||||
dataset_id = mapped_column(StringUUID, nullable=False)
|
dataset_id = mapped_column(StringUUID, nullable=False)
|
||||||
account_id = mapped_column(StringUUID, nullable=False)
|
account_id = mapped_column(StringUUID, nullable=False)
|
||||||
tenant_id = mapped_column(StringUUID, nullable=False)
|
tenant_id = mapped_column(StringUUID, nullable=False)
|
||||||
has_permission: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
|
has_permission: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("true"))
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class ExternalKnowledgeApis(Base):
|
class ExternalKnowledgeApis(Base):
|
||||||
__tablename__ = "external_knowledge_apis"
|
__tablename__ = "external_knowledge_apis"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="external_knowledge_apis_pkey"),
|
sa.PrimaryKeyConstraint("id", name="external_knowledge_apis_pkey"),
|
||||||
db.Index("external_knowledge_apis_tenant_idx", "tenant_id"),
|
sa.Index("external_knowledge_apis_tenant_idx", "tenant_id"),
|
||||||
db.Index("external_knowledge_apis_name_idx", "name"),
|
sa.Index("external_knowledge_apis_name_idx", "name"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.text("uuid_generate_v4()"))
|
||||||
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
description: Mapped[str] = mapped_column(String(255), nullable=False)
|
description: Mapped[str] = 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(sa.Text, nullable=True)
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_by = mapped_column(StringUUID, nullable=True)
|
updated_by = mapped_column(StringUUID, nullable=True)
|
||||||
|
|
@ -1061,18 +1062,18 @@ class ExternalKnowledgeApis(Base):
|
||||||
class ExternalKnowledgeBindings(Base):
|
class ExternalKnowledgeBindings(Base):
|
||||||
__tablename__ = "external_knowledge_bindings"
|
__tablename__ = "external_knowledge_bindings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="external_knowledge_bindings_pkey"),
|
sa.PrimaryKeyConstraint("id", name="external_knowledge_bindings_pkey"),
|
||||||
db.Index("external_knowledge_bindings_tenant_idx", "tenant_id"),
|
sa.Index("external_knowledge_bindings_tenant_idx", "tenant_id"),
|
||||||
db.Index("external_knowledge_bindings_dataset_idx", "dataset_id"),
|
sa.Index("external_knowledge_bindings_dataset_idx", "dataset_id"),
|
||||||
db.Index("external_knowledge_bindings_external_knowledge_idx", "external_knowledge_id"),
|
sa.Index("external_knowledge_bindings_external_knowledge_idx", "external_knowledge_id"),
|
||||||
db.Index("external_knowledge_bindings_external_knowledge_api_idx", "external_knowledge_api_id"),
|
sa.Index("external_knowledge_bindings_external_knowledge_api_idx", "external_knowledge_api_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=False)
|
tenant_id = mapped_column(StringUUID, nullable=False)
|
||||||
external_knowledge_api_id = mapped_column(StringUUID, nullable=False)
|
external_knowledge_api_id = mapped_column(StringUUID, nullable=False)
|
||||||
dataset_id = mapped_column(StringUUID, nullable=False)
|
dataset_id = mapped_column(StringUUID, nullable=False)
|
||||||
external_knowledge_id = mapped_column(db.Text, nullable=False)
|
external_knowledge_id = mapped_column(sa.Text, nullable=False)
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_by = mapped_column(StringUUID, nullable=True)
|
updated_by = mapped_column(StringUUID, nullable=True)
|
||||||
|
|
@ -1082,57 +1083,57 @@ class ExternalKnowledgeBindings(Base):
|
||||||
class DatasetAutoDisableLog(Base):
|
class DatasetAutoDisableLog(Base):
|
||||||
__tablename__ = "dataset_auto_disable_logs"
|
__tablename__ = "dataset_auto_disable_logs"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_auto_disable_log_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_auto_disable_log_pkey"),
|
||||||
db.Index("dataset_auto_disable_log_tenant_idx", "tenant_id"),
|
sa.Index("dataset_auto_disable_log_tenant_idx", "tenant_id"),
|
||||||
db.Index("dataset_auto_disable_log_dataset_idx", "dataset_id"),
|
sa.Index("dataset_auto_disable_log_dataset_idx", "dataset_id"),
|
||||||
db.Index("dataset_auto_disable_log_created_atx", "created_at"),
|
sa.Index("dataset_auto_disable_log_created_atx", "created_at"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.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)
|
||||||
document_id = mapped_column(StringUUID, nullable=False)
|
document_id = mapped_column(StringUUID, nullable=False)
|
||||||
notified: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
notified: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
created_at: Mapped[datetime] = mapped_column(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class RateLimitLog(Base):
|
class RateLimitLog(Base):
|
||||||
__tablename__ = "rate_limit_logs"
|
__tablename__ = "rate_limit_logs"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="rate_limit_log_pkey"),
|
sa.PrimaryKeyConstraint("id", name="rate_limit_log_pkey"),
|
||||||
db.Index("rate_limit_log_tenant_idx", "tenant_id"),
|
sa.Index("rate_limit_log_tenant_idx", "tenant_id"),
|
||||||
db.Index("rate_limit_log_operation_idx", "operation"),
|
sa.Index("rate_limit_log_operation_idx", "operation"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=False)
|
tenant_id = mapped_column(StringUUID, nullable=False)
|
||||||
subscription_plan: Mapped[str] = mapped_column(String(255), nullable=False)
|
subscription_plan: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
operation: Mapped[str] = mapped_column(String(255), nullable=False)
|
operation: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class DatasetMetadata(Base):
|
class DatasetMetadata(Base):
|
||||||
__tablename__ = "dataset_metadatas"
|
__tablename__ = "dataset_metadatas"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_metadata_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_metadata_pkey"),
|
||||||
db.Index("dataset_metadata_tenant_idx", "tenant_id"),
|
sa.Index("dataset_metadata_tenant_idx", "tenant_id"),
|
||||||
db.Index("dataset_metadata_dataset_idx", "dataset_id"),
|
sa.Index("dataset_metadata_dataset_idx", "dataset_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.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[str] = mapped_column(String(255), nullable=False)
|
type: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
updated_at: Mapped[datetime] = mapped_column(
|
updated_at: Mapped[datetime] = mapped_column(
|
||||||
DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
updated_by = mapped_column(StringUUID, nullable=True)
|
updated_by = mapped_column(StringUUID, nullable=True)
|
||||||
|
|
@ -1141,14 +1142,14 @@ class DatasetMetadata(Base):
|
||||||
class DatasetMetadataBinding(Base):
|
class DatasetMetadataBinding(Base):
|
||||||
__tablename__ = "dataset_metadata_bindings"
|
__tablename__ = "dataset_metadata_bindings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_metadata_binding_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_metadata_binding_pkey"),
|
||||||
db.Index("dataset_metadata_binding_tenant_idx", "tenant_id"),
|
sa.Index("dataset_metadata_binding_tenant_idx", "tenant_id"),
|
||||||
db.Index("dataset_metadata_binding_dataset_idx", "dataset_id"),
|
sa.Index("dataset_metadata_binding_dataset_idx", "dataset_id"),
|
||||||
db.Index("dataset_metadata_binding_metadata_idx", "metadata_id"),
|
sa.Index("dataset_metadata_binding_metadata_idx", "metadata_id"),
|
||||||
db.Index("dataset_metadata_binding_document_idx", "document_id"),
|
sa.Index("dataset_metadata_binding_document_idx", "document_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.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)
|
||||||
metadata_id = mapped_column(StringUUID, nullable=False)
|
metadata_id = mapped_column(StringUUID, nullable=False)
|
||||||
|
|
|
||||||
|
|
@ -35,10 +35,10 @@ from .types import StringUUID
|
||||||
|
|
||||||
class DifySetup(Base):
|
class DifySetup(Base):
|
||||||
__tablename__ = "dify_setups"
|
__tablename__ = "dify_setups"
|
||||||
__table_args__ = (db.PrimaryKeyConstraint("version", name="dify_setup_pkey"),)
|
__table_args__ = (sa.PrimaryKeyConstraint("version", name="dify_setup_pkey"),)
|
||||||
|
|
||||||
version: Mapped[str] = mapped_column(String(255), nullable=False)
|
version: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
setup_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
setup_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class AppMode(StrEnum):
|
class AppMode(StrEnum):
|
||||||
|
|
@ -69,33 +69,33 @@ class IconType(Enum):
|
||||||
|
|
||||||
class App(Base):
|
class App(Base):
|
||||||
__tablename__ = "apps"
|
__tablename__ = "apps"
|
||||||
__table_args__ = (db.PrimaryKeyConstraint("id", name="app_pkey"), db.Index("app_tenant_id_idx", "tenant_id"))
|
__table_args__ = (sa.PrimaryKeyConstraint("id", name="app_pkey"), sa.Index("app_tenant_id_idx", "tenant_id"))
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id: Mapped[str] = mapped_column(StringUUID)
|
tenant_id: Mapped[str] = mapped_column(StringUUID)
|
||||||
name: Mapped[str] = mapped_column(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(sa.Text, server_default=sa.text("''::character varying"))
|
||||||
mode: Mapped[str] = mapped_column(String(255))
|
mode: Mapped[str] = mapped_column(String(255))
|
||||||
icon_type: Mapped[Optional[str]] = mapped_column(String(255)) # image, emoji
|
icon_type: Mapped[Optional[str]] = mapped_column(String(255)) # image, emoji
|
||||||
icon = db.Column(String(255))
|
icon = db.Column(String(255))
|
||||||
icon_background: Mapped[Optional[str]] = mapped_column(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(String(255), server_default=db.text("'normal'::character varying"))
|
status: Mapped[str] = mapped_column(String(255), server_default=sa.text("'normal'::character varying"))
|
||||||
enable_site: Mapped[bool] = mapped_column(db.Boolean)
|
enable_site: Mapped[bool] = mapped_column(sa.Boolean)
|
||||||
enable_api: Mapped[bool] = mapped_column(db.Boolean)
|
enable_api: Mapped[bool] = mapped_column(sa.Boolean)
|
||||||
api_rpm: Mapped[int] = mapped_column(db.Integer, server_default=db.text("0"))
|
api_rpm: Mapped[int] = mapped_column(sa.Integer, server_default=sa.text("0"))
|
||||||
api_rph: Mapped[int] = mapped_column(db.Integer, server_default=db.text("0"))
|
api_rph: Mapped[int] = mapped_column(sa.Integer, server_default=sa.text("0"))
|
||||||
is_demo: Mapped[bool] = mapped_column(db.Boolean, server_default=db.text("false"))
|
is_demo: Mapped[bool] = mapped_column(sa.Boolean, server_default=sa.text("false"))
|
||||||
is_public: Mapped[bool] = mapped_column(db.Boolean, server_default=db.text("false"))
|
is_public: Mapped[bool] = mapped_column(sa.Boolean, server_default=sa.text("false"))
|
||||||
is_universal: Mapped[bool] = mapped_column(db.Boolean, server_default=db.text("false"))
|
is_universal: Mapped[bool] = mapped_column(sa.Boolean, server_default=sa.text("false"))
|
||||||
tracing = mapped_column(db.Text, nullable=True)
|
tracing = mapped_column(sa.Text, nullable=True)
|
||||||
max_active_requests: Mapped[Optional[int]]
|
max_active_requests: Mapped[Optional[int]]
|
||||||
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(sa.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[datetime] = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
use_icon_as_answer_icon: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
use_icon_as_answer_icon: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def desc_or_prompt(self):
|
def desc_or_prompt(self):
|
||||||
|
|
@ -302,36 +302,36 @@ class App(Base):
|
||||||
|
|
||||||
class AppModelConfig(Base):
|
class AppModelConfig(Base):
|
||||||
__tablename__ = "app_model_configs"
|
__tablename__ = "app_model_configs"
|
||||||
__table_args__ = (db.PrimaryKeyConstraint("id", name="app_model_config_pkey"), db.Index("app_app_id_idx", "app_id"))
|
__table_args__ = (sa.PrimaryKeyConstraint("id", name="app_model_config_pkey"), sa.Index("app_app_id_idx", "app_id"))
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
app_id = mapped_column(StringUUID, nullable=False)
|
app_id = mapped_column(StringUUID, nullable=False)
|
||||||
provider = mapped_column(String(255), nullable=True)
|
provider = mapped_column(String(255), nullable=True)
|
||||||
model_id = mapped_column(String(255), nullable=True)
|
model_id = mapped_column(String(255), nullable=True)
|
||||||
configs = mapped_column(db.JSON, nullable=True)
|
configs = mapped_column(sa.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(sa.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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
opening_statement = mapped_column(db.Text)
|
opening_statement = mapped_column(sa.Text)
|
||||||
suggested_questions = mapped_column(db.Text)
|
suggested_questions = mapped_column(sa.Text)
|
||||||
suggested_questions_after_answer = mapped_column(db.Text)
|
suggested_questions_after_answer = mapped_column(sa.Text)
|
||||||
speech_to_text = mapped_column(db.Text)
|
speech_to_text = mapped_column(sa.Text)
|
||||||
text_to_speech = mapped_column(db.Text)
|
text_to_speech = mapped_column(sa.Text)
|
||||||
more_like_this = mapped_column(db.Text)
|
more_like_this = mapped_column(sa.Text)
|
||||||
model = mapped_column(db.Text)
|
model = mapped_column(sa.Text)
|
||||||
user_input_form = mapped_column(db.Text)
|
user_input_form = mapped_column(sa.Text)
|
||||||
dataset_query_variable = mapped_column(String(255))
|
dataset_query_variable = mapped_column(String(255))
|
||||||
pre_prompt = mapped_column(db.Text)
|
pre_prompt = mapped_column(sa.Text)
|
||||||
agent_mode = mapped_column(db.Text)
|
agent_mode = mapped_column(sa.Text)
|
||||||
sensitive_word_avoidance = mapped_column(db.Text)
|
sensitive_word_avoidance = mapped_column(sa.Text)
|
||||||
retriever_resource = mapped_column(db.Text)
|
retriever_resource = mapped_column(sa.Text)
|
||||||
prompt_type = mapped_column(String(255), nullable=False, server_default=db.text("'simple'::character varying"))
|
prompt_type = mapped_column(String(255), nullable=False, server_default=sa.text("'simple'::character varying"))
|
||||||
chat_prompt_config = mapped_column(db.Text)
|
chat_prompt_config = mapped_column(sa.Text)
|
||||||
completion_prompt_config = mapped_column(db.Text)
|
completion_prompt_config = mapped_column(sa.Text)
|
||||||
dataset_configs = mapped_column(db.Text)
|
dataset_configs = mapped_column(sa.Text)
|
||||||
external_data_tools = mapped_column(db.Text)
|
external_data_tools = mapped_column(sa.Text)
|
||||||
file_upload = mapped_column(db.Text)
|
file_upload = mapped_column(sa.Text)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def app(self):
|
def app(self):
|
||||||
|
|
@ -553,24 +553,24 @@ class AppModelConfig(Base):
|
||||||
class RecommendedApp(Base):
|
class RecommendedApp(Base):
|
||||||
__tablename__ = "recommended_apps"
|
__tablename__ = "recommended_apps"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="recommended_app_pkey"),
|
sa.PrimaryKeyConstraint("id", name="recommended_app_pkey"),
|
||||||
db.Index("recommended_app_app_id_idx", "app_id"),
|
sa.Index("recommended_app_app_id_idx", "app_id"),
|
||||||
db.Index("recommended_app_is_listed_idx", "is_listed", "language"),
|
sa.Index("recommended_app_is_listed_idx", "is_listed", "language"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, primary_key=True, server_default=sa.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(sa.JSON, nullable=False)
|
||||||
copyright: Mapped[str] = mapped_column(String(255), nullable=False)
|
copyright: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
privacy_policy: Mapped[str] = mapped_column(String(255), nullable=False)
|
privacy_policy: Mapped[str] = 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[str] = mapped_column(String(255), nullable=False)
|
category: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
position: Mapped[int] = mapped_column(db.Integer, nullable=False, default=0)
|
position: Mapped[int] = mapped_column(sa.Integer, nullable=False, default=0)
|
||||||
is_listed: Mapped[bool] = mapped_column(db.Boolean, nullable=False, default=True)
|
is_listed: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, default=True)
|
||||||
install_count: Mapped[int] = mapped_column(db.Integer, nullable=False, default=0)
|
install_count: Mapped[int] = mapped_column(sa.Integer, nullable=False, default=0)
|
||||||
language = mapped_column(String(255), nullable=False, server_default=db.text("'en-US'::character varying"))
|
language = mapped_column(String(255), nullable=False, server_default=sa.text("'en-US'::character varying"))
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def app(self):
|
def app(self):
|
||||||
|
|
@ -581,20 +581,20 @@ class RecommendedApp(Base):
|
||||||
class InstalledApp(Base):
|
class InstalledApp(Base):
|
||||||
__tablename__ = "installed_apps"
|
__tablename__ = "installed_apps"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="installed_app_pkey"),
|
sa.PrimaryKeyConstraint("id", name="installed_app_pkey"),
|
||||||
db.Index("installed_app_tenant_id_idx", "tenant_id"),
|
sa.Index("installed_app_tenant_id_idx", "tenant_id"),
|
||||||
db.Index("installed_app_app_id_idx", "app_id"),
|
sa.Index("installed_app_app_id_idx", "app_id"),
|
||||||
db.UniqueConstraint("tenant_id", "app_id", name="unique_tenant_app"),
|
sa.UniqueConstraint("tenant_id", "app_id", name="unique_tenant_app"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.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)
|
||||||
app_owner_tenant_id = mapped_column(StringUUID, nullable=False)
|
app_owner_tenant_id = mapped_column(StringUUID, nullable=False)
|
||||||
position: Mapped[int] = mapped_column(db.Integer, nullable=False, default=0)
|
position: Mapped[int] = mapped_column(sa.Integer, nullable=False, default=0)
|
||||||
is_pinned: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
is_pinned: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
last_used_at = mapped_column(db.DateTime, nullable=True)
|
last_used_at = mapped_column(sa.DateTime, nullable=True)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def app(self):
|
def app(self):
|
||||||
|
|
@ -610,23 +610,23 @@ class InstalledApp(Base):
|
||||||
class Conversation(Base):
|
class Conversation(Base):
|
||||||
__tablename__ = "conversations"
|
__tablename__ = "conversations"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="conversation_pkey"),
|
sa.PrimaryKeyConstraint("id", name="conversation_pkey"),
|
||||||
db.Index("conversation_app_from_user_idx", "app_id", "from_source", "from_end_user_id"),
|
sa.Index("conversation_app_from_user_idx", "app_id", "from_source", "from_end_user_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.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(String(255), nullable=True)
|
model_provider = mapped_column(String(255), nullable=True)
|
||||||
override_model_configs = mapped_column(db.Text)
|
override_model_configs = mapped_column(sa.Text)
|
||||||
model_id = mapped_column(String(255), nullable=True)
|
model_id = mapped_column(String(255), nullable=True)
|
||||||
mode: Mapped[str] = mapped_column(String(255))
|
mode: Mapped[str] = mapped_column(String(255))
|
||||||
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
summary = mapped_column(db.Text)
|
summary = mapped_column(sa.Text)
|
||||||
_inputs: Mapped[dict] = mapped_column("inputs", db.JSON)
|
_inputs: Mapped[dict] = mapped_column("inputs", sa.JSON)
|
||||||
introduction = mapped_column(db.Text)
|
introduction = mapped_column(sa.Text)
|
||||||
system_instruction = mapped_column(db.Text)
|
system_instruction = mapped_column(sa.Text)
|
||||||
system_instruction_tokens: Mapped[int] = mapped_column(db.Integer, nullable=False, server_default=db.text("0"))
|
system_instruction_tokens: Mapped[int] = mapped_column(sa.Integer, nullable=False, server_default=sa.text("0"))
|
||||||
status: Mapped[str] = mapped_column(String(255), nullable=False)
|
status: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
|
|
||||||
# The `invoke_from` records how the conversation is created.
|
# The `invoke_from` records how the conversation is created.
|
||||||
|
|
@ -639,18 +639,18 @@ class Conversation(Base):
|
||||||
from_source: Mapped[str] = mapped_column(String(255), nullable=False)
|
from_source: Mapped[str] = 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(sa.DateTime)
|
||||||
read_account_id = mapped_column(StringUUID)
|
read_account_id = mapped_column(StringUUID)
|
||||||
dialogue_count: Mapped[int] = mapped_column(default=0)
|
dialogue_count: Mapped[int] = mapped_column(default=0)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.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(sa.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(
|
||||||
"MessageAnnotation", backref="conversation", lazy="select", passive_deletes="all"
|
"MessageAnnotation", backref="conversation", lazy="select", passive_deletes="all"
|
||||||
)
|
)
|
||||||
|
|
||||||
is_deleted: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
is_deleted: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def inputs(self):
|
def inputs(self):
|
||||||
|
|
@ -892,36 +892,36 @@ class Message(Base):
|
||||||
Index("message_created_at_idx", "created_at"),
|
Index("message_created_at_idx", "created_at"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
app_id = mapped_column(StringUUID, nullable=False)
|
app_id = mapped_column(StringUUID, nullable=False)
|
||||||
model_provider = mapped_column(String(255), nullable=True)
|
model_provider = mapped_column(String(255), nullable=True)
|
||||||
model_id = mapped_column(String(255), nullable=True)
|
model_id = mapped_column(String(255), nullable=True)
|
||||||
override_model_configs = mapped_column(db.Text)
|
override_model_configs = mapped_column(sa.Text)
|
||||||
conversation_id = mapped_column(StringUUID, db.ForeignKey("conversations.id"), nullable=False)
|
conversation_id = mapped_column(StringUUID, sa.ForeignKey("conversations.id"), nullable=False)
|
||||||
_inputs: Mapped[dict] = mapped_column("inputs", db.JSON)
|
_inputs: Mapped[dict] = mapped_column("inputs", sa.JSON)
|
||||||
query: Mapped[str] = mapped_column(db.Text, nullable=False)
|
query: Mapped[str] = mapped_column(sa.Text, nullable=False)
|
||||||
message = mapped_column(db.JSON, nullable=False)
|
message = mapped_column(sa.JSON, nullable=False)
|
||||||
message_tokens: Mapped[int] = mapped_column(db.Integer, nullable=False, server_default=db.text("0"))
|
message_tokens: Mapped[int] = mapped_column(sa.Integer, nullable=False, server_default=sa.text("0"))
|
||||||
message_unit_price = mapped_column(db.Numeric(10, 4), nullable=False)
|
message_unit_price = mapped_column(sa.Numeric(10, 4), nullable=False)
|
||||||
message_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001"))
|
message_price_unit = mapped_column(sa.Numeric(10, 7), nullable=False, server_default=sa.text("0.001"))
|
||||||
answer: Mapped[str] = db.Column(db.Text, nullable=False) # TODO make it mapped_column
|
answer: Mapped[str] = db.Column(sa.Text, nullable=False) # TODO make it mapped_column
|
||||||
answer_tokens: Mapped[int] = mapped_column(db.Integer, nullable=False, server_default=db.text("0"))
|
answer_tokens: Mapped[int] = mapped_column(sa.Integer, nullable=False, server_default=sa.text("0"))
|
||||||
answer_unit_price = mapped_column(db.Numeric(10, 4), nullable=False)
|
answer_unit_price = mapped_column(sa.Numeric(10, 4), nullable=False)
|
||||||
answer_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001"))
|
answer_price_unit = mapped_column(sa.Numeric(10, 7), nullable=False, server_default=sa.text("0.001"))
|
||||||
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(sa.Float, nullable=False, server_default=sa.text("0"))
|
||||||
total_price = mapped_column(db.Numeric(10, 7))
|
total_price = mapped_column(sa.Numeric(10, 7))
|
||||||
currency: Mapped[str] = mapped_column(String(255), nullable=False)
|
currency: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
status = mapped_column(String(255), nullable=False, server_default=db.text("'normal'::character varying"))
|
status = mapped_column(String(255), nullable=False, server_default=sa.text("'normal'::character varying"))
|
||||||
error = mapped_column(db.Text)
|
error = mapped_column(sa.Text)
|
||||||
message_metadata = mapped_column(db.Text)
|
message_metadata = mapped_column(sa.Text)
|
||||||
invoke_from: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
|
invoke_from: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
|
||||||
from_source: Mapped[str] = mapped_column(String(255), nullable=False)
|
from_source: Mapped[str] = 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(sa.DateTime, server_default=func.current_timestamp())
|
||||||
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
agent_based: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
agent_based: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
workflow_run_id: Mapped[Optional[str]] = mapped_column(StringUUID)
|
workflow_run_id: Mapped[Optional[str]] = mapped_column(StringUUID)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
@ -1228,23 +1228,23 @@ class Message(Base):
|
||||||
class MessageFeedback(Base):
|
class MessageFeedback(Base):
|
||||||
__tablename__ = "message_feedbacks"
|
__tablename__ = "message_feedbacks"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="message_feedback_pkey"),
|
sa.PrimaryKeyConstraint("id", name="message_feedback_pkey"),
|
||||||
db.Index("message_feedback_app_idx", "app_id"),
|
sa.Index("message_feedback_app_idx", "app_id"),
|
||||||
db.Index("message_feedback_message_idx", "message_id", "from_source"),
|
sa.Index("message_feedback_message_idx", "message_id", "from_source"),
|
||||||
db.Index("message_feedback_conversation_idx", "conversation_id", "from_source", "rating"),
|
sa.Index("message_feedback_conversation_idx", "conversation_id", "from_source", "rating"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
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[str] = mapped_column(String(255), nullable=False)
|
rating: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
content = mapped_column(db.Text)
|
content = mapped_column(sa.Text)
|
||||||
from_source: Mapped[str] = mapped_column(String(255), nullable=False)
|
from_source: Mapped[str] = 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(sa.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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def from_account(self):
|
def from_account(self):
|
||||||
|
|
@ -1270,9 +1270,9 @@ class MessageFeedback(Base):
|
||||||
class MessageFile(Base):
|
class MessageFile(Base):
|
||||||
__tablename__ = "message_files"
|
__tablename__ = "message_files"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="message_file_pkey"),
|
sa.PrimaryKeyConstraint("id", name="message_file_pkey"),
|
||||||
db.Index("message_file_message_idx", "message_id"),
|
sa.Index("message_file_message_idx", "message_id"),
|
||||||
db.Index("message_file_created_by_idx", "created_by"),
|
sa.Index("message_file_created_by_idx", "created_by"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
|
|
@ -1296,37 +1296,37 @@ class MessageFile(Base):
|
||||||
self.created_by_role = created_by_role.value
|
self.created_by_role = created_by_role.value
|
||||||
self.created_by = created_by
|
self.created_by = created_by
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.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(String(255), nullable=False)
|
type: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
transfer_method: Mapped[str] = mapped_column(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(sa.Text, nullable=True)
|
||||||
belongs_to: Mapped[Optional[str]] = mapped_column(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(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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class MessageAnnotation(Base):
|
class MessageAnnotation(Base):
|
||||||
__tablename__ = "message_annotations"
|
__tablename__ = "message_annotations"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="message_annotation_pkey"),
|
sa.PrimaryKeyConstraint("id", name="message_annotation_pkey"),
|
||||||
db.Index("message_annotation_app_idx", "app_id"),
|
sa.Index("message_annotation_app_idx", "app_id"),
|
||||||
db.Index("message_annotation_conversation_idx", "conversation_id"),
|
sa.Index("message_annotation_conversation_idx", "conversation_id"),
|
||||||
db.Index("message_annotation_message_idx", "message_id"),
|
sa.Index("message_annotation_message_idx", "message_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
app_id: Mapped[str] = mapped_column(StringUUID)
|
app_id: Mapped[str] = mapped_column(StringUUID)
|
||||||
conversation_id: Mapped[Optional[str]] = mapped_column(StringUUID, db.ForeignKey("conversations.id"))
|
conversation_id: Mapped[Optional[str]] = mapped_column(StringUUID, sa.ForeignKey("conversations.id"))
|
||||||
message_id: Mapped[Optional[str]] = mapped_column(StringUUID)
|
message_id: Mapped[Optional[str]] = mapped_column(StringUUID)
|
||||||
question = db.Column(db.Text, nullable=True)
|
question = db.Column(sa.Text, nullable=True)
|
||||||
content = mapped_column(db.Text, nullable=False)
|
content = mapped_column(sa.Text, nullable=False)
|
||||||
hit_count: Mapped[int] = mapped_column(db.Integer, nullable=False, server_default=db.text("0"))
|
hit_count: Mapped[int] = mapped_column(sa.Integer, nullable=False, server_default=sa.text("0"))
|
||||||
account_id = mapped_column(StringUUID, nullable=False)
|
account_id = mapped_column(StringUUID, nullable=False)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def account(self):
|
def account(self):
|
||||||
|
|
@ -1342,24 +1342,24 @@ class MessageAnnotation(Base):
|
||||||
class AppAnnotationHitHistory(Base):
|
class AppAnnotationHitHistory(Base):
|
||||||
__tablename__ = "app_annotation_hit_histories"
|
__tablename__ = "app_annotation_hit_histories"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="app_annotation_hit_histories_pkey"),
|
sa.PrimaryKeyConstraint("id", name="app_annotation_hit_histories_pkey"),
|
||||||
db.Index("app_annotation_hit_histories_app_idx", "app_id"),
|
sa.Index("app_annotation_hit_histories_app_idx", "app_id"),
|
||||||
db.Index("app_annotation_hit_histories_account_idx", "account_id"),
|
sa.Index("app_annotation_hit_histories_account_idx", "account_id"),
|
||||||
db.Index("app_annotation_hit_histories_annotation_idx", "annotation_id"),
|
sa.Index("app_annotation_hit_histories_annotation_idx", "annotation_id"),
|
||||||
db.Index("app_annotation_hit_histories_message_idx", "message_id"),
|
sa.Index("app_annotation_hit_histories_message_idx", "message_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
app_id = mapped_column(StringUUID, nullable=False)
|
app_id = mapped_column(StringUUID, nullable=False)
|
||||||
annotation_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
|
annotation_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
|
||||||
source = mapped_column(db.Text, nullable=False)
|
source = mapped_column(sa.Text, nullable=False)
|
||||||
question = mapped_column(db.Text, nullable=False)
|
question = mapped_column(sa.Text, nullable=False)
|
||||||
account_id = mapped_column(StringUUID, nullable=False)
|
account_id = mapped_column(StringUUID, nullable=False)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
score = mapped_column(Float, nullable=False, server_default=db.text("0"))
|
score = mapped_column(Float, nullable=False, server_default=sa.text("0"))
|
||||||
message_id = mapped_column(StringUUID, nullable=False)
|
message_id = mapped_column(StringUUID, nullable=False)
|
||||||
annotation_question = mapped_column(db.Text, nullable=False)
|
annotation_question = mapped_column(sa.Text, nullable=False)
|
||||||
annotation_content = mapped_column(db.Text, nullable=False)
|
annotation_content = mapped_column(sa.Text, nullable=False)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def account(self):
|
def account(self):
|
||||||
|
|
@ -1380,18 +1380,18 @@ class AppAnnotationHitHistory(Base):
|
||||||
class AppAnnotationSetting(Base):
|
class AppAnnotationSetting(Base):
|
||||||
__tablename__ = "app_annotation_settings"
|
__tablename__ = "app_annotation_settings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="app_annotation_settings_pkey"),
|
sa.PrimaryKeyConstraint("id", name="app_annotation_settings_pkey"),
|
||||||
db.Index("app_annotation_settings_app_idx", "app_id"),
|
sa.Index("app_annotation_settings_app_idx", "app_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
app_id = mapped_column(StringUUID, nullable=False)
|
app_id = mapped_column(StringUUID, nullable=False)
|
||||||
score_threshold = mapped_column(Float, nullable=False, server_default=db.text("0"))
|
score_threshold = mapped_column(Float, nullable=False, server_default=sa.text("0"))
|
||||||
collection_binding_id = mapped_column(StringUUID, nullable=False)
|
collection_binding_id = mapped_column(StringUUID, nullable=False)
|
||||||
created_user_id = mapped_column(StringUUID, nullable=False)
|
created_user_id = mapped_column(StringUUID, nullable=False)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_user_id = mapped_column(StringUUID, nullable=False)
|
updated_user_id = mapped_column(StringUUID, nullable=False)
|
||||||
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def collection_binding_detail(self):
|
def collection_binding_detail(self):
|
||||||
|
|
@ -1408,58 +1408,58 @@ class AppAnnotationSetting(Base):
|
||||||
class OperationLog(Base):
|
class OperationLog(Base):
|
||||||
__tablename__ = "operation_logs"
|
__tablename__ = "operation_logs"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="operation_log_pkey"),
|
sa.PrimaryKeyConstraint("id", name="operation_log_pkey"),
|
||||||
db.Index("operation_log_account_action_idx", "tenant_id", "account_id", "action"),
|
sa.Index("operation_log_account_action_idx", "tenant_id", "account_id", "action"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.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[str] = mapped_column(String(255), nullable=False)
|
action: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
content = mapped_column(db.JSON)
|
content = mapped_column(sa.JSON)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
created_ip: Mapped[str] = mapped_column(String(255), nullable=False)
|
created_ip: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
updated_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class EndUser(Base, UserMixin):
|
class EndUser(Base, UserMixin):
|
||||||
__tablename__ = "end_users"
|
__tablename__ = "end_users"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="end_user_pkey"),
|
sa.PrimaryKeyConstraint("id", name="end_user_pkey"),
|
||||||
db.Index("end_user_session_id_idx", "session_id", "type"),
|
sa.Index("end_user_session_id_idx", "session_id", "type"),
|
||||||
db.Index("end_user_tenant_session_id_idx", "tenant_id", "session_id", "type"),
|
sa.Index("end_user_tenant_session_id_idx", "tenant_id", "session_id", "type"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.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[str] = mapped_column(String(255), nullable=False)
|
type: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
external_user_id = mapped_column(String(255), nullable=True)
|
external_user_id = mapped_column(String(255), nullable=True)
|
||||||
name = mapped_column(String(255))
|
name = mapped_column(String(255))
|
||||||
is_anonymous: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
|
is_anonymous: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.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(sa.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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class AppMCPServer(Base):
|
class AppMCPServer(Base):
|
||||||
__tablename__ = "app_mcp_servers"
|
__tablename__ = "app_mcp_servers"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="app_mcp_server_pkey"),
|
sa.PrimaryKeyConstraint("id", name="app_mcp_server_pkey"),
|
||||||
db.UniqueConstraint("tenant_id", "app_id", name="unique_app_mcp_server_tenant_app_id"),
|
sa.UniqueConstraint("tenant_id", "app_id", name="unique_app_mcp_server_tenant_app_id"),
|
||||||
db.UniqueConstraint("server_code", name="unique_app_mcp_server_server_code"),
|
sa.UniqueConstraint("server_code", name="unique_app_mcp_server_server_code"),
|
||||||
)
|
)
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.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[str] = mapped_column(String(255), nullable=False)
|
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
description: Mapped[str] = mapped_column(String(255), nullable=False)
|
description: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
server_code: Mapped[str] = mapped_column(String(255), nullable=False)
|
server_code: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
status = mapped_column(String(255), nullable=False, server_default=db.text("'normal'::character varying"))
|
status = mapped_column(String(255), nullable=False, server_default=sa.text("'normal'::character varying"))
|
||||||
parameters = mapped_column(db.Text, nullable=False)
|
parameters = mapped_column(sa.Text, nullable=False)
|
||||||
|
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def generate_server_code(n):
|
def generate_server_code(n):
|
||||||
|
|
@ -1478,34 +1478,34 @@ class AppMCPServer(Base):
|
||||||
class Site(Base):
|
class Site(Base):
|
||||||
__tablename__ = "sites"
|
__tablename__ = "sites"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="site_pkey"),
|
sa.PrimaryKeyConstraint("id", name="site_pkey"),
|
||||||
db.Index("site_app_id_idx", "app_id"),
|
sa.Index("site_app_id_idx", "app_id"),
|
||||||
db.Index("site_code_idx", "code", "status"),
|
sa.Index("site_code_idx", "code", "status"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
app_id = mapped_column(StringUUID, nullable=False)
|
app_id = mapped_column(StringUUID, nullable=False)
|
||||||
title: Mapped[str] = mapped_column(String(255), nullable=False)
|
title: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
icon_type = mapped_column(String(255), nullable=True)
|
icon_type = mapped_column(String(255), nullable=True)
|
||||||
icon = mapped_column(String(255))
|
icon = mapped_column(String(255))
|
||||||
icon_background = mapped_column(String(255))
|
icon_background = mapped_column(String(255))
|
||||||
description = mapped_column(db.Text)
|
description = mapped_column(sa.Text)
|
||||||
default_language: Mapped[str] = mapped_column(String(255), nullable=False)
|
default_language: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
chat_color_theme = mapped_column(String(255))
|
chat_color_theme = mapped_column(String(255))
|
||||||
chat_color_theme_inverted: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
chat_color_theme_inverted: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
copyright = mapped_column(String(255))
|
copyright = mapped_column(String(255))
|
||||||
privacy_policy = mapped_column(String(255))
|
privacy_policy = mapped_column(String(255))
|
||||||
show_workflow_steps: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
|
show_workflow_steps: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("true"))
|
||||||
use_icon_as_answer_icon: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
use_icon_as_answer_icon: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.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(String(255))
|
customize_domain = mapped_column(String(255))
|
||||||
customize_token_strategy: Mapped[str] = mapped_column(String(255), nullable=False)
|
customize_token_strategy: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
prompt_public: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
prompt_public: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("false"))
|
||||||
status = mapped_column(String(255), nullable=False, server_default=db.text("'normal'::character varying"))
|
status = mapped_column(String(255), nullable=False, server_default=sa.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(sa.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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
code = mapped_column(String(255))
|
code = mapped_column(String(255))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
@ -1535,19 +1535,19 @@ class Site(Base):
|
||||||
class ApiToken(Base):
|
class ApiToken(Base):
|
||||||
__tablename__ = "api_tokens"
|
__tablename__ = "api_tokens"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="api_token_pkey"),
|
sa.PrimaryKeyConstraint("id", name="api_token_pkey"),
|
||||||
db.Index("api_token_app_id_type_idx", "app_id", "type"),
|
sa.Index("api_token_app_id_type_idx", "app_id", "type"),
|
||||||
db.Index("api_token_token_idx", "token", "type"),
|
sa.Index("api_token_token_idx", "token", "type"),
|
||||||
db.Index("api_token_tenant_idx", "tenant_id", "type"),
|
sa.Index("api_token_tenant_idx", "tenant_id", "type"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.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(String(16), nullable=False)
|
type = mapped_column(String(16), nullable=False)
|
||||||
token: Mapped[str] = mapped_column(String(255), nullable=False)
|
token: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
last_used_at = mapped_column(db.DateTime, nullable=True)
|
last_used_at = mapped_column(sa.DateTime, nullable=True)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def generate_api_key(prefix, n):
|
def generate_api_key(prefix, n):
|
||||||
|
|
@ -1561,26 +1561,26 @@ class ApiToken(Base):
|
||||||
class UploadFile(Base):
|
class UploadFile(Base):
|
||||||
__tablename__ = "upload_files"
|
__tablename__ = "upload_files"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="upload_file_pkey"),
|
sa.PrimaryKeyConstraint("id", name="upload_file_pkey"),
|
||||||
db.Index("upload_file_tenant_idx", "tenant_id"),
|
sa.Index("upload_file_tenant_idx", "tenant_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.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(String(255), nullable=False)
|
storage_type: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
key: Mapped[str] = mapped_column(String(255), nullable=False)
|
key: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
name: Mapped[str] = mapped_column(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(sa.Integer, nullable=False)
|
||||||
extension: Mapped[str] = mapped_column(String(255), nullable=False)
|
extension: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
mime_type: Mapped[str] = mapped_column(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(
|
||||||
String(255), nullable=False, server_default=db.text("'account'::character varying")
|
String(255), nullable=False, server_default=sa.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(sa.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(sa.Boolean, nullable=False, server_default=sa.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(sa.DateTime, nullable=True)
|
||||||
hash: Mapped[str | None] = mapped_column(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="")
|
||||||
|
|
||||||
|
|
@ -1623,71 +1623,71 @@ class UploadFile(Base):
|
||||||
class ApiRequest(Base):
|
class ApiRequest(Base):
|
||||||
__tablename__ = "api_requests"
|
__tablename__ = "api_requests"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="api_request_pkey"),
|
sa.PrimaryKeyConstraint("id", name="api_request_pkey"),
|
||||||
db.Index("api_request_token_idx", "tenant_id", "api_token_id"),
|
sa.Index("api_request_token_idx", "tenant_id", "api_token_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.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[str] = mapped_column(String(255), nullable=False)
|
path: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
request = mapped_column(db.Text, nullable=True)
|
request = mapped_column(sa.Text, nullable=True)
|
||||||
response = mapped_column(db.Text, nullable=True)
|
response = mapped_column(sa.Text, nullable=True)
|
||||||
ip: Mapped[str] = mapped_column(String(255), nullable=False)
|
ip: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class MessageChain(Base):
|
class MessageChain(Base):
|
||||||
__tablename__ = "message_chains"
|
__tablename__ = "message_chains"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="message_chain_pkey"),
|
sa.PrimaryKeyConstraint("id", name="message_chain_pkey"),
|
||||||
db.Index("message_chain_message_id_idx", "message_id"),
|
sa.Index("message_chain_message_id_idx", "message_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.text("uuid_generate_v4()"))
|
||||||
message_id = mapped_column(StringUUID, nullable=False)
|
message_id = mapped_column(StringUUID, nullable=False)
|
||||||
type: Mapped[str] = mapped_column(String(255), nullable=False)
|
type: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
input = mapped_column(db.Text, nullable=True)
|
input = mapped_column(sa.Text, nullable=True)
|
||||||
output = mapped_column(db.Text, nullable=True)
|
output = mapped_column(sa.Text, nullable=True)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=db.func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=db.func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class MessageAgentThought(Base):
|
class MessageAgentThought(Base):
|
||||||
__tablename__ = "message_agent_thoughts"
|
__tablename__ = "message_agent_thoughts"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="message_agent_thought_pkey"),
|
sa.PrimaryKeyConstraint("id", name="message_agent_thought_pkey"),
|
||||||
db.Index("message_agent_thought_message_id_idx", "message_id"),
|
sa.Index("message_agent_thought_message_id_idx", "message_id"),
|
||||||
db.Index("message_agent_thought_message_chain_id_idx", "message_chain_id"),
|
sa.Index("message_agent_thought_message_chain_id_idx", "message_chain_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.text("uuid_generate_v4()"))
|
||||||
message_id = mapped_column(StringUUID, nullable=False)
|
message_id = mapped_column(StringUUID, nullable=False)
|
||||||
message_chain_id = mapped_column(StringUUID, nullable=True)
|
message_chain_id = mapped_column(StringUUID, nullable=True)
|
||||||
position: Mapped[int] = mapped_column(db.Integer, nullable=False)
|
position: Mapped[int] = mapped_column(sa.Integer, nullable=False)
|
||||||
thought = mapped_column(db.Text, nullable=True)
|
thought = mapped_column(sa.Text, nullable=True)
|
||||||
tool = mapped_column(db.Text, nullable=True)
|
tool = mapped_column(sa.Text, nullable=True)
|
||||||
tool_labels_str = mapped_column(db.Text, nullable=False, server_default=db.text("'{}'::text"))
|
tool_labels_str = mapped_column(sa.Text, nullable=False, server_default=sa.text("'{}'::text"))
|
||||||
tool_meta_str = mapped_column(db.Text, nullable=False, server_default=db.text("'{}'::text"))
|
tool_meta_str = mapped_column(sa.Text, nullable=False, server_default=sa.text("'{}'::text"))
|
||||||
tool_input = mapped_column(db.Text, nullable=True)
|
tool_input = mapped_column(sa.Text, nullable=True)
|
||||||
observation = mapped_column(db.Text, nullable=True)
|
observation = mapped_column(sa.Text, nullable=True)
|
||||||
# plugin_id = mapped_column(StringUUID, nullable=True) ## for future design
|
# plugin_id = mapped_column(StringUUID, nullable=True) ## for future design
|
||||||
tool_process_data = mapped_column(db.Text, nullable=True)
|
tool_process_data = mapped_column(sa.Text, nullable=True)
|
||||||
message = mapped_column(db.Text, nullable=True)
|
message = mapped_column(sa.Text, nullable=True)
|
||||||
message_token: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True)
|
message_token: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True)
|
||||||
message_unit_price = mapped_column(db.Numeric, nullable=True)
|
message_unit_price = mapped_column(sa.Numeric, nullable=True)
|
||||||
message_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001"))
|
message_price_unit = mapped_column(sa.Numeric(10, 7), nullable=False, server_default=sa.text("0.001"))
|
||||||
message_files = mapped_column(db.Text, nullable=True)
|
message_files = mapped_column(sa.Text, nullable=True)
|
||||||
answer = db.Column(db.Text, nullable=True)
|
answer = db.Column(sa.Text, nullable=True)
|
||||||
answer_token: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True)
|
answer_token: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True)
|
||||||
answer_unit_price = mapped_column(db.Numeric, nullable=True)
|
answer_unit_price = mapped_column(sa.Numeric, nullable=True)
|
||||||
answer_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001"))
|
answer_price_unit = mapped_column(sa.Numeric(10, 7), nullable=False, server_default=sa.text("0.001"))
|
||||||
tokens: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True)
|
tokens: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True)
|
||||||
total_price = mapped_column(db.Numeric, nullable=True)
|
total_price = mapped_column(sa.Numeric, nullable=True)
|
||||||
currency = mapped_column(String, nullable=True)
|
currency = mapped_column(String, nullable=True)
|
||||||
latency: Mapped[Optional[float]] = mapped_column(db.Float, nullable=True)
|
latency: Mapped[Optional[float]] = mapped_column(sa.Float, nullable=True)
|
||||||
created_by_role = mapped_column(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(sa.DateTime, nullable=False, server_default=db.func.current_timestamp())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def files(self) -> list:
|
def files(self) -> list:
|
||||||
|
|
@ -1769,80 +1769,80 @@ class MessageAgentThought(Base):
|
||||||
class DatasetRetrieverResource(Base):
|
class DatasetRetrieverResource(Base):
|
||||||
__tablename__ = "dataset_retriever_resources"
|
__tablename__ = "dataset_retriever_resources"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="dataset_retriever_resource_pkey"),
|
sa.PrimaryKeyConstraint("id", name="dataset_retriever_resource_pkey"),
|
||||||
db.Index("dataset_retriever_resource_message_id_idx", "message_id"),
|
sa.Index("dataset_retriever_resource_message_id_idx", "message_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, nullable=False, server_default=sa.text("uuid_generate_v4()"))
|
||||||
message_id = mapped_column(StringUUID, nullable=False)
|
message_id = mapped_column(StringUUID, nullable=False)
|
||||||
position: Mapped[int] = mapped_column(db.Integer, nullable=False)
|
position: Mapped[int] = mapped_column(sa.Integer, nullable=False)
|
||||||
dataset_id = mapped_column(StringUUID, nullable=False)
|
dataset_id = mapped_column(StringUUID, nullable=False)
|
||||||
dataset_name = mapped_column(db.Text, nullable=False)
|
dataset_name = mapped_column(sa.Text, nullable=False)
|
||||||
document_id = mapped_column(StringUUID, nullable=True)
|
document_id = mapped_column(StringUUID, nullable=True)
|
||||||
document_name = mapped_column(db.Text, nullable=False)
|
document_name = mapped_column(sa.Text, nullable=False)
|
||||||
data_source_type = mapped_column(db.Text, nullable=True)
|
data_source_type = mapped_column(sa.Text, nullable=True)
|
||||||
segment_id = mapped_column(StringUUID, nullable=True)
|
segment_id = mapped_column(StringUUID, nullable=True)
|
||||||
score: Mapped[Optional[float]] = mapped_column(db.Float, nullable=True)
|
score: Mapped[Optional[float]] = mapped_column(sa.Float, nullable=True)
|
||||||
content = mapped_column(db.Text, nullable=False)
|
content = mapped_column(sa.Text, nullable=False)
|
||||||
hit_count: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True)
|
hit_count: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True)
|
||||||
word_count: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True)
|
word_count: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True)
|
||||||
segment_position: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True)
|
segment_position: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True)
|
||||||
index_node_hash = mapped_column(db.Text, nullable=True)
|
index_node_hash = mapped_column(sa.Text, nullable=True)
|
||||||
retriever_from = mapped_column(db.Text, nullable=False)
|
retriever_from = mapped_column(sa.Text, 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(sa.DateTime, nullable=False, server_default=db.func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class Tag(Base):
|
class Tag(Base):
|
||||||
__tablename__ = "tags"
|
__tablename__ = "tags"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tag_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tag_pkey"),
|
||||||
db.Index("tag_type_idx", "type"),
|
sa.Index("tag_type_idx", "type"),
|
||||||
db.Index("tag_name_idx", "name"),
|
sa.Index("tag_name_idx", "name"),
|
||||||
)
|
)
|
||||||
|
|
||||||
TAG_TYPE_LIST = ["knowledge", "app"]
|
TAG_TYPE_LIST = ["knowledge", "app"]
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=True)
|
tenant_id = mapped_column(StringUUID, nullable=True)
|
||||||
type = mapped_column(String(16), nullable=False)
|
type = mapped_column(String(16), nullable=False)
|
||||||
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
name: Mapped[str] = 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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class TagBinding(Base):
|
class TagBinding(Base):
|
||||||
__tablename__ = "tag_bindings"
|
__tablename__ = "tag_bindings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tag_binding_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tag_binding_pkey"),
|
||||||
db.Index("tag_bind_target_id_idx", "target_id"),
|
sa.Index("tag_bind_target_id_idx", "target_id"),
|
||||||
db.Index("tag_bind_tag_id_idx", "tag_id"),
|
sa.Index("tag_bind_tag_id_idx", "tag_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=True)
|
tenant_id = mapped_column(StringUUID, nullable=True)
|
||||||
tag_id = mapped_column(StringUUID, nullable=True)
|
tag_id = mapped_column(StringUUID, nullable=True)
|
||||||
target_id = mapped_column(StringUUID, nullable=True)
|
target_id = mapped_column(StringUUID, 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(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
||||||
class TraceAppConfig(Base):
|
class TraceAppConfig(Base):
|
||||||
__tablename__ = "trace_app_config"
|
__tablename__ = "trace_app_config"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tracing_app_config_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tracing_app_config_pkey"),
|
||||||
db.Index("trace_app_config_app_id_idx", "app_id"),
|
sa.Index("trace_app_config_app_id_idx", "app_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
app_id = mapped_column(StringUUID, nullable=False)
|
app_id = mapped_column(StringUUID, nullable=False)
|
||||||
tracing_provider = mapped_column(String(255), nullable=True)
|
tracing_provider = mapped_column(String(255), nullable=True)
|
||||||
tracing_config = mapped_column(db.JSON, nullable=True)
|
tracing_config = mapped_column(sa.JSON, nullable=True)
|
||||||
created_at = mapped_column(db.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at = mapped_column(
|
updated_at = mapped_column(
|
||||||
db.DateTime, nullable=False, server_default=func.current_timestamp(), onupdate=func.current_timestamp()
|
sa.DateTime, nullable=False, server_default=func.current_timestamp(), onupdate=func.current_timestamp()
|
||||||
)
|
)
|
||||||
is_active: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("true"))
|
is_active: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.text("true"))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def tracing_config_dict(self):
|
def tracing_config_dict(self):
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@ from datetime import datetime
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from sqlalchemy import DateTime, String, func, text
|
from sqlalchemy import DateTime, String, func, text
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
from .base import Base
|
from .base import Base
|
||||||
from .engine import db
|
|
||||||
from .types import StringUUID
|
from .types import StringUUID
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -47,9 +47,9 @@ class Provider(Base):
|
||||||
|
|
||||||
__tablename__ = "providers"
|
__tablename__ = "providers"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="provider_pkey"),
|
sa.PrimaryKeyConstraint("id", name="provider_pkey"),
|
||||||
db.Index("provider_tenant_id_provider_idx", "tenant_id", "provider_name"),
|
sa.Index("provider_tenant_id_provider_idx", "tenant_id", "provider_name"),
|
||||||
db.UniqueConstraint(
|
sa.UniqueConstraint(
|
||||||
"tenant_id", "provider_name", "provider_type", "quota_type", name="unique_provider_name_type_quota"
|
"tenant_id", "provider_name", "provider_type", "quota_type", name="unique_provider_name_type_quota"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
@ -60,15 +60,15 @@ class Provider(Base):
|
||||||
provider_type: Mapped[str] = mapped_column(
|
provider_type: Mapped[str] = mapped_column(
|
||||||
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(sa.Text, nullable=True)
|
||||||
is_valid: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("false"))
|
is_valid: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=text("false"))
|
||||||
last_used: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
last_used: Mapped[Optional[datetime]] = mapped_column(DateTime, nullable=True)
|
||||||
|
|
||||||
quota_type: Mapped[Optional[str]] = mapped_column(
|
quota_type: Mapped[Optional[str]] = mapped_column(
|
||||||
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(sa.BigInteger, nullable=True)
|
||||||
quota_used: Mapped[Optional[int]] = mapped_column(db.BigInteger, default=0)
|
quota_used: Mapped[Optional[int]] = mapped_column(sa.BigInteger, default=0)
|
||||||
|
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
@ -104,9 +104,9 @@ class ProviderModel(Base):
|
||||||
|
|
||||||
__tablename__ = "provider_models"
|
__tablename__ = "provider_models"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="provider_model_pkey"),
|
sa.PrimaryKeyConstraint("id", name="provider_model_pkey"),
|
||||||
db.Index("provider_model_tenant_id_provider_idx", "tenant_id", "provider_name"),
|
sa.Index("provider_model_tenant_id_provider_idx", "tenant_id", "provider_name"),
|
||||||
db.UniqueConstraint(
|
sa.UniqueConstraint(
|
||||||
"tenant_id", "provider_name", "model_name", "model_type", name="unique_provider_model_name"
|
"tenant_id", "provider_name", "model_name", "model_type", name="unique_provider_model_name"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
@ -116,8 +116,8 @@ class ProviderModel(Base):
|
||||||
provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
model_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
model_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
model_type: Mapped[str] = mapped_column(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(sa.Text, nullable=True)
|
||||||
is_valid: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("false"))
|
is_valid: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=text("false"))
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
@ -125,8 +125,8 @@ class ProviderModel(Base):
|
||||||
class TenantDefaultModel(Base):
|
class TenantDefaultModel(Base):
|
||||||
__tablename__ = "tenant_default_models"
|
__tablename__ = "tenant_default_models"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tenant_default_model_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tenant_default_model_pkey"),
|
||||||
db.Index("tenant_default_model_tenant_id_provider_type_idx", "tenant_id", "provider_name", "model_type"),
|
sa.Index("tenant_default_model_tenant_id_provider_type_idx", "tenant_id", "provider_name", "model_type"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
||||||
|
|
@ -141,8 +141,8 @@ class TenantDefaultModel(Base):
|
||||||
class TenantPreferredModelProvider(Base):
|
class TenantPreferredModelProvider(Base):
|
||||||
__tablename__ = "tenant_preferred_model_providers"
|
__tablename__ = "tenant_preferred_model_providers"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tenant_preferred_model_provider_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tenant_preferred_model_provider_pkey"),
|
||||||
db.Index("tenant_preferred_model_provider_tenant_provider_idx", "tenant_id", "provider_name"),
|
sa.Index("tenant_preferred_model_provider_tenant_provider_idx", "tenant_id", "provider_name"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
||||||
|
|
@ -156,8 +156,8 @@ class TenantPreferredModelProvider(Base):
|
||||||
class ProviderOrder(Base):
|
class ProviderOrder(Base):
|
||||||
__tablename__ = "provider_orders"
|
__tablename__ = "provider_orders"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="provider_order_pkey"),
|
sa.PrimaryKeyConstraint("id", name="provider_order_pkey"),
|
||||||
db.Index("provider_order_tenant_provider_idx", "tenant_id", "provider_name"),
|
sa.Index("provider_order_tenant_provider_idx", "tenant_id", "provider_name"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
||||||
|
|
@ -167,9 +167,9 @@ class ProviderOrder(Base):
|
||||||
payment_product_id: Mapped[str] = mapped_column(String(191), nullable=False)
|
payment_product_id: Mapped[str] = mapped_column(String(191), nullable=False)
|
||||||
payment_id: Mapped[Optional[str]] = mapped_column(String(191))
|
payment_id: Mapped[Optional[str]] = mapped_column(String(191))
|
||||||
transaction_id: Mapped[Optional[str]] = mapped_column(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(sa.Integer, nullable=False, server_default=text("1"))
|
||||||
currency: Mapped[Optional[str]] = mapped_column(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(sa.Integer)
|
||||||
payment_status: Mapped[str] = mapped_column(
|
payment_status: Mapped[str] = mapped_column(
|
||||||
String(40), nullable=False, server_default=text("'wait_pay'::character varying")
|
String(40), nullable=False, server_default=text("'wait_pay'::character varying")
|
||||||
)
|
)
|
||||||
|
|
@ -187,8 +187,8 @@ class ProviderModelSetting(Base):
|
||||||
|
|
||||||
__tablename__ = "provider_model_settings"
|
__tablename__ = "provider_model_settings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="provider_model_setting_pkey"),
|
sa.PrimaryKeyConstraint("id", name="provider_model_setting_pkey"),
|
||||||
db.Index("provider_model_setting_tenant_provider_model_idx", "tenant_id", "provider_name", "model_type"),
|
sa.Index("provider_model_setting_tenant_provider_model_idx", "tenant_id", "provider_name", "model_type"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
||||||
|
|
@ -196,8 +196,8 @@ class ProviderModelSetting(Base):
|
||||||
provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
provider_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
model_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
model_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
model_type: Mapped[str] = mapped_column(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(sa.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(sa.Boolean, nullable=False, server_default=text("false"))
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
||||||
|
|
@ -209,8 +209,8 @@ class LoadBalancingModelConfig(Base):
|
||||||
|
|
||||||
__tablename__ = "load_balancing_model_configs"
|
__tablename__ = "load_balancing_model_configs"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="load_balancing_model_config_pkey"),
|
sa.PrimaryKeyConstraint("id", name="load_balancing_model_config_pkey"),
|
||||||
db.Index("load_balancing_model_config_tenant_provider_model_idx", "tenant_id", "provider_name", "model_type"),
|
sa.Index("load_balancing_model_config_tenant_provider_model_idx", "tenant_id", "provider_name", "model_type"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=text("uuid_generate_v4()"))
|
||||||
|
|
@ -219,7 +219,7 @@ class LoadBalancingModelConfig(Base):
|
||||||
model_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
model_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
model_type: Mapped[str] = mapped_column(String(40), nullable=False)
|
model_type: Mapped[str] = mapped_column(String(40), nullable=False)
|
||||||
name: Mapped[str] = mapped_column(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(sa.Text, nullable=True)
|
||||||
enabled: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=text("true"))
|
enabled: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=text("true"))
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
|
||||||
|
|
@ -2,50 +2,50 @@ import json
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from sqlalchemy import DateTime, String, func
|
from sqlalchemy import DateTime, String, func
|
||||||
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 models.base import Base
|
from models.base import Base
|
||||||
|
|
||||||
from .engine import db
|
|
||||||
from .types import StringUUID
|
from .types import StringUUID
|
||||||
|
|
||||||
|
|
||||||
class DataSourceOauthBinding(Base):
|
class DataSourceOauthBinding(Base):
|
||||||
__tablename__ = "data_source_oauth_bindings"
|
__tablename__ = "data_source_oauth_bindings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="source_binding_pkey"),
|
sa.PrimaryKeyConstraint("id", name="source_binding_pkey"),
|
||||||
db.Index("source_binding_tenant_id_idx", "tenant_id"),
|
sa.Index("source_binding_tenant_id_idx", "tenant_id"),
|
||||||
db.Index("source_info_idx", "source_info", postgresql_using="gin"),
|
sa.Index("source_info_idx", "source_info", postgresql_using="gin"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=False)
|
tenant_id = mapped_column(StringUUID, nullable=False)
|
||||||
access_token: Mapped[str] = mapped_column(String(255), nullable=False)
|
access_token: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
provider: Mapped[str] = mapped_column(String(255), nullable=False)
|
provider: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
source_info = mapped_column(JSONB, nullable=False)
|
source_info = mapped_column(JSONB, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
disabled: Mapped[Optional[bool]] = mapped_column(db.Boolean, nullable=True, server_default=db.text("false"))
|
disabled: Mapped[Optional[bool]] = mapped_column(sa.Boolean, nullable=True, server_default=sa.text("false"))
|
||||||
|
|
||||||
|
|
||||||
class DataSourceApiKeyAuthBinding(Base):
|
class DataSourceApiKeyAuthBinding(Base):
|
||||||
__tablename__ = "data_source_api_key_auth_bindings"
|
__tablename__ = "data_source_api_key_auth_bindings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="data_source_api_key_auth_binding_pkey"),
|
sa.PrimaryKeyConstraint("id", name="data_source_api_key_auth_binding_pkey"),
|
||||||
db.Index("data_source_api_key_auth_binding_tenant_id_idx", "tenant_id"),
|
sa.Index("data_source_api_key_auth_binding_tenant_id_idx", "tenant_id"),
|
||||||
db.Index("data_source_api_key_auth_binding_provider_idx", "provider"),
|
sa.Index("data_source_api_key_auth_binding_provider_idx", "provider"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
tenant_id = mapped_column(StringUUID, nullable=False)
|
tenant_id = mapped_column(StringUUID, nullable=False)
|
||||||
category: Mapped[str] = mapped_column(String(255), nullable=False)
|
category: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
provider: Mapped[str] = mapped_column(String(255), nullable=False)
|
provider: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
credentials = mapped_column(db.Text, nullable=True) # JSON
|
credentials = mapped_column(sa.Text, nullable=True) # JSON
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
disabled: Mapped[Optional[bool]] = mapped_column(db.Boolean, nullable=True, server_default=db.text("false"))
|
disabled: Mapped[Optional[bool]] = mapped_column(sa.Boolean, nullable=True, server_default=sa.text("false"))
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from celery import states # type: ignore
|
from celery import states # type: ignore
|
||||||
from sqlalchemy import DateTime, String
|
from sqlalchemy import DateTime, String
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
@ -16,7 +17,7 @@ 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(sa.Integer, sa.Sequence("task_id_sequence"), primary_key=True, autoincrement=True)
|
||||||
task_id = mapped_column(String(155), unique=True)
|
task_id = mapped_column(String(155), unique=True)
|
||||||
status = mapped_column(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)
|
||||||
|
|
@ -26,12 +27,12 @@ class CeleryTask(Base):
|
||||||
onupdate=lambda: naive_utc_now(),
|
onupdate=lambda: naive_utc_now(),
|
||||||
nullable=True,
|
nullable=True,
|
||||||
)
|
)
|
||||||
traceback = mapped_column(db.Text, nullable=True)
|
traceback = mapped_column(sa.Text, nullable=True)
|
||||||
name = mapped_column(String(155), nullable=True)
|
name = mapped_column(String(155), nullable=True)
|
||||||
args = mapped_column(db.LargeBinary, nullable=True)
|
args = mapped_column(sa.LargeBinary, nullable=True)
|
||||||
kwargs = mapped_column(db.LargeBinary, nullable=True)
|
kwargs = mapped_column(sa.LargeBinary, nullable=True)
|
||||||
worker = mapped_column(String(155), nullable=True)
|
worker = mapped_column(String(155), nullable=True)
|
||||||
retries: Mapped[Optional[int]] = mapped_column(db.Integer, nullable=True)
|
retries: Mapped[Optional[int]] = mapped_column(sa.Integer, nullable=True)
|
||||||
queue = mapped_column(String(155), nullable=True)
|
queue = mapped_column(String(155), nullable=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -41,7 +42,7 @@ class CeleryTaskSet(Base):
|
||||||
__tablename__ = "celery_tasksetmeta"
|
__tablename__ = "celery_tasksetmeta"
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(
|
id: Mapped[int] = mapped_column(
|
||||||
db.Integer, db.Sequence("taskset_id_sequence"), autoincrement=True, primary_key=True
|
sa.Integer, sa.Sequence("taskset_id_sequence"), autoincrement=True, primary_key=True
|
||||||
)
|
)
|
||||||
taskset_id = mapped_column(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)
|
||||||
|
|
|
||||||
|
|
@ -25,33 +25,33 @@ from .types import StringUUID
|
||||||
class ToolOAuthSystemClient(Base):
|
class ToolOAuthSystemClient(Base):
|
||||||
__tablename__ = "tool_oauth_system_clients"
|
__tablename__ = "tool_oauth_system_clients"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_oauth_system_client_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_oauth_system_client_pkey"),
|
||||||
db.UniqueConstraint("plugin_id", "provider", name="tool_oauth_system_client_plugin_id_provider_idx"),
|
sa.UniqueConstraint("plugin_id", "provider", name="tool_oauth_system_client_plugin_id_provider_idx"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
plugin_id = mapped_column(String(512), nullable=False)
|
plugin_id = mapped_column(String(512), nullable=False)
|
||||||
provider: Mapped[str] = mapped_column(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(sa.Text, nullable=False)
|
||||||
|
|
||||||
|
|
||||||
# tenant level tool oauth client params (client_id, client_secret, etc.)
|
# tenant level tool oauth client params (client_id, client_secret, etc.)
|
||||||
class ToolOAuthTenantClient(Base):
|
class ToolOAuthTenantClient(Base):
|
||||||
__tablename__ = "tool_oauth_tenant_clients"
|
__tablename__ = "tool_oauth_tenant_clients"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_oauth_tenant_client_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_oauth_tenant_client_pkey"),
|
||||||
db.UniqueConstraint("tenant_id", "plugin_id", "provider", name="unique_tool_oauth_tenant_client"),
|
sa.UniqueConstraint("tenant_id", "plugin_id", "provider", name="unique_tool_oauth_tenant_client"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.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(String(512), nullable=False)
|
plugin_id: Mapped[str] = mapped_column(String(512), nullable=False)
|
||||||
provider: Mapped[str] = mapped_column(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(sa.Boolean, nullable=False, server_default=sa.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(sa.Text, nullable=False)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def oauth_params(self) -> dict:
|
def oauth_params(self) -> dict:
|
||||||
|
|
@ -65,14 +65,14 @@ class BuiltinToolProvider(Base):
|
||||||
|
|
||||||
__tablename__ = "tool_builtin_providers"
|
__tablename__ = "tool_builtin_providers"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_builtin_provider_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_builtin_provider_pkey"),
|
||||||
db.UniqueConstraint("tenant_id", "provider", "name", name="unique_builtin_tool_provider"),
|
sa.UniqueConstraint("tenant_id", "provider", "name", name="unique_builtin_tool_provider"),
|
||||||
)
|
)
|
||||||
|
|
||||||
# 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=sa.text("uuid_generate_v4()"))
|
||||||
name: Mapped[str] = mapped_column(
|
name: Mapped[str] = mapped_column(
|
||||||
String(256), nullable=False, server_default=db.text("'API KEY 1'::character varying")
|
String(256), nullable=False, server_default=sa.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)
|
||||||
|
|
@ -81,19 +81,19 @@ class BuiltinToolProvider(Base):
|
||||||
# name of the tool provider
|
# name of the tool provider
|
||||||
provider: Mapped[str] = mapped_column(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(sa.Text, nullable=True)
|
||||||
created_at: Mapped[datetime] = mapped_column(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
sa.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
sa.DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
updated_at: Mapped[datetime] = mapped_column(
|
updated_at: Mapped[datetime] = mapped_column(
|
||||||
sa.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
sa.DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
is_default: Mapped[bool] = mapped_column(db.Boolean, nullable=False, server_default=db.text("false"))
|
is_default: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, server_default=sa.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(
|
||||||
String(32), nullable=False, server_default=db.text("'api-key'::character varying")
|
String(32), nullable=False, server_default=sa.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(sa.BigInteger, nullable=False, server_default=sa.text("-1"))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def credentials(self) -> dict:
|
def credentials(self) -> dict:
|
||||||
|
|
@ -107,28 +107,28 @@ class ApiToolProvider(Base):
|
||||||
|
|
||||||
__tablename__ = "tool_api_providers"
|
__tablename__ = "tool_api_providers"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_api_provider_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_api_provider_pkey"),
|
||||||
db.UniqueConstraint("name", "tenant_id", name="unique_api_tool_provider"),
|
sa.UniqueConstraint("name", "tenant_id", name="unique_api_tool_provider"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
# name of the api provider
|
# name of the api provider
|
||||||
name = mapped_column(String(255), nullable=False, server_default=db.text("'API KEY 1'::character varying"))
|
name = mapped_column(String(255), nullable=False, server_default=sa.text("'API KEY 1'::character varying"))
|
||||||
# icon
|
# icon
|
||||||
icon: Mapped[str] = mapped_column(String(255), nullable=False)
|
icon: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
# original schema
|
# original schema
|
||||||
schema = mapped_column(db.Text, nullable=False)
|
schema = mapped_column(sa.Text, nullable=False)
|
||||||
schema_type_str: Mapped[str] = mapped_column(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
|
||||||
tenant_id = mapped_column(StringUUID, nullable=False)
|
tenant_id = mapped_column(StringUUID, nullable=False)
|
||||||
# description of the provider
|
# description of the provider
|
||||||
description = mapped_column(db.Text, nullable=False)
|
description = mapped_column(sa.Text, nullable=False)
|
||||||
# json format tools
|
# json format tools
|
||||||
tools_str = mapped_column(db.Text, nullable=False)
|
tools_str = mapped_column(sa.Text, nullable=False)
|
||||||
# json format credentials
|
# json format credentials
|
||||||
credentials_str = mapped_column(db.Text, nullable=False)
|
credentials_str = mapped_column(sa.Text, nullable=False)
|
||||||
# privacy policy
|
# privacy policy
|
||||||
privacy_policy = mapped_column(String(255), nullable=True)
|
privacy_policy = mapped_column(String(255), nullable=True)
|
||||||
# custom_disclaimer
|
# custom_disclaimer
|
||||||
|
|
@ -167,11 +167,11 @@ class ToolLabelBinding(Base):
|
||||||
|
|
||||||
__tablename__ = "tool_label_bindings"
|
__tablename__ = "tool_label_bindings"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_label_bind_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_label_bind_pkey"),
|
||||||
db.UniqueConstraint("tool_id", "label_name", name="unique_tool_label_bind"),
|
sa.UniqueConstraint("tool_id", "label_name", name="unique_tool_label_bind"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
# tool id
|
# tool id
|
||||||
tool_id: Mapped[str] = mapped_column(String(64), nullable=False)
|
tool_id: Mapped[str] = mapped_column(String(64), nullable=False)
|
||||||
# tool type
|
# tool type
|
||||||
|
|
@ -187,12 +187,12 @@ class WorkflowToolProvider(Base):
|
||||||
|
|
||||||
__tablename__ = "tool_workflow_providers"
|
__tablename__ = "tool_workflow_providers"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_workflow_provider_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_workflow_provider_pkey"),
|
||||||
db.UniqueConstraint("name", "tenant_id", name="unique_workflow_tool_provider"),
|
sa.UniqueConstraint("name", "tenant_id", name="unique_workflow_tool_provider"),
|
||||||
db.UniqueConstraint("tenant_id", "app_id", name="unique_workflow_tool_provider_app_id"),
|
sa.UniqueConstraint("tenant_id", "app_id", name="unique_workflow_tool_provider_app_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
# name of the workflow provider
|
# name of the workflow provider
|
||||||
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
# label of the workflow provider
|
# label of the workflow provider
|
||||||
|
|
@ -208,17 +208,17 @@ class WorkflowToolProvider(Base):
|
||||||
# tenant id
|
# tenant id
|
||||||
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
|
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
|
||||||
# description of the provider
|
# description of the provider
|
||||||
description: Mapped[str] = mapped_column(db.Text, nullable=False)
|
description: Mapped[str] = mapped_column(sa.Text, nullable=False)
|
||||||
# parameter configuration
|
# parameter configuration
|
||||||
parameter_configuration: Mapped[str] = mapped_column(db.Text, nullable=False, server_default="[]")
|
parameter_configuration: Mapped[str] = mapped_column(sa.Text, nullable=False, server_default="[]")
|
||||||
# privacy policy
|
# privacy policy
|
||||||
privacy_policy: Mapped[str] = mapped_column(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(
|
||||||
sa.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
sa.DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
updated_at: Mapped[datetime] = mapped_column(
|
updated_at: Mapped[datetime] = mapped_column(
|
||||||
sa.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
sa.DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
@ -245,19 +245,19 @@ class MCPToolProvider(Base):
|
||||||
|
|
||||||
__tablename__ = "tool_mcp_providers"
|
__tablename__ = "tool_mcp_providers"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_mcp_provider_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_mcp_provider_pkey"),
|
||||||
db.UniqueConstraint("tenant_id", "server_url_hash", name="unique_mcp_provider_server_url"),
|
sa.UniqueConstraint("tenant_id", "server_url_hash", name="unique_mcp_provider_server_url"),
|
||||||
db.UniqueConstraint("tenant_id", "name", name="unique_mcp_provider_name"),
|
sa.UniqueConstraint("tenant_id", "name", name="unique_mcp_provider_name"),
|
||||||
db.UniqueConstraint("tenant_id", "server_identifier", name="unique_mcp_provider_server_identifier"),
|
sa.UniqueConstraint("tenant_id", "server_identifier", name="unique_mcp_provider_server_identifier"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
# name of the mcp provider
|
# name of the mcp provider
|
||||||
name: Mapped[str] = mapped_column(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(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(sa.Text, nullable=False)
|
||||||
# hash of server_url for uniqueness check
|
# hash of server_url for uniqueness check
|
||||||
server_url_hash: Mapped[str] = mapped_column(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
|
||||||
|
|
@ -267,16 +267,16 @@ class MCPToolProvider(Base):
|
||||||
# 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)
|
||||||
# encrypted credentials
|
# encrypted credentials
|
||||||
encrypted_credentials: Mapped[str] = mapped_column(db.Text, nullable=True)
|
encrypted_credentials: Mapped[str] = mapped_column(sa.Text, nullable=True)
|
||||||
# authed
|
# authed
|
||||||
authed: Mapped[bool] = mapped_column(db.Boolean, nullable=False, default=False)
|
authed: Mapped[bool] = mapped_column(sa.Boolean, nullable=False, default=False)
|
||||||
# tools
|
# tools
|
||||||
tools: Mapped[str] = mapped_column(db.Text, nullable=False, default="[]")
|
tools: Mapped[str] = mapped_column(sa.Text, nullable=False, default="[]")
|
||||||
created_at: Mapped[datetime] = mapped_column(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
sa.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
sa.DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
updated_at: Mapped[datetime] = mapped_column(
|
updated_at: Mapped[datetime] = mapped_column(
|
||||||
sa.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
|
sa.DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)")
|
||||||
)
|
)
|
||||||
|
|
||||||
def load_user(self) -> Account | None:
|
def load_user(self) -> Account | None:
|
||||||
|
|
@ -347,9 +347,9 @@ class ToolModelInvoke(Base):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__tablename__ = "tool_model_invokes"
|
__tablename__ = "tool_model_invokes"
|
||||||
__table_args__ = (db.PrimaryKeyConstraint("id", name="tool_model_invoke_pkey"),)
|
__table_args__ = (sa.PrimaryKeyConstraint("id", name="tool_model_invoke_pkey"),)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
# who invoke this tool
|
# who invoke this tool
|
||||||
user_id = mapped_column(StringUUID, nullable=False)
|
user_id = mapped_column(StringUUID, nullable=False)
|
||||||
# tenant id
|
# tenant id
|
||||||
|
|
@ -361,18 +361,18 @@ class ToolModelInvoke(Base):
|
||||||
# tool name
|
# tool name
|
||||||
tool_name = mapped_column(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(sa.Text, nullable=False)
|
||||||
# prompt messages
|
# prompt messages
|
||||||
prompt_messages = mapped_column(db.Text, nullable=False)
|
prompt_messages = mapped_column(sa.Text, nullable=False)
|
||||||
# invoke response
|
# invoke response
|
||||||
model_response = mapped_column(db.Text, nullable=False)
|
model_response = mapped_column(sa.Text, nullable=False)
|
||||||
|
|
||||||
prompt_tokens: Mapped[int] = mapped_column(db.Integer, nullable=False, server_default=db.text("0"))
|
prompt_tokens: Mapped[int] = mapped_column(sa.Integer, nullable=False, server_default=sa.text("0"))
|
||||||
answer_tokens: Mapped[int] = mapped_column(db.Integer, nullable=False, server_default=db.text("0"))
|
answer_tokens: Mapped[int] = mapped_column(sa.Integer, nullable=False, server_default=sa.text("0"))
|
||||||
answer_unit_price = mapped_column(db.Numeric(10, 4), nullable=False)
|
answer_unit_price = mapped_column(sa.Numeric(10, 4), nullable=False)
|
||||||
answer_price_unit = mapped_column(db.Numeric(10, 7), nullable=False, server_default=db.text("0.001"))
|
answer_price_unit = mapped_column(sa.Numeric(10, 7), nullable=False, server_default=sa.text("0.001"))
|
||||||
provider_response_latency = mapped_column(db.Float, nullable=False, server_default=db.text("0"))
|
provider_response_latency = mapped_column(sa.Float, nullable=False, server_default=sa.text("0"))
|
||||||
total_price = mapped_column(db.Numeric(10, 7))
|
total_price = mapped_column(sa.Numeric(10, 7))
|
||||||
currency: Mapped[str] = mapped_column(String(255), nullable=False)
|
currency: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
@ -386,13 +386,13 @@ class ToolConversationVariables(Base):
|
||||||
|
|
||||||
__tablename__ = "tool_conversation_variables"
|
__tablename__ = "tool_conversation_variables"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_conversation_variables_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_conversation_variables_pkey"),
|
||||||
# add index for user_id and conversation_id
|
# add index for user_id and conversation_id
|
||||||
db.Index("user_id_idx", "user_id"),
|
sa.Index("user_id_idx", "user_id"),
|
||||||
db.Index("conversation_id_idx", "conversation_id"),
|
sa.Index("conversation_id_idx", "conversation_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
# conversation user id
|
# conversation user id
|
||||||
user_id = mapped_column(StringUUID, nullable=False)
|
user_id = mapped_column(StringUUID, nullable=False)
|
||||||
# tenant id
|
# tenant id
|
||||||
|
|
@ -400,7 +400,7 @@ class ToolConversationVariables(Base):
|
||||||
# conversation id
|
# conversation id
|
||||||
conversation_id = mapped_column(StringUUID, nullable=False)
|
conversation_id = mapped_column(StringUUID, nullable=False)
|
||||||
# variables pool
|
# variables pool
|
||||||
variables_str = mapped_column(db.Text, nullable=False)
|
variables_str = mapped_column(sa.Text, nullable=False)
|
||||||
|
|
||||||
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
@ -417,11 +417,11 @@ class ToolFile(Base):
|
||||||
|
|
||||||
__tablename__ = "tool_files"
|
__tablename__ = "tool_files"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="tool_file_pkey"),
|
sa.PrimaryKeyConstraint("id", name="tool_file_pkey"),
|
||||||
db.Index("tool_file_conversation_id_idx", "conversation_id"),
|
sa.Index("tool_file_conversation_id_idx", "conversation_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
# conversation user id
|
# conversation user id
|
||||||
user_id: Mapped[str] = mapped_column(StringUUID)
|
user_id: Mapped[str] = mapped_column(StringUUID)
|
||||||
# tenant id
|
# tenant id
|
||||||
|
|
@ -448,30 +448,30 @@ class DeprecatedPublishedAppTool(Base):
|
||||||
|
|
||||||
__tablename__ = "tool_published_apps"
|
__tablename__ = "tool_published_apps"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="published_app_tool_pkey"),
|
sa.PrimaryKeyConstraint("id", name="published_app_tool_pkey"),
|
||||||
db.UniqueConstraint("app_id", "user_id", name="unique_published_app_tool"),
|
sa.UniqueConstraint("app_id", "user_id", name="unique_published_app_tool"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
# id of the app
|
# id of the app
|
||||||
app_id = mapped_column(StringUUID, ForeignKey("apps.id"), nullable=False)
|
app_id = mapped_column(StringUUID, ForeignKey("apps.id"), nullable=False)
|
||||||
|
|
||||||
user_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
|
user_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
|
||||||
# who published this tool
|
# who published this tool
|
||||||
description = mapped_column(db.Text, nullable=False)
|
description = mapped_column(sa.Text, nullable=False)
|
||||||
# llm_description of the tool, for LLM
|
# llm_description of the tool, for LLM
|
||||||
llm_description = mapped_column(db.Text, nullable=False)
|
llm_description = mapped_column(sa.Text, nullable=False)
|
||||||
# query description, query will be seem as a parameter of the tool,
|
# query description, query will be seem as a parameter of the tool,
|
||||||
# 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(sa.Text, nullable=False)
|
||||||
# query name, the name of the query parameter
|
# query name, the name of the query parameter
|
||||||
query_name = mapped_column(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(String(40), nullable=False)
|
tool_name = mapped_column(String(40), nullable=False)
|
||||||
# author
|
# author
|
||||||
author = mapped_column(String(40), nullable=False)
|
author = mapped_column(String(40), nullable=False)
|
||||||
created_at = mapped_column(sa.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)"))
|
created_at = mapped_column(sa.DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)"))
|
||||||
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)"))
|
updated_at = mapped_column(sa.DateTime, nullable=False, server_default=sa.text("CURRENT_TIMESTAMP(0)"))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def description_i18n(self) -> I18nObject:
|
def description_i18n(self) -> I18nObject:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from sqlalchemy import DateTime, String, func
|
from sqlalchemy import DateTime, String, func
|
||||||
from sqlalchemy.orm import Mapped, mapped_column
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
|
|
@ -13,15 +14,15 @@ from .types import StringUUID
|
||||||
class SavedMessage(Base):
|
class SavedMessage(Base):
|
||||||
__tablename__ = "saved_messages"
|
__tablename__ = "saved_messages"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="saved_message_pkey"),
|
sa.PrimaryKeyConstraint("id", name="saved_message_pkey"),
|
||||||
db.Index("saved_message_message_idx", "app_id", "message_id", "created_by_role", "created_by"),
|
sa.Index("saved_message_message_idx", "app_id", "message_id", "created_by_role", "created_by"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
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(
|
||||||
String(255), nullable=False, server_default=db.text("'end_user'::character varying")
|
String(255), nullable=False, server_default=sa.text("'end_user'::character varying")
|
||||||
)
|
)
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
@ -34,15 +35,15 @@ class SavedMessage(Base):
|
||||||
class PinnedConversation(Base):
|
class PinnedConversation(Base):
|
||||||
__tablename__ = "pinned_conversations"
|
__tablename__ = "pinned_conversations"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="pinned_conversation_pkey"),
|
sa.PrimaryKeyConstraint("id", name="pinned_conversation_pkey"),
|
||||||
db.Index("pinned_conversation_conversation_idx", "app_id", "conversation_id", "created_by_role", "created_by"),
|
sa.Index("pinned_conversation_conversation_idx", "app_id", "conversation_id", "created_by_role", "created_by"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
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(
|
||||||
String(255), nullable=False, server_default=db.text("'end_user'::character varying")
|
String(255), nullable=False, server_default=sa.text("'end_user'::character varying")
|
||||||
)
|
)
|
||||||
created_by = mapped_column(StringUUID, nullable=False)
|
created_by = mapped_column(StringUUID, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from enum import Enum, StrEnum
|
||||||
from typing import TYPE_CHECKING, Any, Optional, Union
|
from typing import TYPE_CHECKING, Any, Optional, Union
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from sqlalchemy import DateTime, orm
|
from sqlalchemy import DateTime, orm
|
||||||
|
|
||||||
|
|
@ -24,7 +25,6 @@ from ._workflow_exc import NodeNotFoundError, WorkflowDataError
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
|
|
||||||
import sqlalchemy as sa
|
|
||||||
from sqlalchemy import Index, PrimaryKeyConstraint, String, UniqueConstraint, func
|
from sqlalchemy import Index, PrimaryKeyConstraint, String, UniqueConstraint, func
|
||||||
from sqlalchemy.orm import Mapped, declared_attr, mapped_column
|
from sqlalchemy.orm import Mapped, declared_attr, mapped_column
|
||||||
|
|
||||||
|
|
@ -117,11 +117,11 @@ class Workflow(Base):
|
||||||
|
|
||||||
__tablename__ = "workflows"
|
__tablename__ = "workflows"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="workflow_pkey"),
|
sa.PrimaryKeyConstraint("id", name="workflow_pkey"),
|
||||||
db.Index("workflow_version_idx", "tenant_id", "app_id", "version"),
|
sa.Index("workflow_version_idx", "tenant_id", "app_id", "version"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.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(String(255), nullable=False)
|
type: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||||
|
|
@ -140,10 +140,10 @@ class Workflow(Base):
|
||||||
server_onupdate=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", sa.Text, nullable=False, server_default="{}"
|
||||||
)
|
)
|
||||||
_conversation_variables: Mapped[str] = mapped_column(
|
_conversation_variables: Mapped[str] = mapped_column(
|
||||||
"conversation_variables", db.Text, nullable=False, server_default="{}"
|
"conversation_variables", sa.Text, nullable=False, server_default="{}"
|
||||||
)
|
)
|
||||||
|
|
||||||
VERSION_DRAFT = "draft"
|
VERSION_DRAFT = "draft"
|
||||||
|
|
@ -491,11 +491,11 @@ class WorkflowRun(Base):
|
||||||
|
|
||||||
__tablename__ = "workflow_runs"
|
__tablename__ = "workflow_runs"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="workflow_run_pkey"),
|
sa.PrimaryKeyConstraint("id", name="workflow_run_pkey"),
|
||||||
db.Index("workflow_run_triggerd_from_idx", "tenant_id", "app_id", "triggered_from"),
|
sa.Index("workflow_run_triggerd_from_idx", "tenant_id", "app_id", "triggered_from"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
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)
|
||||||
|
|
||||||
|
|
@ -503,19 +503,19 @@ class WorkflowRun(Base):
|
||||||
type: Mapped[str] = mapped_column(String(255))
|
type: Mapped[str] = mapped_column(String(255))
|
||||||
triggered_from: Mapped[str] = mapped_column(String(255))
|
triggered_from: Mapped[str] = mapped_column(String(255))
|
||||||
version: Mapped[str] = mapped_column(String(255))
|
version: Mapped[str] = mapped_column(String(255))
|
||||||
graph: Mapped[Optional[str]] = mapped_column(db.Text)
|
graph: Mapped[Optional[str]] = mapped_column(sa.Text)
|
||||||
inputs: Mapped[Optional[str]] = mapped_column(db.Text)
|
inputs: Mapped[Optional[str]] = mapped_column(sa.Text)
|
||||||
status: Mapped[str] = mapped_column(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(sa.Text)
|
||||||
elapsed_time: Mapped[float] = mapped_column(db.Float, nullable=False, server_default=sa.text("0"))
|
elapsed_time: Mapped[float] = mapped_column(sa.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(sa.Integer, server_default=sa.text("0"), nullable=True)
|
||||||
created_by_role: Mapped[str] = mapped_column(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(DateTime, nullable=False, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, server_default=func.current_timestamp())
|
||||||
finished_at: Mapped[Optional[datetime]] = mapped_column(DateTime)
|
finished_at: Mapped[Optional[datetime]] = mapped_column(DateTime)
|
||||||
exceptions_count: Mapped[int] = mapped_column(db.Integer, server_default=db.text("0"), nullable=True)
|
exceptions_count: Mapped[int] = mapped_column(sa.Integer, server_default=sa.text("0"), nullable=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def created_by_account(self):
|
def created_by_account(self):
|
||||||
|
|
@ -704,25 +704,25 @@ class WorkflowNodeExecutionModel(Base):
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
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(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(sa.Integer)
|
||||||
predecessor_node_id: Mapped[Optional[str]] = mapped_column(String(255))
|
predecessor_node_id: Mapped[Optional[str]] = mapped_column(String(255))
|
||||||
node_execution_id: Mapped[Optional[str]] = mapped_column(String(255))
|
node_execution_id: Mapped[Optional[str]] = mapped_column(String(255))
|
||||||
node_id: Mapped[str] = mapped_column(String(255))
|
node_id: Mapped[str] = mapped_column(String(255))
|
||||||
node_type: Mapped[str] = mapped_column(String(255))
|
node_type: Mapped[str] = mapped_column(String(255))
|
||||||
title: Mapped[str] = mapped_column(String(255))
|
title: Mapped[str] = mapped_column(String(255))
|
||||||
inputs: Mapped[Optional[str]] = mapped_column(db.Text)
|
inputs: Mapped[Optional[str]] = mapped_column(sa.Text)
|
||||||
process_data: Mapped[Optional[str]] = mapped_column(db.Text)
|
process_data: Mapped[Optional[str]] = mapped_column(sa.Text)
|
||||||
outputs: Mapped[Optional[str]] = mapped_column(db.Text)
|
outputs: Mapped[Optional[str]] = mapped_column(sa.Text)
|
||||||
status: Mapped[str] = mapped_column(String(255))
|
status: Mapped[str] = mapped_column(String(255))
|
||||||
error: Mapped[Optional[str]] = mapped_column(db.Text)
|
error: Mapped[Optional[str]] = mapped_column(sa.Text)
|
||||||
elapsed_time: Mapped[float] = mapped_column(db.Float, server_default=db.text("0"))
|
elapsed_time: Mapped[float] = mapped_column(sa.Float, server_default=sa.text("0"))
|
||||||
execution_metadata: Mapped[Optional[str]] = mapped_column(db.Text)
|
execution_metadata: Mapped[Optional[str]] = mapped_column(sa.Text)
|
||||||
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp())
|
created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.current_timestamp())
|
||||||
created_by_role: Mapped[str] = mapped_column(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)
|
||||||
|
|
@ -834,11 +834,11 @@ class WorkflowAppLog(Base):
|
||||||
|
|
||||||
__tablename__ = "workflow_app_logs"
|
__tablename__ = "workflow_app_logs"
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
db.PrimaryKeyConstraint("id", name="workflow_app_log_pkey"),
|
sa.PrimaryKeyConstraint("id", name="workflow_app_log_pkey"),
|
||||||
db.Index("workflow_app_log_app_idx", "tenant_id", "app_id"),
|
sa.Index("workflow_app_log_app_idx", "tenant_id", "app_id"),
|
||||||
)
|
)
|
||||||
|
|
||||||
id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, server_default=sa.text("uuid_generate_v4()"))
|
||||||
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, nullable=False)
|
workflow_id: Mapped[str] = mapped_column(StringUUID, nullable=False)
|
||||||
|
|
@ -871,7 +871,7 @@ class ConversationVariable(Base):
|
||||||
id: Mapped[str] = mapped_column(StringUUID, primary_key=True)
|
id: Mapped[str] = mapped_column(StringUUID, primary_key=True)
|
||||||
conversation_id: Mapped[str] = mapped_column(StringUUID, nullable=False, primary_key=True, index=True)
|
conversation_id: Mapped[str] = mapped_column(StringUUID, nullable=False, primary_key=True, index=True)
|
||||||
app_id: Mapped[str] = mapped_column(StringUUID, nullable=False, index=True)
|
app_id: Mapped[str] = mapped_column(StringUUID, nullable=False, index=True)
|
||||||
data: Mapped[str] = mapped_column(db.Text, nullable=False)
|
data: Mapped[str] = mapped_column(sa.Text, nullable=False)
|
||||||
created_at: Mapped[datetime] = mapped_column(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
DateTime, nullable=False, server_default=func.current_timestamp(), index=True
|
DateTime, nullable=False, server_default=func.current_timestamp(), index=True
|
||||||
)
|
)
|
||||||
|
|
@ -933,7 +933,7 @@ class WorkflowDraftVariable(Base):
|
||||||
__allow_unmapped__ = True
|
__allow_unmapped__ = True
|
||||||
|
|
||||||
# id is the unique identifier of a draft variable.
|
# id is the unique identifier of a draft variable.
|
||||||
id: Mapped[str] = mapped_column(StringUUID, primary_key=True, server_default=db.text("uuid_generate_v4()"))
|
id: Mapped[str] = mapped_column(StringUUID, primary_key=True, server_default=sa.text("uuid_generate_v4()"))
|
||||||
|
|
||||||
created_at: Mapped[datetime] = mapped_column(
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
DateTime,
|
DateTime,
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import json
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import click
|
import click
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from core.plugin.entities.plugin import GenericProviderID, ModelProviderID, ToolProviderID
|
from core.plugin.entities.plugin import GenericProviderID, ModelProviderID, ToolProviderID
|
||||||
from models.engine import db
|
from models.engine import db
|
||||||
|
|
@ -38,7 +39,7 @@ class PluginDataMigration:
|
||||||
where {provider_column_name} not like '%/%' and {provider_column_name} is not null and {provider_column_name} != ''
|
where {provider_column_name} not like '%/%' and {provider_column_name} is not null and {provider_column_name} != ''
|
||||||
limit 1000"""
|
limit 1000"""
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql))
|
rs = conn.execute(sa.text(sql))
|
||||||
|
|
||||||
current_iter_count = 0
|
current_iter_count = 0
|
||||||
for i in rs:
|
for i in rs:
|
||||||
|
|
@ -94,7 +95,7 @@ limit 1000"""
|
||||||
:provider_name
|
:provider_name
|
||||||
{update_retrieval_model_sql}
|
{update_retrieval_model_sql}
|
||||||
where id = :record_id"""
|
where id = :record_id"""
|
||||||
conn.execute(db.text(sql), params)
|
conn.execute(sa.text(sql), params)
|
||||||
click.echo(
|
click.echo(
|
||||||
click.style(
|
click.style(
|
||||||
f"[{processed_count}] Migrated [{table_name}] {record_id} ({provider_name})",
|
f"[{processed_count}] Migrated [{table_name}] {record_id} ({provider_name})",
|
||||||
|
|
@ -148,7 +149,7 @@ limit 1000"""
|
||||||
params = {"last_id": last_id or ""}
|
params = {"last_id": last_id or ""}
|
||||||
|
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(sql), params)
|
rs = conn.execute(sa.text(sql), params)
|
||||||
|
|
||||||
current_iter_count = 0
|
current_iter_count = 0
|
||||||
batch_updates = []
|
batch_updates = []
|
||||||
|
|
@ -193,7 +194,7 @@ limit 1000"""
|
||||||
SET {provider_column_name} = :updated_value
|
SET {provider_column_name} = :updated_value
|
||||||
WHERE id = :record_id
|
WHERE id = :record_id
|
||||||
"""
|
"""
|
||||||
conn.execute(db.text(update_sql), [{"updated_value": u, "record_id": r} for u, r in batch_updates])
|
conn.execute(sa.text(update_sql), [{"updated_value": u, "record_id": r} for u, r in batch_updates])
|
||||||
click.echo(
|
click.echo(
|
||||||
click.style(
|
click.style(
|
||||||
f"[{processed_count}] Batch migrated [{len(batch_updates)}] records from [{table_name}]",
|
f"[{processed_count}] Batch migrated [{len(batch_updates)}] records from [{table_name}]",
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ from typing import Any, Optional
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
import click
|
import click
|
||||||
|
import sqlalchemy as sa
|
||||||
import tqdm
|
import tqdm
|
||||||
from flask import Flask, current_app
|
from flask import Flask, current_app
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
@ -197,7 +198,7 @@ class PluginMigration:
|
||||||
"""
|
"""
|
||||||
with Session(db.engine) as session:
|
with Session(db.engine) as session:
|
||||||
rs = session.execute(
|
rs = session.execute(
|
||||||
db.text(f"SELECT DISTINCT {column} FROM {table} WHERE tenant_id = :tenant_id"), {"tenant_id": tenant_id}
|
sa.text(f"SELECT DISTINCT {column} FROM {table} WHERE tenant_id = :tenant_id"), {"tenant_id": tenant_id}
|
||||||
)
|
)
|
||||||
result = []
|
result = []
|
||||||
for row in rs:
|
for row in rs:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import time
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
|
|
||||||
import click
|
import click
|
||||||
|
import sqlalchemy as sa
|
||||||
from celery import shared_task # type: ignore
|
from celery import shared_task # type: ignore
|
||||||
from sqlalchemy import delete
|
from sqlalchemy import delete
|
||||||
from sqlalchemy.exc import SQLAlchemyError
|
from sqlalchemy.exc import SQLAlchemyError
|
||||||
|
|
@ -331,7 +332,7 @@ def _delete_trace_app_configs(tenant_id: str, app_id: str):
|
||||||
def _delete_records(query_sql: str, params: dict, delete_func: Callable, name: str) -> None:
|
def _delete_records(query_sql: str, params: dict, delete_func: Callable, name: str) -> None:
|
||||||
while True:
|
while True:
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
rs = conn.execute(db.text(query_sql), params)
|
rs = conn.execute(sa.text(query_sql), params)
|
||||||
if rs.rowcount == 0:
|
if rs.rowcount == 0:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue