2016-11-20 20:04:52 +01:00
|
|
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
;;
|
2020-05-26 12:28:35 +02:00
|
|
|
;; This Source Code Form is "Incompatible With Secondary Licenses", as
|
|
|
|
;; defined by the Mozilla Public License, v. 2.0.
|
|
|
|
;;
|
|
|
|
;; Copyright (c) 2020 UXBOX Labs SL
|
2016-11-20 20:04:52 +01:00
|
|
|
|
2020-08-18 19:26:37 +02:00
|
|
|
(ns app.migrations
|
2019-11-18 11:52:57 +01:00
|
|
|
(:require
|
|
|
|
[mount.core :as mount :refer [defstate]]
|
2020-08-18 19:26:37 +02:00
|
|
|
[app.db :as db]
|
|
|
|
[app.config :as cfg]
|
|
|
|
[app.util.migrations :as mg]))
|
2019-11-18 11:52:57 +01:00
|
|
|
|
2019-11-22 18:09:13 +01:00
|
|
|
(def +migrations+
|
2019-11-18 11:52:57 +01:00
|
|
|
{:name "uxbox-main"
|
|
|
|
:steps
|
2020-05-25 13:45:52 +02:00
|
|
|
[{:desc "Add initial extensions and functions."
|
|
|
|
:name "0001-add-extensions"
|
|
|
|
:fn (mg/resource "migrations/0001-add-extensions.sql")}
|
|
|
|
|
|
|
|
{:desc "Add profile related tables"
|
|
|
|
:name "0002-add-profile-tables"
|
|
|
|
:fn (mg/resource "migrations/0002-add-profile-tables.sql")}
|
|
|
|
|
|
|
|
{:desc "Add project related tables"
|
|
|
|
:name "0003-add-project-tables"
|
|
|
|
:fn (mg/resource "migrations/0003-add-project-tables.sql")}
|
|
|
|
|
|
|
|
{:desc "Add tasks related tables"
|
|
|
|
:name "0004-add-tasks-tables"
|
|
|
|
:fn (mg/resource "migrations/0004-add-tasks-tables.sql")}
|
|
|
|
|
|
|
|
{:desc "Add libraries related tables"
|
|
|
|
:name "0005-add-libraries-tables"
|
|
|
|
:fn (mg/resource "migrations/0005-add-libraries-tables.sql")}
|
|
|
|
|
|
|
|
{:desc "Add presence related tables"
|
|
|
|
:name "0006-add-presence-tables"
|
|
|
|
:fn (mg/resource "migrations/0006-add-presence-tables.sql")}
|
|
|
|
|
|
|
|
{:desc "Drop version field from page table."
|
|
|
|
:name "0007-drop-version-field-from-page-table"
|
|
|
|
:fn (mg/resource "migrations/0007-drop-version-field-from-page-table.sql")}
|
|
|
|
|
|
|
|
{:desc "Add generic token related tables."
|
2020-05-26 12:28:35 +02:00
|
|
|
:name "0008-add-generic-token-table"
|
2020-05-25 13:45:52 +02:00
|
|
|
:fn (mg/resource "migrations/0008-add-generic-token-table.sql")}
|
|
|
|
|
|
|
|
{:desc "Drop the profile_email table"
|
2020-05-26 12:28:35 +02:00
|
|
|
:name "0009-drop-profile-email-table"
|
|
|
|
:fn (mg/resource "migrations/0009-drop-profile-email-table.sql")}
|
|
|
|
|
|
|
|
{:desc "Add new HTTP session table"
|
|
|
|
:name "0010-add-http-session-table"
|
2020-06-26 09:35:25 +02:00
|
|
|
: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"
|
2020-07-28 14:57:55 +02:00
|
|
|
: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"
|
2020-08-04 12:05:54 +02:00
|
|
|
:fn (mg/resource "migrations/0012-make-libraries-linked-to-a-file.sql")}
|
|
|
|
|
|
|
|
{:desc "Mark files shareable"
|
|
|
|
:name "0013-mark-files-shareable"
|
2020-08-05 14:31:08 +02:00
|
|
|
:fn (mg/resource "migrations/0013-mark-files-shareable.sql")}
|
|
|
|
|
|
|
|
{:desc "Refactor media storage"
|
|
|
|
:name "0014-refactor-media-storage.sql"
|
2020-08-06 16:05:14 +02:00
|
|
|
:fn (mg/resource "migrations/0014-refactor-media-storage.sql")}
|
|
|
|
|
|
|
|
{:desc "Improve and partition task related tables"
|
|
|
|
:name "0015-improve-tasks-tables"
|
|
|
|
:fn (mg/resource "migrations/0015-improve-tasks-tables.sql")}
|
|
|
|
|
|
|
|
{:desc "Truncate & alter tokens tables"
|
|
|
|
:name "0016-truncate-and-alter-tokens-table"
|
2020-08-05 13:30:26 +02:00
|
|
|
:fn (mg/resource "migrations/0016-truncate-and-alter-tokens-table.sql")}
|
|
|
|
|
|
|
|
{:desc "Link files to libraries"
|
|
|
|
:name "0017-link-files-to-libraries"
|
2020-08-17 13:39:36 +02:00
|
|
|
:fn (mg/resource "migrations/0017-link-files-to-libraries.sql")}
|
|
|
|
|
|
|
|
{:desc "Add file triming triggers"
|
|
|
|
:name "0018-add-file-trimming-triggers"
|
|
|
|
:fn (mg/resource "migrations/0018-add-file-trimming-triggers.sql")}
|
|
|
|
|
|
|
|
{:desc "Improve scheduled task tables"
|
|
|
|
:name "0019-add-improved-scheduled-tasks"
|
|
|
|
:fn (mg/resource "migrations/0019-add-improved-scheduled-tasks.sql")}
|
|
|
|
|
|
|
|
{:desc "Minor fixes to media object"
|
|
|
|
:name "0020-minor-fixes-to-media-object"
|
|
|
|
:fn (mg/resource "migrations/0020-minor-fixes-to-media-object.sql")}
|
|
|
|
|
|
|
|
{:desc "Improve http session tables"
|
|
|
|
:name "0021-http-session-improvements"
|
|
|
|
:fn (mg/resource "migrations/0021-http-session-improvements.sql")}
|
|
|
|
]})
|
2017-03-25 19:35:28 +01:00
|
|
|
|
2020-02-24 10:57:32 +01:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
2016-11-20 20:04:52 +01:00
|
|
|
;; Entry point
|
2020-02-24 10:57:32 +01:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
2016-11-20 20:04:52 +01:00
|
|
|
|
2019-11-18 11:52:57 +01:00
|
|
|
(defn migrate
|
2016-11-20 20:04:52 +01:00
|
|
|
[]
|
2020-05-14 13:49:11 +02:00
|
|
|
(with-open [conn (db/open)]
|
|
|
|
(mg/setup! conn)
|
|
|
|
(mg/migrate! conn +migrations+)))
|
2016-11-20 20:04:52 +01:00
|
|
|
|
|
|
|
(defstate migrations
|
|
|
|
:start (migrate))
|