|
|
@@ -1,48 +1,67 @@ |
|
|
|
from eloquent.migrations import Migration |
|
|
|
|
|
|
|
|
|
|
|
class CreateQueries (Migration): |
|
|
|
""" |
|
|
|
queries テーブルの作成 |
|
|
|
""" |
|
|
|
|
|
|
|
def up ( |
|
|
|
self, |
|
|
|
) -> None: |
|
|
|
with self.schema.create ('queries') as table: |
|
|
|
table.big_increments ('id') |
|
|
|
table.big_integer ('user_id').nullable ().comment ('クエリ主') |
|
|
|
table.integer ('target_character').comment ('クエリ先キャラクタ') |
|
|
|
table.text ('content').comment ('クエリ内容') |
|
|
|
table.binary ('attachment').nullable ().default (None).comment ('添附') |
|
|
|
table.integer ('query_type').comment ('クエリ区分') |
|
|
|
table.datetime ('sent_at', 6).comment ('送信日時') |
|
|
|
table.boolean ('answered').default (False).comment ('回答済') |
|
|
|
|
|
|
|
def down ( |
|
|
|
self, |
|
|
|
) -> None: |
|
|
|
self.schema.drop ('queries') |
|
|
|
|
|
|
|
|
|
|
|
class CreateAnswers (Migration): |
|
|
|
""" |
|
|
|
answers テーブルの作成 |
|
|
|
""" |
|
|
|
|
|
|
|
def up ( |
|
|
|
self, |
|
|
|
) -> None: |
|
|
|
with self.schema.create ('answers') as table: |
|
|
|
table.big_increments ('id') |
|
|
|
table.big_integer ('query_id').nullable ().comment ('クエリ') |
|
|
|
table.integer ('character').comment ('キャラクタ区分') |
|
|
|
table.text ('content').comment ('回答内容') |
|
|
|
table.integer ('answer_type').comment ('回答区分') |
|
|
|
table.datetime ('sent_at', 6).comment ('送信日時') |
|
|
|
table.boolean ('answered').default (False).comment ('回答済') |
|
|
|
|
|
|
|
def down ( |
|
|
|
self, |
|
|
|
) -> None: |
|
|
|
self.schema.drop ('answers') |
|
|
|
from __future__ import annotations |
|
|
|
|
|
|
|
from eloquent import DatabaseManager, Schema |
|
|
|
|
|
|
|
CONFIG: dict[str, DbConfig] = { 'mysql': { 'driver': 'mysql', |
|
|
|
'host': 'localhost', |
|
|
|
'database': 'nizika_nico', |
|
|
|
'user': os.environ['MYSQL_USER'], |
|
|
|
'password': os.environ['MYSQL_PASS'], |
|
|
|
'prefix': '' } } |
|
|
|
DB = DatabaseManager (CONFIG) |
|
|
|
SCHEMA = Schema (DB) |
|
|
|
|
|
|
|
|
|
|
|
def main ( |
|
|
|
) -> None: |
|
|
|
create_queries () |
|
|
|
create_answers () |
|
|
|
create_users () |
|
|
|
|
|
|
|
|
|
|
|
def create_queries ( |
|
|
|
) -> None: |
|
|
|
with SCHEMA.create ('queries') as table: |
|
|
|
table.big_increments ('id') |
|
|
|
table.big_integer ('user_id').nullable ().comment ('クエリ主') |
|
|
|
table.integer ('target_character').comment ('クエリ先キャラクタ') |
|
|
|
table.text ('content').comment ('クエリ内容') |
|
|
|
table.binary ('attachment').nullable ().default (None).comment ('添附') |
|
|
|
table.integer ('query_type').comment ('クエリ区分') |
|
|
|
table.datetime ('sent_at', 6).comment ('送信日時') |
|
|
|
table.boolean ('answered').default (False).comment ('回答済') |
|
|
|
|
|
|
|
|
|
|
|
def create_answers ( |
|
|
|
) -> None: |
|
|
|
with SCHEMA.create ('answers') as table: |
|
|
|
table.big_increments ('id') |
|
|
|
table.big_integer ('query_id').nullable ().comment ('クエリ') |
|
|
|
table.integer ('character').comment ('キャラクタ区分') |
|
|
|
table.text ('content').comment ('回答内容') |
|
|
|
table.integer ('answer_type').comment ('回答区分') |
|
|
|
table.datetime ('sent_at', 6).comment ('送信日時') |
|
|
|
table.boolean ('answered').default (False).comment ('回答済') |
|
|
|
|
|
|
|
|
|
|
|
def create_users ( |
|
|
|
) -> None: |
|
|
|
with SCHEMA.create ('users') as table: |
|
|
|
table.big_increments ('id') |
|
|
|
table.integet ('platform').comment ('プラットフォーム区分') |
|
|
|
table.string ('code').nullable ().comment ('ユーザ・コード(プラットフォーム依存)') |
|
|
|
table.string ('name').comment ('ユーザ名(プラットフォーム内)') |
|
|
|
table.binary ('icon').nullable ().comment ('アイコン') |
|
|
|
|
|
|
|
|
|
|
|
class DbConfig (TypedDict): |
|
|
|
driver: str |
|
|
|
host: str |
|
|
|
database: str |
|
|
|
user: str |
|
|
|
password: str |
|
|
|
prefix: str |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
main () |