0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-01-07 15:39:42 -05:00
penpot/docs/03-Backend-Developer-Guide.md
2021-01-28 14:02:22 +01:00

1.8 KiB

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:

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:

(require 'app.cli.fixtures)
(app.cli.fixtures/run :small)

To access to the running process repl you usually will execute this command:

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-<add|mod|del|drop|[...verb...]>-<table-name>-<any-additional-text>

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:

# (in the devenv environment)
pg_dump -h postgres -s  > schema.sql