63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
from tortoise import fields
|
|
from tortoise.models import Model
|
|
from .timestamp import Timestamp
|
|
from enum import Enum
|
|
|
|
|
|
class BotStatus(str, Enum):
|
|
CONFIRMED = "confirmed"
|
|
REJECTED = "rejected"
|
|
PENDING = "pending"
|
|
|
|
|
|
class BotType(str, Enum):
|
|
LLM = "llm"
|
|
CHARACTER = "character"
|
|
IMAGE = "image"
|
|
VIDEO = "video"
|
|
AUDIO = "audio"
|
|
|
|
|
|
class Bot(Model, Timestamp):
|
|
id = fields.IntField(pk=True)
|
|
name = fields.CharField(max_length=255, null=True)
|
|
model = fields.CharField(max_length=255)
|
|
style = fields.CharField(max_length=255, null=True)
|
|
description = fields.TextField(null=True)
|
|
image = fields.CharField(max_length=255, null=True)
|
|
image_2 = fields.CharField(max_length=255, null=True)
|
|
attachment = fields.IntField(default=0)
|
|
attachment_type = fields.JSONField(null=True)
|
|
tool = fields.BooleanField(default=False)
|
|
public = fields.BooleanField(default=True)
|
|
cost = fields.IntField(default=0)
|
|
limit = fields.IntField(default=-1)
|
|
order = fields.IntField(default=1)
|
|
prompt = fields.TextField(null=True)
|
|
links = fields.JSONField(null=True)
|
|
docs = fields.JSONField(null=True)
|
|
deleted = fields.BooleanField(default=False)
|
|
web_search = fields.BooleanField(default=False)
|
|
status = fields.CharEnumField(BotStatus, default=BotStatus.CONFIRMED)
|
|
type = fields.CharEnumField(BotType, default=BotType.LLM)
|
|
chatbots = fields.ReverseRelation["Chatbot"]
|
|
marks = fields.ReverseRelation["Mark"]
|
|
rates = fields.ReverseRelation["Rate"]
|
|
allowed_levels = fields.JSONField(default=[1])
|
|
banners = fields.ReverseRelation["Banner"]
|
|
user = fields.ForeignKeyField(
|
|
"models.User",
|
|
related_name="bots",
|
|
on_delete=fields.SET_NULL,
|
|
null=True,
|
|
)
|
|
category = fields.ForeignKeyField(
|
|
"models.Category",
|
|
related_name="bots",
|
|
on_delete=fields.SET_NULL,
|
|
null=True,
|
|
)
|
|
|
|
class Meta:
|
|
table = "bots"
|