rattail-tutorial/docs/make-db.rst

86 lines
2.6 KiB
ReStructuredText
Raw Normal View History

2019-08-17 03:47:46 -05:00
.. highlight:: sh
Establish Main App Database
===========================
Now that you have a hang of how to use the Rattail-style command line
(somewhat), let's move on to the database.
The main reason to wait until now to add a DB to the mix, was simply to show
that the "core" of Rattail does not need a DB. However in practice there *are*
definitely some commands which Rattail comes with out of the box, and which
also would require one or even multiple databases to be present.
Create User for PostgreSQL
--------------------------
Before we make our database, let's first establish a user account within
Postgres, which we will designate as the "owner" of our database(s).
It is convention within Rattail, to create a PG user named "rattail" for this
purpose. You are free to use another name if you prefer::
sudo -u postgres createuser --no-createdb --no-createrole --no-superuser rattail
You also should declare a password for the user::
sudo -u postgres psql -c "alter user rattail password 'newpassword'"
Create Database
---------------
Now that we know who to use as the "owner" we will create a new Postgres
database::
sudo -u postgres createdb --owner rattail rattut
Of course we named our database "rattut" here only because we're assuming this
tutorial project is the app, but your name may be different.
At this point you should update your ``app/rattail.conf`` file to reflect your
chosen database name and user credentials:
.. code-block:: ini
[rattail.db]
default.url = postgresql://rattail:newpassword@localhost/rattut
Install DB Schema
-----------------
So you have a DB but its empty; you can confirm that with::
sudo -u postgres psql -c '\d' rattut
But we'll fix that now. Schema is managed entirely via Alembic "version"
scripts, so to install the schema we merely run all the scripts::
cdvirtualenv
bin/alembic -c app/rattail.conf upgrade heads
(Note that you must use ``rattail.conf`` for that; ``quiet.conf`` won't work.)
If you check the DB again you should see a good amount of tables.
Create Admin User in DB
-----------------------
We include this here not so much because you *need* an admin user in your DB at
this point (although you will for the web app), but rather just to confirm that
everything is setup correctly thus far.
You currently should have no users in your DB::
sudo -u postgres psql -c 'select * from "user"' rattut
Okay then let's make an admin user for you::
bin/rattail -c app/quiet.conf make-user --admin myusername
Now if you query the ``user`` table again you should see your new account.