88 lines
2.6 KiB
ReStructuredText
88 lines
2.6 KiB
ReStructuredText
|
||
.. 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 it’s 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.
|
||
|
||
|
||
.. _make-user:
|
||
|
||
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.
|