mirror of
https://github.com/283375/arcaea-offline.git
synced 2025-04-21 06:50:18 +00:00
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import pytest
|
|
from sqlalchemy import create_engine, text
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
# region sqlalchemy fixtures
|
|
engine = create_engine("sqlite:///:memory:")
|
|
Session = sessionmaker()
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def db_conn():
|
|
conn = engine.connect()
|
|
yield conn
|
|
conn.close()
|
|
|
|
|
|
@pytest.fixture
|
|
def db_session(db_conn):
|
|
session = Session(bind=db_conn)
|
|
yield session
|
|
session.close()
|
|
|
|
# drop everything
|
|
query_tables = db_conn.execute(
|
|
text("SELECT name FROM sqlite_master WHERE type='table'")
|
|
).fetchall()
|
|
for row in query_tables:
|
|
table_name = row[0]
|
|
db_conn.execute(text(f"DROP TABLE {table_name}"))
|
|
|
|
query_views = db_conn.execute(
|
|
text("SELECT name FROM sqlite_master WHERE type='view'")
|
|
).fetchall()
|
|
for row in query_views:
|
|
view_name = row[0]
|
|
db_conn.execute(text(f"DROP VIEW {view_name}"))
|
|
|
|
query_indexes = db_conn.execute(
|
|
text("SELECT name FROM sqlite_master WHERE type='index'")
|
|
).fetchall()
|
|
for row in query_indexes:
|
|
index_name = row[0]
|
|
db_conn.execute(text(f"DROP INDEX {index_name}"))
|
|
|
|
query_triggers = db_conn.execute(
|
|
text("SELECT name FROM sqlite_master WHERE type='trigger'")
|
|
).fetchall()
|
|
for row in query_triggers:
|
|
trigger_name = row[0]
|
|
db_conn.execute(text(f"DROP TRIGGER {trigger_name}"))
|
|
|
|
|
|
# endregion
|