Trivial migrations implementation

This commit is contained in:
SoniEx2 2019-05-03 20:19:24 -03:00
parent 77f5a068f4
commit 58f3175668
1 changed files with 40 additions and 9 deletions

View File

@ -66,6 +66,10 @@ TEMPLATE = """<!DOCTYPE html>
</html> </html>
""" """
MIGRATIONS = {
"test": ("-- apply", "-- revert", "does nothing")
}
try: try:
data_home = os.environ['XDG_DATA_HOME'] data_home = os.environ['XDG_DATA_HOME']
except KeyError: except KeyError:
@ -170,19 +174,46 @@ def remove(url):
conn.commit() conn.commit()
conn.close() conn.close()
@ganarchy.group()
def migrations(): def migrations():
@ganarchy.group()
def migrations():
"""Modifies the DB to work with a newer/older version. """Modifies the DB to work with a newer/older version.
WARNING: THIS COMMAND CAN BE EXTREMELY DESTRUCTIVE!""" WARNING: THIS COMMAND CAN BE EXTREMELY DESTRUCTIVE!"""
@migrations.command() @migrations.command()
def apply(): @click.argument('migration')
""" NYI """ def apply(migration):
"""Applies the migration with the given name."""
conn = sqlite3.connect(data_home + "/ganarchy.db")
c = conn.cursor()
click.echo(MIGRATIONS[migration][0])
c.execute(MIGRATIONS[migration][0])
conn.commit()
conn.close()
@migrations.command() @click.argument('migration')
def revert(): @migrations.command()
""" NYI """ def revert(migration):
"""Reverts the migration with the given name."""
conn = sqlite3.connect(data_home + "/ganarchy.db")
c = conn.cursor()
click.echo(MIGRATIONS[migration][1])
c.execute(MIGRATIONS[migration][1])
conn.commit()
conn.close()
@click.argument('migration', required=False)
@migrations.command()
def info(migration):
"""Shows information about the migration with the given name."""
if not migration:
# TODO could be improved
click.echo(MIGRATIONS.keys())
else:
click.echo(MIGRATIONS[migration][2])
migrations()
@ganarchy.command() @ganarchy.command()
def cron_target(): def cron_target():