diff options
author | SoniEx2 <endermoneymod@gmail.com> | 2020-07-19 20:38:05 -0300 |
---|---|---|
committer | SoniEx2 <endermoneymod@gmail.com> | 2020-07-19 20:38:05 -0300 |
commit | af3fb6c6eb233af00229a908bab92afbf38bad0b (patch) | |
tree | 6aaaa1726c585d25fa84d1a09cb4b1950278097f /ganarchy/cli/db.py | |
parent | f216c88680a880db75ab24d9ce8fa35f327ac697 (diff) |
Move a lot of things around (broken)
Diffstat (limited to 'ganarchy/cli/db.py')
-rw-r--r-- | ganarchy/cli/db.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/ganarchy/cli/db.py b/ganarchy/cli/db.py new file mode 100644 index 0000000..e754c34 --- /dev/null +++ b/ganarchy/cli/db.py @@ -0,0 +1,71 @@ +# This file is part of GAnarchy - decentralized project hub +# Copyright (C) 2020 Soni L. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +"""Database-related CLI commands. + +""" + +import os + +import click + +import ganarchy.cli +import ganarchy.data +import ganarchy.db +import ganarchy.dirs + +@ganarchy.cli.main.command() +def initdb(): + """Initializes the ganarchy database.""" + # TODO: makedirs in a separate command? + os.makedirs(ganarchy.dirs.DATA_HOME, exist_ok=True) + db = ganarchy.db.connect_database(ganarchy.data.ConfigManager.new_default()) + db.initialize() + db.close() + +@ganarchy.cli.main.group() +def migrations(): + """Modifies the DB to work with a newer/older version. + + WARNING: THIS COMMAND CAN BE EXTREMELY DESTRUCTIVE!""" + +@migrations.command() +@click.argument('migration') +def apply(migration): + """Applies the migration with the given name.""" + db = ganarchy.db.connect_database(ganarchy.data.ConfigManager.new_default()) + click.echo(ganarchy.db.MIGRATIONS[migration][0]) + db.apply_migration(migration) + db.close() + +@click.argument('migration') +@migrations.command() +def revert(migration): + """Reverts the migration with the given name.""" + db = ganarchy.db.connect_database(ganarchy.data.ConfigManager.new_default()) + click.echo(ganarchy.db.MIGRATIONS[migration][1]) + db.revert_migration(migration) + db.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(ganarchy.db.MIGRATIONS.keys()) + else: + click.echo(ganarchy.db.MIGRATIONS[migration][2]) |