-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmanage.py
69 lines (51 loc) · 1.79 KB
/
manage.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
import sys
from database import init_db
import uvicorn
from utils.logger import logger
from utils.manager import Manager
manager = Manager()
@manager.command
def runserver():
os.environ["RUNNING_LOCALLY"] = "true"
# Visual Studio uses an older debug method that does not work with uvicorn hot reload
if os.getenv("DISABLE_HOT_RELOAD", "").lower() == "true":
from app import app
uvicorn.run(app, host="127.0.0.1", port=5000, log_level="info")
uvicorn.run("app:app", host="127.0.0.1", port=5000, log_level="info", reload=True)
@manager.command
def db():
if sys.argv[2] == "init":
logger.info("Initializing database")
upgrade()
elif sys.argv[2] == "migrate":
logger.info(sys.argv, len(sys.argv))
if len(sys.argv) < 4:
logger.error("ERROR: Must include a message for the top of the migration file")
elif len(sys.argv) > 4:
logger.error("ERROR: Message must be surrounded with double quotes")
else:
message = " ".join(sys.argv[3:])
migrate(message)
elif sys.argv[2] == "upgrade":
upgrade()
elif sys.argv[2] == "downgrade":
downgrade()
else:
logger.error("ERROR: Command must be 'db downgrade', 'db migrate' or 'db upgrade'")
def migrate(message):
logger.info("Migrating database")
command = f'alembic revision --autogenerate -m " {message}"'
return os.system(command)
def upgrade():
logger.info("Upgrading database")
command = "alembic upgrade head"
return os.system(command)
def downgrade():
logger.info("Downgrading database")
command = "alembic downgrade -1"
return os.system(command)
if __name__ == "__main__":
logger.info("Command: %s", sys.argv)
sys.stdout.flush()
manager.run()