Gurucool_Test / manage.py
ashwinR's picture
Upload 245 files
b7a7f32
raw
history blame
6.79 kB
import os
import sys
from time import sleep
import click
# RCOUNT: 145
class CommandDefinition:
def generator(self, name, det): # noqa
from utils import generator
if det == "all":
if not name:
print("Enter at least one name!")
for item in name:
generator.create_model(item)
generator.create_endpoint(item)
generator.create_crud(item)
generator.create_schema(item)
elif det == "model":
if not name:
print("Enter at least one model name!")
for item in name:
generator.create_model(item)
elif det == "schema":
if not name:
print("Enter at least one schema name!")
for item in name:
generator.create_schema(item)
elif det == "endpoint":
if not name:
print("Enter at least one endpoint name!")
for item in name:
generator.create_endpoint(item)
elif det == "crud":
if not name:
print("Enter at least one CRUD name!")
for item in name:
generator.create_crud(item)
def start(self):
from misc.scripts import launch
launch.run()
def mkmig(self):
from alembic import command
from alembic.config import Config
alembic_cfg = Config("alembic.ini")
msg = input("Enter a message: ")
command.revision(config=alembic_cfg, autogenerate=True, message=msg)
click.echo("Inside migrate")
def mig(self):
from alembic import command
from alembic.config import Config
alembic_cfg = Config("alembic.ini")
command.upgrade(alembic_cfg, "head")
def cleanmig(self):
for file in os.listdir("migrations/versions/"):
if file != ".keep":
if os.path.isfile(f"migrations/versions/{file}"):
os.remove(f"migrations/versions/{file}")
def cleanredis(self):
from core.config import settings
os.system(
f"docker-compose exec redis redis-cli -a {settings.SECRET_KEY} FLUSHALL"
)
def logs(self):
os.system(f"docker-compose logs -f -t")
def remake(self):
self.cleandb()
self.populate()
def remakeall(self):
from alembic import command
from alembic.config import Config
try:
os.system(f"docker-compose down -v -t 5")
os.system(
f"cd .. && docker-compose up -d postgres redis pgadmin mailhog file_server"
)
except Exception as e:
print(e)
self.cleanmig()
alembic_cfg = Config("alembic.ini")
rev_created = False
while True:
try:
if not rev_created:
command.revision(
config=alembic_cfg, autogenerate=True, message="Remake All"
)
rev_created = True
command.upgrade(alembic_cfg, "head")
break
except Exception as e:
print(e)
print("Waiting for containers to boot!")
sleep(3)
try:
self.populate()
except Exception as e:
print(e)
def dcstart(self):
os.system(
"cd .. && docker-compose up -d postgres file_server redis pgadmin mailhog"
)
def cleandb(self):
try:
from alembic import command
from alembic.config import Config
from core.db import engine
self.cleanmig()
engine.execute("DROP schema public CASCADE")
engine.execute("CREATE schema public")
alembic_cfg = Config("alembic.ini")
command.revision(config=alembic_cfg, autogenerate=True, message="cleandb")
command.upgrade(alembic_cfg, "head")
except Exception as e:
print(e)
def populate(self):
from utils import populate as db_populate
sleep(5)
db_populate.populate_all()
def pytest(self):
ec = int(
os.system(
"pytest --verbose --color=yes tests/api/api_v1/")
/ 256
)
sys.exit(ec)
def build_push(self):
ec = int(
os.system(
"docker build -t registry.gitlab.com/arpandaze/sikshyalaya/backend . && docker push registry.gitlab.com/arpandaze/sikshyalaya/backend")
/ 256
)
sys.exit(ec)
commands = CommandDefinition()
@click.group()
def main():
pass
@click.group("create")
@click.pass_context
def create(context):
if not context.invoked_subcommand:
pass
@click.group("clean")
@click.pass_context
def clean(context):
if not context.invoked_subcommand:
pass
@click.command()
@click.argument("name", nargs=-1)
def all(name): # noqa
commands.generator(name, "all")
@click.command()
@click.argument("name", nargs=-1)
def model(name):
commands.generator(name, "model")
@click.command()
@click.argument("name", nargs=-1)
def schema(name):
commands.generator(name, "schema")
@click.command()
@click.argument("name", nargs=-1)
def endpoint(name):
commands.generator(name, "endpoint")
@click.command()
@click.argument("name", nargs=-1)
def crud(name):
commands.generator(name, "crud")
@click.command()
def start():
commands.start()
@click.command()
def dcstart():
commands.dcstart()
@click.command()
def pytest():
commands.pytest()
@click.command()
def build_push():
commands.build_push()
@click.command()
def mkmig():
commands.mkmig()
@click.command()
def mig():
commands.mig()
@click.command(name="mig")
def clean_mig():
commands.cleanmig()
@click.command()
def redis():
commands.cleanredis()
@click.command()
def logs():
commands.logs()
@click.command()
def remakeall():
commands.remakeall()
@click.command()
def remake():
commands.remake()
@click.command()
def db():
commands.cleandb()
@click.command()
def populate():
commands.populate()
main.add_command(create)
main.add_command(clean)
main.add_command(start)
main.add_command(mkmig)
main.add_command(mig)
main.add_command(populate)
main.add_command(logs)
main.add_command(remakeall)
main.add_command(remake)
main.add_command(dcstart)
main.add_command(pytest)
main.add_command(build_push)
clean.add_command(db)
clean.add_command(clean_mig)
clean.add_command(redis)
create.add_command(model)
create.add_command(schema)
create.add_command(crud)
create.add_command(endpoint)
create.add_command(all)
if __name__ == "__main__":
main()