216 lines
7.7 KiB
Python
216 lines
7.7 KiB
Python
from datetime import datetime
|
|
from sqlalchemy import Column, Integer, String, Text, BigInteger, Boolean, DateTime, ForeignKey
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
|
|
Base = declarative_base()
|
|
|
|
class BaseModel(Base):
|
|
__abstract__ = True
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
created_at = Column(DateTime, default=datetime.now)
|
|
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
|
|
deleted_at = Column(DateTime, nullable=True)
|
|
|
|
class Download(BaseModel):
|
|
__tablename__ = 'downloads'
|
|
|
|
status = Column(Integer, nullable=True)
|
|
type = Column(Integer, nullable=True)
|
|
source = Column(Text, nullable=True)
|
|
total_size = Column(BigInteger, nullable=True)
|
|
downloaded_size = Column(BigInteger, nullable=True)
|
|
g_id = Column(Text, nullable=True)
|
|
speed = Column(Integer, nullable=True)
|
|
parent = Column(Text, nullable=True)
|
|
attrs = Column(Text, nullable=True)
|
|
error = Column(Text, nullable=True)
|
|
dst = Column(Text, nullable=True)
|
|
user_id = Column(Integer, nullable=True)
|
|
task_id = Column(Integer, nullable=True)
|
|
node_id = Column(Integer, nullable=True)
|
|
|
|
class File(BaseModel):
|
|
__tablename__ = 'files'
|
|
|
|
name = Column(String(255), nullable=True)
|
|
source_name = Column(Text, nullable=True)
|
|
user_id = Column(Integer, nullable=True)
|
|
size = Column(BigInteger, nullable=True)
|
|
pic_info = Column(String(255), nullable=True)
|
|
folder_id = Column(Integer, nullable=True)
|
|
policy_id = Column(Integer, nullable=True)
|
|
upload_session_id = Column(String(255), nullable=True, unique=True)
|
|
metadata = Column(Text, nullable=True)
|
|
|
|
class Folder(BaseModel):
|
|
__tablename__ = 'folders'
|
|
|
|
name = Column(String(255), nullable=True)
|
|
parent_id = Column(Integer, nullable=True, index=True)
|
|
owner_id = Column(Integer, nullable=True, index=True)
|
|
policy_id = Column(Integer, nullable=True)
|
|
|
|
__table_args__ = {'uniqueConstraints': [('name', 'parent_id')]}
|
|
|
|
class Group(BaseModel):
|
|
__tablename__ = 'groups'
|
|
|
|
name = Column(String(255), nullable=True)
|
|
policies = Column(String(255), nullable=True)
|
|
max_storage = Column(BigInteger, nullable=True)
|
|
share_enabled = Column(Boolean, nullable=True)
|
|
web_dav_enabled = Column(Boolean, nullable=True)
|
|
speed_limit = Column(Integer, nullable=True)
|
|
options = Column(String(255), nullable=True)
|
|
|
|
class Node(BaseModel):
|
|
__tablename__ = 'nodes'
|
|
|
|
status = Column(Integer, nullable=True)
|
|
name = Column(String(255), nullable=True)
|
|
type = Column(Integer, nullable=True)
|
|
server = Column(String(255), nullable=True)
|
|
slave_key = Column(Text, nullable=True)
|
|
master_key = Column(Text, nullable=True)
|
|
aria2_enabled = Column(Boolean, nullable=True)
|
|
aria2_options = Column(Text, nullable=True)
|
|
rank = Column(Integer, nullable=True)
|
|
|
|
class Order(BaseModel):
|
|
__tablename__ = 'orders'
|
|
|
|
user_id = Column(Integer, nullable=True)
|
|
order_no = Column(String(255), nullable=True, index=True)
|
|
type = Column(Integer, nullable=True)
|
|
method = Column(String(255), nullable=True)
|
|
product_id = Column(BigInteger, nullable=True)
|
|
num = Column(Integer, nullable=True)
|
|
name = Column(String(255), nullable=True)
|
|
price = Column(Integer, nullable=True)
|
|
status = Column(Integer, nullable=True)
|
|
|
|
class Policy(BaseModel):
|
|
__tablename__ = 'policies'
|
|
|
|
name = Column(String(255), nullable=True)
|
|
type = Column(String(255), nullable=True)
|
|
server = Column(String(255), nullable=True)
|
|
bucket_name = Column(String(255), nullable=True)
|
|
is_private = Column(Boolean, nullable=True)
|
|
base_url = Column(String(255), nullable=True)
|
|
access_key = Column(Text, nullable=True)
|
|
secret_key = Column(Text, nullable=True)
|
|
max_size = Column(BigInteger, nullable=True)
|
|
auto_rename = Column(Boolean, nullable=True)
|
|
dir_name_rule = Column(String(255), nullable=True)
|
|
file_name_rule = Column(String(255), nullable=True)
|
|
is_origin_link_enable = Column(Boolean, nullable=True)
|
|
options = Column(Text, nullable=True)
|
|
|
|
class Redeem(BaseModel):
|
|
__tablename__ = 'redeems'
|
|
|
|
type = Column(Integer, nullable=True)
|
|
product_id = Column(BigInteger, nullable=True)
|
|
num = Column(Integer, nullable=True)
|
|
code = Column(Text, nullable=True)
|
|
used = Column(Boolean, nullable=True)
|
|
|
|
class Report(BaseModel):
|
|
__tablename__ = 'reports'
|
|
|
|
share_id = Column(Integer, nullable=True, index=True)
|
|
reason = Column(Integer, nullable=True)
|
|
description = Column(String(255), nullable=True)
|
|
|
|
class Setting(BaseModel):
|
|
__tablename__ = 'settings'
|
|
|
|
type = Column(String(255), nullable=False)
|
|
name = Column(String(255), nullable=False, unique=True, index=True)
|
|
value = Column(Text, nullable=True)
|
|
|
|
class Share(BaseModel):
|
|
__tablename__ = 'shares'
|
|
|
|
password = Column(String(255), nullable=True)
|
|
is_dir = Column(Boolean, nullable=True)
|
|
user_id = Column(Integer, nullable=True)
|
|
source_id = Column(Integer, nullable=True)
|
|
views = Column(Integer, nullable=True)
|
|
downloads = Column(Integer, nullable=True)
|
|
remain_downloads = Column(Integer, nullable=True)
|
|
expires = Column(DateTime, nullable=True)
|
|
preview_enabled = Column(Boolean, nullable=True)
|
|
source_name = Column(String(255), nullable=True, index=True)
|
|
score = Column(Integer, nullable=True)
|
|
|
|
class SourceLink(BaseModel):
|
|
__tablename__ = 'source_links'
|
|
|
|
file_id = Column(Integer, nullable=True)
|
|
name = Column(String(255), nullable=True)
|
|
downloads = Column(Integer, nullable=True)
|
|
|
|
class StoragePack(BaseModel):
|
|
__tablename__ = 'storage_packs'
|
|
|
|
name = Column(String(255), nullable=True)
|
|
user_id = Column(Integer, nullable=True)
|
|
active_time = Column(DateTime, nullable=True)
|
|
expired_time = Column(DateTime, nullable=True, index=True)
|
|
size = Column(BigInteger, nullable=True)
|
|
|
|
class Tag(BaseModel):
|
|
__tablename__ = 'tags'
|
|
|
|
name = Column(String(255), nullable=True)
|
|
icon = Column(String(255), nullable=True)
|
|
color = Column(String(255), nullable=True)
|
|
type = Column(Integer, nullable=True)
|
|
expression = Column(Text, nullable=True)
|
|
user_id = Column(Integer, nullable=True)
|
|
|
|
class Task(BaseModel):
|
|
__tablename__ = 'tasks'
|
|
|
|
status = Column(Integer, nullable=True)
|
|
type = Column(Integer, nullable=True)
|
|
user_id = Column(Integer, nullable=True)
|
|
progress = Column(Integer, nullable=True)
|
|
error = Column(Text, nullable=True)
|
|
props = Column(Text, nullable=True)
|
|
|
|
class User(BaseModel):
|
|
__tablename__ = 'users'
|
|
|
|
email = Column(String(100), nullable=True, unique=True)
|
|
nick = Column(String(50), nullable=True)
|
|
password = Column(String(255), nullable=True)
|
|
status = Column(Integer, nullable=True)
|
|
group_id = Column(Integer, nullable=True)
|
|
storage = Column(BigInteger, nullable=True)
|
|
two_factor = Column(String(255), nullable=True)
|
|
avatar = Column(String(255), nullable=True)
|
|
options = Column(Text, nullable=True)
|
|
authn = Column(Text, nullable=True)
|
|
open_id = Column(String(255), nullable=True)
|
|
score = Column(Integer, nullable=True)
|
|
previous_group_id = Column(Integer, nullable=True)
|
|
group_expires = Column(DateTime, nullable=True)
|
|
notify_date = Column(DateTime, nullable=True)
|
|
phone = Column(String(255), nullable=True)
|
|
|
|
class WebDAV(BaseModel):
|
|
__tablename__ = 'webdavs'
|
|
|
|
name = Column(String(255), nullable=True)
|
|
password = Column(String(255), nullable=True)
|
|
user_id = Column(Integer, nullable=True)
|
|
root = Column(Text, nullable=True)
|
|
readonly = Column(Boolean, nullable=True)
|
|
use_proxy = Column(Boolean, nullable=True)
|
|
|
|
__table_args__ = {'uniqueConstraints': [('password', 'user_id')]}
|