]> git.lizzy.rs Git - cheatdb.git/commitdiff
Fix migration error when migrating from scratch
authorrubenwardy <rw@rubenwardy.com>
Tue, 1 Sep 2020 13:57:03 +0000 (14:57 +0100)
committerrubenwardy <rw@rubenwardy.com>
Tue, 1 Sep 2020 13:57:03 +0000 (14:57 +0100)
README.md
config.example.cfg
migrations/versions/c141a63b2487_.py
migrations/versions/cb6ab141c522_.py

index a81a8eea4632cd320de831be3d9963e66d5625f5..7943bad511e83a959beb69337cbeacd8e4d62d16 100644 (file)
--- a/README.md
+++ b/README.md
@@ -4,31 +4,78 @@
 Content database for Minetest mods, games, and more.\
 Developed by rubenwardy, license GPLv3.0+.
 
-## How-tos
+## Getting started (debug/dev)
 
-Note: you should first read one of the guides on the [Github repo wiki](https://github.com/minetest/contentdb/wiki)
+Docker is the recommended way to develop and deploy ContentDB.
 
-```sh
-# Run celery worker
-FLASK_CONFIG=../config.cfg celery -A app.tasks.celery worker
+1. Install `docker` and `docker-compose`.
 
-# if sqlite
-python utils/setup.py -t
-rm db.sqlite && python setup.py -t && FLASK_CONFIG=../config.cfg FLASK_APP=app/__init__.py flask db stamp head
+               sudo apt install docker-ce docker-compose
 
-# Create migration
-FLASK_CONFIG=../config.cfg FLASK_APP=app/__init__.py flask db migrate
-# Run migration
-FLASK_CONFIG=../config.cfg FLASK_APP=app/__init__.py flask db upgrade
+1. Copy `config.example.cfg` to `config.cfg`.
 
-# Enter docker
-docker exec -it contentdb_app_1 bash
+2. Fill out `config.cfg`
+       1. Set `SQLALCHEMY_DATABASE_URI` = "postgres://contentdb:password@db:5432/contentdb"
+       2. Optionally, set the MAIL settings.
+
+3. (Optional) Set up GitHub integration
+       1. Make a Github OAuth Client at <https://github.com/settings/developers>:
+       2. Homepage URL - `http://localhost:5123/`
+       3. Authorization callback URL - `http://localhost:5123/user/github/callback/`
+       4. Put client id and client secret in `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET` in config.cfg.
+
+4. Create config.env:
+
+               POSTGRES_USER=contentdb
+               POSTGRES_PASSWORD=password
+               POSTGRES_DB=contentdb
+               FLASK_DEBUG=1
+
+5. Start docker images:
+
+               docker-compose up --build
+
+6. Setup database:
+
+               ./utils/run_migrations.sh
+
+8. (Optional) create initial data
+       1. `./utils/bash.sh`
+       2. Either `python setup.py -o` or `python setup.py -t`
+       1. `-o` creates just the admin, and static data like tags, and licenses.
+       2. `-t` will create test pacakges.
+
+9.  View at <http://localhost:5123>.
+    The admin username is `rubenwardy` and the password is `tuckfrump`.
+
+In the future, starting CDB is as simple as:
 
+       docker-compose up --build
+
+To hot/live update CDB whilst it is running, use:
+
+       ./utils/reload.sh
+
+This will only work with python code and templates, it won't update tasks or config.
+
+
+## How-tos
+
+```sh
 # Hot/live reload (only works with FLASK_DEBUG=1)
 ./utils/reload.sh
 
-# Cold update a running version of CDB with minimal downtime
+# Cold update a running version of CDB with minimal downtime (production)
 ./utils/update.sh
+
+# Enter docker
+./utils/bash.sh
+
+# Run migrations
+./utils/run_migrations.sh
+
+# Create new migration
+./utils/create_migration.sh
 ```
 
 ## Database
index 860469aecf42857901b9c6b5583af83fbe956e3d..b3a66e9c0396e0880b1a96af5fd69337ece0f543 100644 (file)
@@ -1,11 +1,11 @@
 USER_APP_NAME = "ContentDB"
-SERVER_NAME = "content.minetest.net"
+SERVER_NAME = "localhost:5123"
 BASE_URL = "http://" + SERVER_NAME
 
 SECRET_KEY = ""
 WTF_CSRF_SECRET_KEY = ""
 
-SQLALCHEMY_DATABASE_URI = "sqlite:///../db.sqlite"
+SQLALCHEMY_DATABASE_URI = "postgres://contentdb:password@db:5432/contentdb"
 SQLALCHEMY_TRACK_MODIFICATIONS = False
 
 GITHUB_CLIENT_ID = ""
index 571eef62d40943c46e34546f593f387a7e17ec6a..a5d7297eddb56c7cca0afa9946cb2a64f7da7c20 100644 (file)
@@ -21,16 +21,6 @@ depends_on = None
 def upgrade():
        op.add_column('package', sa.Column('downloads', sa.Integer(), nullable=False, server_default="0"))
 
-       bind = op.get_bind()
-       session = orm.Session(bind=bind)
-
-       for package in session.query(Package).all():
-               downloads_result = session.query(func.sum(PackageRelease.downloads)).filter_by(package_id=package.id).one_or_none()
-               downloads = 0 if not downloads_result or not downloads_result[0] else downloads_result[0]
-               package.downloads = downloads
-
-       session.commit()
-
 
 def downgrade():
        # ### commands auto generated by Alembic - please adjust! ###
index 33da88bb4fbe7558b45f93524349c925d03614b6..be0378b2ec0317f918fc4ddece021c59af868591 100644 (file)
@@ -31,8 +31,7 @@ def upgrade():
        bind = op.get_bind()
        session = orm.Session(bind=bind)
 
-       for package in session.query(Package).all():
-               package.maintainers.append(package.author)
+       op.execute('INSERT INTO maintainers (package_id, user_id) SELECT id, author_id FROM package;')
 
        session.commit()