0_20260615184211_init.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from tortoise import BaseDBAsyncClient
  2. RUN_IN_TRANSACTION = True
  3. async def upgrade(db: BaseDBAsyncClient) -> str:
  4. return """
  5. CREATE TABLE IF NOT EXISTS `author` (
  6. `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  7. `name` VARCHAR(32) NOT NULL,
  8. `age` INT NOT NULL
  9. ) CHARACTER SET utf8mb4;
  10. CREATE TABLE IF NOT EXISTS `publish` (
  11. `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  12. `name` VARCHAR(32) NOT NULL,
  13. `email` VARCHAR(32) NOT NULL
  14. ) CHARACTER SET utf8mb4;
  15. CREATE TABLE IF NOT EXISTS `book` (
  16. `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  17. `title` VARCHAR(32) NOT NULL,
  18. `price` INT NOT NULL,
  19. `img_url` VARCHAR(255),
  20. `bread` INT NOT NULL,
  21. `bcomment` INT NOT NULL,
  22. `publishs_id` INT NOT NULL,
  23. CONSTRAINT `fk_book_publish_8999eb74` FOREIGN KEY (`publishs_id`) REFERENCES `publish` (`id`) ON DELETE CASCADE
  24. ) CHARACTER SET utf8mb4;
  25. CREATE TABLE IF NOT EXISTS `aerich` (
  26. `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  27. `version` VARCHAR(255) NOT NULL,
  28. `app` VARCHAR(100) NOT NULL,
  29. `content` JSON NOT NULL
  30. ) CHARACTER SET utf8mb4;
  31. CREATE TABLE IF NOT EXISTS `book_author` (
  32. `book_id` INT NOT NULL,
  33. `author_id` INT NOT NULL,
  34. FOREIGN KEY (`book_id`) REFERENCES `book` (`id`) ON DELETE CASCADE,
  35. FOREIGN KEY (`author_id`) REFERENCES `author` (`id`) ON DELETE CASCADE,
  36. UNIQUE KEY `uidx_book_author_book_id_818352` (`book_id`, `author_id`)
  37. ) CHARACTER SET utf8mb4 COMMENT='作者';"""
  38. async def downgrade(db: BaseDBAsyncClient) -> str:
  39. return """
  40. """
  41. MODELS_STATE = (
  42. "eJztmW1P2zAQgP8K6icmdVMp7UD7lnZDY4wXAZsmAYqcxE2tOnZwnEGF8t9nOy9OkzQ05a"
  43. "2s/VLa813se3K+85mHlkcdiINPRsjHlLW+bD20CPCg+FIYaW+1gO9ruRRwYGGlCrSOFXAG"
  44. "bC6kI4ADKEQODGyGfI4oEVISYiyF1BaKiLhaFBJ0G0KTUxfyMZRruboRYkQceA+D9Kc/MU"
  45. "cIYmdmqciRcyu5yae+kh0SfqAU5WyWaVMcekQr+1OxZJJpI8Kl1IUEMsChfDxnoVy+XF3i"
  46. "Z+pRvFKtEi8xZ+PAEQgxz7m7IAObEslPrCZQDrpylo/dnd5eb3/3c29fqKiVZJK9KHZP+x"
  47. "4bKgInl61IjQMOYg2FUXNTf0vkhmPAqtGl+gV4YslFeCmqOnqpQOPTIfNM/Dxwb2JIXD4W"
  48. "P3e7NbB+G+fD78b59m73g/SFiiCOY/skGemqIclT8wNuBb65gZdoPx55KwLvGYJP7tjRJB"
  49. "d7UmABe3IHmGOWRmiXztMtD3ldrzKoLUonQfm1HAMyvaTyU72dQ+ErIHbVG0kS30A8Z5k3"
  50. "s2RSaF2HvVHfvg73O51+a6E3FKURlkr1ZMoHs5DKU48YxNKfbDhO3zEzyhTuCZymLM04YW"
  51. "ZvIhmKjZJBPmY0dMeZiS4IgquYG/I4sxgXQ+PrNyk3i6lWxYoHiNglTuJx1J5dekV1Sl2a"
  52. "X5usVGNTmVYsOdRVJo44blSaMoNNbYoJ+gzZTapTpr9O9SkPDHmuGTLcJOhyJkuFXbIp3y"
  53. "zquv3+AmEntObGnRqb5WgxCJpkvUx/XQPPsqnnwdjbRZnlTNYVmx9aGAXjwGxUYwtW6wSv"
  54. "dBgvsyyDPKAMIpccwUWPzWfxo1YTY82JmYG77PxWjJLKQ2z0Cr1M/mT+tG5GX+P8P/2M9q"
  55. "nY0egecLafmWlaih1Nrtl5Yj+jGNY3NOk2qehpcjtoflvj55Q2nc2KZdr25s7txfoa6AHU"
  56. "6JCeGawzwQYXcY/epA0Ss4Ojc5l2pXdzy86yl2hvdxSInli8a7O+AUWXXZn0k5HanA+0zi"
  57. "blv6OU/xeyINkliyatnMn7TFsvcrUgt0YDiIn6+wS40+ksAFBozQWoxmYBihl55U3Dj4vT"
  58. "k2qIOZMCyF9EOHjlIJu3t8RZlN+sJtYaitJruWgvCG5xHt72sfGnyHX483SgKNCAu0w9RT"
  59. "1g8Kr/56ooL9E/QZ4swQ=="
  60. )