from tortoise import BaseDBAsyncClient async def upgrade(db: BaseDBAsyncClient) -> str: return """ CREATE TABLE IF NOT EXISTS `users` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', `nickname` VARCHAR(30) COMMENT '用户昵称', `avatar_url` VARCHAR(255) COMMENT '头像', `member_type` INT COMMENT '会员类型', `beta_account_type` VARCHAR(30) COMMENT '内测账号类型', `pre_cost_time` INT COMMENT '预支付时间(单位年)', `qr_code` VARCHAR(255) COMMENT '专属客服二维码', `dedicated_id` INT COMMENT '专属客服id', `invited_user_id` INT COMMENT '邀请人id', `created_user_id` INT COMMENT '创建人id', `is_deleted` BOOL NOT NULL COMMENT '是否删除' DEFAULT 0, `login_at` DATETIME(6) COMMENT '最后一次登录时间', `created_at` DATETIME(6) NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP(6), `updated_at` DATETIME(6) NOT NULL COMMENT '修改时间' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `deleted_at` DATETIME(6) COMMENT '删除时间', KEY `idx_users_is_dele_9cdc79` (`is_deleted`) ) CHARACTER SET utf8mb4 COMMENT='用户'; CREATE TABLE IF NOT EXISTS `stock` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', `stock_code` VARCHAR(30) NOT NULL COMMENT '股票代码', `stock_name` VARCHAR(30) COMMENT '股票名称', `type` VARCHAR(2) COMMENT '类型', `stock_pinyin` VARCHAR(30) NOT NULL COMMENT '股票拼音' ) CHARACTER SET utf8mb4 COMMENT='股票相关信息'; CREATE TABLE IF NOT EXISTS `security_account` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', `securities_name` VARCHAR(30) NOT NULL COMMENT '证券公司名字昵称', `fund_account` BIGINT COMMENT '资金账户', `account_alias` VARCHAR(30) NOT NULL COMMENT '账户别名', `money` DOUBLE COMMENT '账户金额', `available_money` DOUBLE COMMENT '可用金额', `available_proportion` DOUBLE COMMENT '可用资金占比', `freeze` DOUBLE COMMENT '冻结金额' ) CHARACTER SET utf8mb4 COMMENT='证券账户'; CREATE TABLE IF NOT EXISTS `backtest` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键id', `key` VARCHAR(30) NOT NULL COMMENT '回测key' ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `Entrust` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键id', `fund_account` INT COMMENT '资金账户', `securities_alias` VARCHAR(30) COMMENT '账户别名', `account_type` SMALLINT COMMENT '账户类型', `stock_code` VARCHAR(30) NOT NULL COMMENT '证券代码', `stock_name` VARCHAR(30) NOT NULL COMMENT '证券名称', `limit_price` DOUBLE NOT NULL COMMENT '委托价', `entrust_number` INT NOT NULL COMMENT '委托数量', `deal_price` DOUBLE COMMENT '成交价格', `deal_number` INT COMMENT '成家数量', `order_type` VARCHAR(30) NOT NULL COMMENT '操作', `entrust_date` DATE COMMENT '委托日期', `entrust_money` DOUBLE NOT NULL COMMENT '委托金额', `is_repair` BOOL NOT NULL COMMENT '是否补单' DEFAULT 0, `entrust_time` TIME(6), KEY `idx_Entrust_is_repa_5a195d` (`is_repair`) ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `orders` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID', `stock_code` VARCHAR(30) NOT NULL COMMENT '股票代码', `stock_name` VARCHAR(30) NOT NULL COMMENT '股票名称', `limit_price` DOUBLE NOT NULL COMMENT '限价', `order_quantity` INT NOT NULL COMMENT '委托数量', `order_amount` DOUBLE NOT NULL COMMENT '委托金额', `order_type` VARCHAR(20) NOT NULL COMMENT '订单类型', `position` VARCHAR(30) NOT NULL COMMENT '仓位', `user_id` INT NOT NULL COMMENT '用户Id', `entrust_date` DATETIME(6) COMMENT '委托日期', `entrust_time` TIME(6) ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `snowball` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', `snowball_token` VARCHAR(10000) COMMENT '雪球用户的token' ) CHARACTER SET utf8mb4 COMMENT='雪球相关信息'; CREATE TABLE IF NOT EXISTS `Strategy` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', `strategy_name` VARCHAR(255) NOT NULL COMMENT '策略名称', `strategy_hash` VARCHAR(255) NOT NULL COMMENT '策略版本号', `strategy_type` VARCHAR(255) COMMENT '策略类型', `user_id` INT COMMENT '所属用户', `backtest_count` INT COMMENT '回测次数', `backtest_keys` JSON COMMENT '回测key列表', `is_deleted` BOOL NOT NULL COMMENT '是否删除' DEFAULT 0, `created_at` DATETIME(6) NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP(6), `updated_at` DATETIME(6) NOT NULL COMMENT '修改时间' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `deleted_at` DATETIME(6) COMMENT '删除时间' ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `Backtest` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(20) NOT NULL UNIQUE COMMENT '回测key', `user_id` INT COMMENT '回测用户', `backtest_at` DATETIME(6) NOT NULL COMMENT '回测时间' DEFAULT CURRENT_TIMESTAMP(6), `backtest_code` LONGTEXT NOT NULL COMMENT '回测代码', `is_running` BOOL NOT NULL COMMENT '回测状态' DEFAULT 1, `updated_at` DATETIME(6) NOT NULL COMMENT '修改时间' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `deleted_at` DATETIME(6) COMMENT '删除时间', `is_active` BOOL NOT NULL COMMENT '是否可用' DEFAULT 1, `strategy_id` INT NOT NULL, CONSTRAINT `fk_Backtest_Strategy_7eabb20d` FOREIGN KEY (`strategy_id`) REFERENCES `Strategy` (`id`) ON DELETE CASCADE, KEY `idx_Backtest_key_eb92b1` (`key`), KEY `idx_Backtest_strateg_83ac3d` (`strategy_id`) ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `stock_details` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', `stock_code` VARCHAR(30) NOT NULL COMMENT '股票代码', `stock_name` VARCHAR(30) COMMENT '股票名称', `type` VARCHAR(2) COMMENT '类型', `stock_pinyin` VARCHAR(30) NOT NULL COMMENT '股票拼音', `latest_price` DOUBLE COMMENT '最新价', `rise_fall` DOUBLE COMMENT '跌涨幅' ) CHARACTER SET utf8mb4 COMMENT='股票相关信息'; CREATE TABLE IF NOT EXISTS `Transaction` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', `key` VARCHAR(20) NOT NULL COMMENT 'key,数据标识', `cash` DOUBLE COMMENT '资金', `transaction_name` VARCHAR(255) NOT NULL COMMENT '交易名称', `transaction_type` VARCHAR(255) COMMENT '交易类型', `user_id` INT COMMENT '用户id', `is_running` BOOL NOT NULL COMMENT '运行状态' DEFAULT 1, `is_deleted` BOOL NOT NULL COMMENT '是否删除' DEFAULT 0, `process_id` INT COMMENT '进程号', `bar` VARCHAR(10) COMMENT '频率K线', `created_at` DATETIME(6) NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP(6), `updated_at` DATETIME(6) NOT NULL COMMENT '修改时间' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `stopped_at` DATETIME(6) COMMENT '停止时间', `deleted_at` DATETIME(6) COMMENT '删除时间', `strategy_id` INT NOT NULL, CONSTRAINT `fk_Transact_Strategy_849d0577` FOREIGN KEY (`strategy_id`) REFERENCES `Strategy` (`id`) ON DELETE CASCADE, KEY `idx_Transaction_strateg_b8f0b2` (`strategy_id`) ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `position` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', `key` VARCHAR(30) NOT NULL COMMENT '键', `date` DATE NOT NULL COMMENT '日期', `name` VARCHAR(30) NOT NULL COMMENT '名称', `size` INT NOT NULL COMMENT '数量', `price` DOUBLE NOT NULL COMMENT '价格', `adjbase` DOUBLE NOT NULL COMMENT '复权基数', `profit` DOUBLE NOT NULL COMMENT '利润' ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `trand_info` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'id', `key` VARCHAR(255) COMMENT '唯一索引', `tran_info_data` LONGBLOB ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `tran_observer_data` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(255) NOT NULL, `tran_observer_data` LONGBLOB COMMENT '存储大量数据' ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `tranorders` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(255), `order_return` VARCHAR(255) ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `tran_return` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(255), `tran_return_data` LONGBLOB ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `tran_trade_info` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(25), `tran_trade_info` LONGBLOB ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `back_observed_data` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'id表', `key` VARCHAR(255) COMMENT 'key', `observed_data` LONGBLOB COMMENT '格式化后的json数据' ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `back_observed_data_detail` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(255) NOT NULL, `back_observed_data` LONGBLOB ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `back_position` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(25), `back_position_data` LONGBLOB ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `back_result_indicator` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(25), `indicator` LONGBLOB ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `back_trand_info` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(25), `trade_info` LONGBLOB ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `tran_position` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `key` VARCHAR(25), `tran_position_data` LONGBLOB ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `stock_bt_history` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `end_bt_time` VARCHAR(8) COMMENT '回测最终时间', `bt_stock_code` VARCHAR(8) COMMENT '回测股票代码', `bt_stock_name` VARCHAR(10) COMMENT '回测股票名称', `bt_benchmark_code` VARCHAR(8) COMMENT '股票基准代码', `bt_stock_period` VARCHAR(10) COMMENT '回测类型', `bt_strategy_name` VARCHAR(10) COMMENT '回测策略名称', `bt_stock_data` LONGBLOB COMMENT '回测股票数据' ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `stock_history` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `stock_code` INT NOT NULL COMMENT '股票代码', `stock_name` VARCHAR(10), `start_time_to_market` VARCHAR(10) COMMENT '股票上市时间', `end_bt_time` VARCHAR(10) COMMENT '最终回测时间', `symbol_data` LONGBLOB COMMENT '股票数据' ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `stock_data_processing` ( `bt_benchmark_code` VARCHAR(6) COMMENT '基准代码', `bt_stock_period` VARCHAR(10) COMMENT '数据类型', `bt_strategy_name` VARCHAR(10) COMMENT '回测策略名', `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `processing_data` LONGBLOB COMMENT '清洗后的数据', `prosessing_date` VARCHAR(10) COMMENT '当前回测时间', `stock_name` VARCHAR(10), `stocke_code` VARCHAR(10) ) CHARACTER SET utf8mb4; CREATE TABLE IF NOT EXISTS `aerich` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, `version` VARCHAR(255) NOT NULL, `app` VARCHAR(100) NOT NULL, `content` JSON NOT NULL ) CHARACTER SET utf8mb4;""" async def downgrade(db: BaseDBAsyncClient) -> str: return """ """