# Backend Developer Guide # This guide intends to explain the essential details of the backend application. ## Fixtures ## This is a development feature that allows populate the database with a good amount of content (usually used for just test the application or perform performance tweaks on queries). In order to load fixtures, enter to the REPL environment executing the `bin/repl` script, and then execute `(app.cli.fixtures/run {:preset :small})`. You also can execute this as a standalone script with: ```bash clojure -Adev -X:fn-fixtures ``` NOTE: It is an optional step because the application can start with an empty database. This by default will create a bunch of users that can be used to login in the aplication. All users uses the following pattern: - Username: `profileN@example.com` - Password: `123123` Where `N` is a number from 0 to 5 on the default fixture parameters. If you have a REPL access to the running process, you can execute it from there: ```clojure (require 'app.cli.fixtures) (app.cli.fixtures/run :small) ``` To access to the running process repl you usually will execute this command: ```bash rlwrap netcat localhost 6062 ``` ## Migrations The database migrations are located in two directories: - `src/app/migrations` (contains migration scripts in clojure) - `src/app/migrations/sql` (contains the pure SQL migrations) The SQL migration naming consists in the following: ``` XXXX--- ``` Examples: ``` 0025-del-generic-tokens-table 0026-mod-profile-table-add-is-active-field ``` **NOTE**: if table name has more than one words, we still use `-` as a separator. If you need to have a global overview of the all schema of the database you can extract it using postgresql: ```bash # (in the devenv environment) pg_dump -h postgres -s > schema.sql ```