0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-12 07:41:43 -05:00

♻️ Refactor migrations.

This commit is contained in:
Andrey Antukh 2020-09-21 15:58:56 +02:00 committed by Alonso Torres
parent 1b598e2f6d
commit dda6a96407
25 changed files with 75 additions and 70 deletions

View file

@ -18,97 +18,73 @@
(def +migrations+ (def +migrations+
{:name "uxbox-main" {:name "uxbox-main"
:steps :steps
[{:desc "Add initial extensions and functions." [{:name "0001-add-extensions"
:name "0001-add-extensions" :fn (mg/resource "app/migrations/sql/0001-add-extensions.sql")}
:fn (mg/resource "migrations/0001-add-extensions.sql")}
{:desc "Add profile related tables" {:name "0002-add-profile-tables"
:name "0002-add-profile-tables" :fn (mg/resource "app/migrations/sql/0002-add-profile-tables.sql")}
:fn (mg/resource "migrations/0002-add-profile-tables.sql")}
{:desc "Add project related tables" {:name "0003-add-project-tables"
:name "0003-add-project-tables" :fn (mg/resource "app/migrations/sql/0003-add-project-tables.sql")}
:fn (mg/resource "migrations/0003-add-project-tables.sql")}
{:desc "Add tasks related tables" {:name "0004-add-tasks-tables"
:name "0004-add-tasks-tables" :fn (mg/resource "app/migrations/sql/0004-add-tasks-tables.sql")}
:fn (mg/resource "migrations/0004-add-tasks-tables.sql")}
{:desc "Add libraries related tables" {:name "0005-add-libraries-tables"
:name "0005-add-libraries-tables" :fn (mg/resource "app/migrations/sql/0005-add-libraries-tables.sql")}
:fn (mg/resource "migrations/0005-add-libraries-tables.sql")}
{:desc "Add presence related tables" {:name "0006-add-presence-tables"
:name "0006-add-presence-tables" :fn (mg/resource "app/migrations/sql/0006-add-presence-tables.sql")}
:fn (mg/resource "migrations/0006-add-presence-tables.sql")}
{:desc "Drop version field from page table." {:name "0007-drop-version-field-from-page-table"
:name "0007-drop-version-field-from-page-table" :fn (mg/resource "app/migrations/sql/0007-drop-version-field-from-page-table.sql")}
:fn (mg/resource "migrations/0007-drop-version-field-from-page-table.sql")}
{:desc "Add generic token related tables." {:name "0008-add-generic-token-table"
:name "0008-add-generic-token-table" :fn (mg/resource "app/migrations/sql/0008-add-generic-token-table.sql")}
:fn (mg/resource "migrations/0008-add-generic-token-table.sql")}
{:desc "Drop the profile_email table" {:name "0009-drop-profile-email-table"
:name "0009-drop-profile-email-table" :fn (mg/resource "app/migrations/sql/0009-drop-profile-email-table.sql")}
:fn (mg/resource "migrations/0009-drop-profile-email-table.sql")}
{:desc "Add new HTTP session table" {:name "0010-add-http-session-table"
:name "0010-add-http-session-table" :fn (mg/resource "app/migrations/sql/0010-add-http-session-table.sql")}
:fn (mg/resource "migrations/0010-add-http-session-table.sql")}
{:desc "Add session_id field to page_change table" {:name "0011-add-session-id-field-to-page-change-table"
:name "0011-add-session-id-field-to-page-change-table" :fn (mg/resource "app/migrations/sql/0011-add-session-id-field-to-page-change-table.sql")}
:fn (mg/resource "migrations/0011-add-session-id-field-to-page-change-table.sql")}
{:desc "Make libraries linked to a file" {:name "0012-make-libraries-linked-to-a-file"
:name "0012-make-libraries-linked-to-a-file" :fn (mg/resource "app/migrations/sql/0012-make-libraries-linked-to-a-file.sql")}
:fn (mg/resource "migrations/0012-make-libraries-linked-to-a-file.sql")}
{:desc "Mark files shareable" {:name "0013-mark-files-shareable"
:name "0013-mark-files-shareable" :fn (mg/resource "app/migrations/sql/0013-mark-files-shareable.sql")}
:fn (mg/resource "migrations/0013-mark-files-shareable.sql")}
{:desc "Refactor media storage" {:name "0014-refactor-media-storage.sql"
:name "0014-refactor-media-storage.sql" :fn (mg/resource "app/migrations/sql/0014-refactor-media-storage.sql")}
:fn (mg/resource "migrations/0014-refactor-media-storage.sql")}
{:desc "Improve and partition task related tables" {:name "0015-improve-tasks-tables"
:name "0015-improve-tasks-tables" :fn (mg/resource "app/migrations/sql/0015-improve-tasks-tables.sql")}
:fn (mg/resource "migrations/0015-improve-tasks-tables.sql")}
{:desc "Truncate & alter tokens tables" {:name "0016-truncate-and-alter-tokens-table"
:name "0016-truncate-and-alter-tokens-table" :fn (mg/resource "app/migrations/sql/0016-truncate-and-alter-tokens-table.sql")}
:fn (mg/resource "migrations/0016-truncate-and-alter-tokens-table.sql")}
{:desc "Link files to libraries" {:name "0017-link-files-to-libraries"
:name "0017-link-files-to-libraries" :fn (mg/resource "app/migrations/sql/0017-link-files-to-libraries.sql")}
:fn (mg/resource "migrations/0017-link-files-to-libraries.sql")}
{:desc "Add file triming triggers" {:name "0018-add-file-trimming-triggers"
:name "0018-add-file-trimming-triggers" :fn (mg/resource "app/migrations/sql/0018-add-file-trimming-triggers.sql")}
:fn (mg/resource "migrations/0018-add-file-trimming-triggers.sql")}
{:desc "Improve scheduled task tables" {:name "0019-add-improved-scheduled-tasks"
:name "0019-add-improved-scheduled-tasks" :fn (mg/resource "app/migrations/sql/0019-add-improved-scheduled-tasks.sql")}
:fn (mg/resource "migrations/0019-add-improved-scheduled-tasks.sql")}
{:desc "Minor fixes to media object" {:name "0020-minor-fixes-to-media-object"
:name "0020-minor-fixes-to-media-object" :fn (mg/resource "app/migrations/sql/0020-minor-fixes-to-media-object.sql")}
:fn (mg/resource "migrations/0020-minor-fixes-to-media-object.sql")}
{:desc "Improve http session tables" {:name "0021-http-session-improvements"
:name "0021-http-session-improvements" :fn (mg/resource "app/migrations/sql/0021-http-session-improvements.sql")}
:fn (mg/resource "migrations/0021-http-session-improvements.sql")}
{:desc "Refactor pages and files" {:name "0022-page-file-refactor"
:name "0022-page-file-refactor" :fn (mg/resource "app/migrations/sql/0022-page-file-refactor.sql")}
:fn (mg/resource "migrations/0022-page-file-refactor.sql")}
{:name "0023-adapt-old-pages-and-files"
{:desc "Adapt old pages and files to new format"
:name "0023-adapt-old-pages-and-files"
:fn mg0023/migrate} :fn mg0023/migrate}
]}) ]})

View file

@ -13,7 +13,7 @@
[next.jdbc :as jdbc])) [next.jdbc :as jdbc]))
(s/def ::name string?) (s/def ::name string?)
(s/def ::step (s/keys :req-un [::name ::desc ::fn])) (s/def ::step (s/keys :req-un [::name ::fn]))
(s/def ::steps (s/every ::step :kind vector?)) (s/def ::steps (s/every ::step :kind vector?))
(s/def ::migrations (s/def ::migrations
(s/keys :req-un [::name ::steps])) (s/keys :req-un [::name ::steps]))

View file

@ -45,3 +45,32 @@ command:
rlwrap netcat localhost 5555 rlwrap netcat localhost 5555
``` ```
## 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:
```bash
# (in the devenv environment)
pg_dump -h postgres -s > schema.sql
```