|
from tortoise import Tortoise |
|
import os |
|
import ssl |
|
import uuid |
|
from asyncpg import Connection |
|
|
|
|
|
ssl_context = ssl.create_default_context() |
|
|
|
|
|
TORTOISE_ORM = { |
|
"connections": { |
|
"default": { |
|
"engine": "tortoise.backends.asyncpg", |
|
"credentials": { |
|
"host": "aws-0-us-east-2.pooler.supabase.com", |
|
"port": "5432", |
|
"user": os.getenv("DB_USER"), |
|
"password": os.getenv("DB_PASSWORD"), |
|
"database": "postgres", |
|
"min_size": 1, |
|
"max_size": 10, |
|
"timeout": 30, |
|
|
|
|
|
"max_queries": 50000, |
|
"max_inactive_connection_lifetime": 300.0, |
|
}, |
|
|
|
|
|
"connect_args": { |
|
"statement_cache_size": 0, |
|
"ssl": ssl_context |
|
} |
|
} |
|
}, |
|
"apps": { |
|
"models": { |
|
"models": [ |
|
"App.routers.stocks.models", |
|
"App.routers.tasks.models", |
|
"App.routers.utt.models", |
|
"App.routers.users.models", |
|
"App.routers.portfolio.models", |
|
"App.routers.bonds.models", |
|
"aerich.models", |
|
], |
|
"default_connection": "default", |
|
} |
|
}, |
|
} |
|
|
|
async def init_db(): |
|
await Tortoise.init( |
|
TORTOISE_ORM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
) |
|
await Tortoise.generate_schemas() |
|
|
|
|
|
async def close_db(): |
|
await Tortoise.close_connections() |
|
|
|
|
|
async def clear_db(): |
|
for model in Tortoise.apps.get("models").values(): |
|
await model.all().delete() |
|
|