60 lines
2.6 KiB
Python
60 lines
2.6 KiB
Python
from tortoise import BaseDBAsyncClient
|
|
|
|
|
|
async def upgrade(db: BaseDBAsyncClient) -> str:
|
|
return """
|
|
CREATE TABLE IF NOT EXISTS `language` (
|
|
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
`name` VARCHAR(30) NOT NULL UNIQUE,
|
|
`code` VARCHAR(10) NOT NULL UNIQUE
|
|
) CHARACTER SET utf8mb4;
|
|
CREATE TABLE IF NOT EXISTS `reserved_words` (
|
|
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
`reserved` VARCHAR(20) NOT NULL COMMENT '保留词',
|
|
`category` VARCHAR(20) NOT NULL DEFAULT 'username'
|
|
) CHARACTER SET utf8mb4;
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
`name` VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
|
|
`pwd_hashed` VARCHAR(60) NOT NULL COMMENT '密码',
|
|
`portrait` VARCHAR(120) NOT NULL COMMENT '用户头像',
|
|
`is_admin` BOOL NOT NULL COMMENT '管理员权限' DEFAULT 0,
|
|
`language_id` INT NOT NULL,
|
|
CONSTRAINT `fk_users_language_d51b5368` FOREIGN KEY (`language_id`) REFERENCES `language` (`id`) ON DELETE CASCADE
|
|
) CHARACTER SET utf8mb4;
|
|
CREATE TABLE IF NOT EXISTS `wordlist` (
|
|
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
`language` VARCHAR(20) NOT NULL COMMENT '单词语种',
|
|
`text` VARCHAR(40) NOT NULL UNIQUE COMMENT '单词'
|
|
) CHARACTER SET utf8mb4;
|
|
CREATE TABLE IF NOT EXISTS `attachment` (
|
|
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
`yinbiao` VARCHAR(60) COMMENT '音标',
|
|
`record` VARCHAR(120) COMMENT '发音',
|
|
`pic` VARCHAR(120) COMMENT '配图',
|
|
`word_id` INT NOT NULL,
|
|
CONSTRAINT `fk_attachme_wordlist_ca554ed9` FOREIGN KEY (`word_id`) REFERENCES `wordlist` (`id`) ON DELETE CASCADE
|
|
) CHARACTER SET utf8mb4;
|
|
CREATE TABLE IF NOT EXISTS `definitions` (
|
|
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
`part_of_speech` VARCHAR(20) COMMENT '词性',
|
|
`meaning` LONGTEXT NOT NULL COMMENT '单词释义',
|
|
`example` LONGTEXT COMMENT '单词例句',
|
|
`eng_explanation` LONGTEXT COMMENT 'English explanation',
|
|
`target_language_id` INT NOT NULL,
|
|
`word_id` INT NOT NULL,
|
|
CONSTRAINT `fk_definiti_language_9d3d9ce0` FOREIGN KEY (`target_language_id`) REFERENCES `language` (`id`) ON DELETE CASCADE,
|
|
CONSTRAINT `fk_definiti_wordlist_551d1753` FOREIGN KEY (`word_id`) REFERENCES `wordlist` (`id`) ON DELETE CASCADE
|
|
) 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 """
|
|
"""
|