@saltcorn/admin-models 0.6.4-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @category saltcorn-admin-models
3
+ * @module backup
4
+ */
5
+ import Plugin from "@saltcorn/data/models/plugin";
6
+ declare const _default: {
7
+ create_backup: (fnm?: string | undefined) => Promise<string>;
8
+ restore: (fnm: string, loadAndSaveNewPlugin: (plugin: Plugin) => void, restore_first_user?: boolean | undefined) => Promise<string | void>;
9
+ create_csv_from_rows: (rows: any[], fnm: string) => Promise<void>;
10
+ };
11
+ export = _default;
12
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../models/backup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,MAAM,MAAM,8BAA8B,CAAC;;;;;;AAsUlD,kBAA0D"}
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ /**
3
+ * @category saltcorn-admin-models
4
+ * @module backup
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ const { getState } = require("@saltcorn/data/db/state");
10
+ const index_1 = __importDefault(require("@saltcorn/data/db/index"));
11
+ const table_1 = __importDefault(require("@saltcorn/data/models/table"));
12
+ const common_types_1 = require("@saltcorn/types/common_types");
13
+ const view_1 = __importDefault(require("@saltcorn/data/models/view"));
14
+ const file_1 = __importDefault(require("@saltcorn/data/models/file"));
15
+ const role_1 = __importDefault(require("@saltcorn/data/models/role"));
16
+ const page_1 = __importDefault(require("@saltcorn/data/models/page"));
17
+ const plugin_1 = __importDefault(require("@saltcorn/data/models/plugin"));
18
+ const adm_zip_1 = __importDefault(require("adm-zip"));
19
+ const tmp_promise_1 = require("tmp-promise");
20
+ const promises_1 = require("fs/promises");
21
+ const fs_1 = require("fs");
22
+ const path_1 = require("path");
23
+ const dateformat_1 = __importDefault(require("dateformat"));
24
+ const sync_1 = __importDefault(require("csv-stringify/lib/sync"));
25
+ const csvtojson_1 = __importDefault(require("csvtojson"));
26
+ const pack_1 = __importDefault(require("./pack"));
27
+ const { table_pack, view_pack, plugin_pack, page_pack, install_pack, can_install_pack, } = pack_1.default;
28
+ const { asyncMap } = require("@saltcorn/data/utils");
29
+ const trigger_1 = __importDefault(require("@saltcorn/data/models/trigger"));
30
+ const library_1 = __importDefault(require("@saltcorn/data/models/library"));
31
+ /**
32
+ * @function
33
+ * @param {string} dirpath
34
+ * @returns {Promise<void>}
35
+ */
36
+ const create_pack = async (dirpath) => {
37
+ const tables = await asyncMap(await table_1.default.find({}), async (t) => await table_pack(t.name));
38
+ const views = await asyncMap(await view_1.default.find({}), async (v) => await view_pack(v.name));
39
+ const plugins = await asyncMap(await plugin_1.default.find({}), async (v) => await plugin_pack(v.name));
40
+ const pages = await asyncMap(await page_1.default.find({}), async (v) => await page_pack(v.name));
41
+ const triggers = (await trigger_1.default.find({})).map((tr) => tr.toJson);
42
+ const roles = await role_1.default.find({});
43
+ const library = (await library_1.default.find({})).map((l) => l.toJson);
44
+ const pack = { tables, views, plugins, pages, triggers, roles, library };
45
+ await (0, promises_1.writeFile)((0, path_1.join)(dirpath, "pack.json"), JSON.stringify(pack));
46
+ };
47
+ /**
48
+ * @function
49
+ * @param {object[]} rows
50
+ * @param {string} fnm
51
+ * @returns {Promise<void>}
52
+ */
53
+ const create_csv_from_rows = async (rows, fnm) => {
54
+ if (rows.length === 0)
55
+ return;
56
+ const s = (0, sync_1.default)(rows, {
57
+ header: true,
58
+ cast: {
59
+ date: (value) => value.toISOString(),
60
+ },
61
+ });
62
+ await (0, promises_1.writeFile)(fnm, s);
63
+ };
64
+ /**
65
+ * @function
66
+ * @param {Table} table
67
+ * @param {string} dirpath
68
+ * @returns {Promise<void>}
69
+ */
70
+ const create_table_json = async (table, dirpath) => {
71
+ const rows = await table.getRows();
72
+ await (0, promises_1.writeFile)((0, path_1.join)(dirpath, table.name + ".json"), JSON.stringify(rows));
73
+ };
74
+ /**
75
+ * @function
76
+ * @param {string} root_dirpath
77
+ * @return {Promise<void>}
78
+ */
79
+ const create_table_jsons = async (root_dirpath) => {
80
+ const dirpath = (0, path_1.join)(root_dirpath, "tables");
81
+ await (0, promises_1.mkdir)(dirpath, { recursive: true });
82
+ const tables = await table_1.default.find({});
83
+ for (const t of tables) {
84
+ await create_table_json(t, dirpath);
85
+ }
86
+ };
87
+ /**
88
+ * @function
89
+ * @param {string} root_dirpath
90
+ * @returns {Promise<void>}
91
+ */
92
+ const backup_files = async (root_dirpath) => {
93
+ const dirpath = (0, path_1.join)(root_dirpath, "files");
94
+ await (0, promises_1.mkdir)(dirpath);
95
+ const files = await index_1.default.select("_sc_files");
96
+ for (const f of files) {
97
+ const base = (0, path_1.basename)(f.location);
98
+ await (0, promises_1.copyFile)(f.location, (0, path_1.join)(dirpath, base));
99
+ f.location = base;
100
+ }
101
+ await create_csv_from_rows(files, (0, path_1.join)(root_dirpath, "files.csv"));
102
+ };
103
+ /**
104
+ * @function
105
+ * @param {string} root_dirpath
106
+ * @returns {Promise<void>}
107
+ */
108
+ const backup_config = async (root_dirpath) => {
109
+ const dirpath = (0, path_1.join)(root_dirpath, "config");
110
+ await (0, promises_1.mkdir)(dirpath);
111
+ const cfgs = await index_1.default.select("_sc_config");
112
+ for (const cfg of cfgs) {
113
+ await (0, promises_1.writeFile)((0, path_1.join)(dirpath, cfg.key), JSON.stringify(index_1.default.isSQLite ? JSON.parse(cfg.value) : cfg.value));
114
+ }
115
+ };
116
+ /**
117
+ * @function
118
+ * @param {string} [fnm]
119
+ * @returns {Promise<string>}
120
+ */
121
+ const create_backup = async (fnm) => {
122
+ const tmpDir = await (0, tmp_promise_1.dir)({ unsafeCleanup: true });
123
+ await create_pack(tmpDir.path);
124
+ await create_table_jsons(tmpDir.path);
125
+ await backup_files(tmpDir.path);
126
+ await backup_config(tmpDir.path);
127
+ var day = (0, dateformat_1.default)(new Date(), "yyyy-mm-dd-HH-MM");
128
+ const ten = index_1.default.getTenantSchema();
129
+ const tens = ten === index_1.default.connectObj.default_schema
130
+ ? getState().getConfig("site_name", "Saltcorn")
131
+ : ten;
132
+ const zipFileName = fnm || `sc-backup-${tens}-${day}.zip`;
133
+ var zip = new adm_zip_1.default();
134
+ zip.addLocalFolder(tmpDir.path);
135
+ zip.writeZip(zipFileName);
136
+ await tmpDir.cleanup();
137
+ return zipFileName;
138
+ };
139
+ /**
140
+ * @function
141
+ * @param {string} fnm
142
+ * @param {string} dir
143
+ * @returns {Promise<void>}
144
+ */
145
+ const extract = async (fnm, dir) => {
146
+ return new Promise(function (resolve, reject) {
147
+ var zip = new adm_zip_1.default(fnm);
148
+ zip.extractAllToAsync(dir, true, function (err) {
149
+ if (err)
150
+ reject(new Error("Error opening zip file: " + err));
151
+ else
152
+ resolve();
153
+ });
154
+ });
155
+ };
156
+ /**
157
+ * @function
158
+ * @param {string} dirpath
159
+ * @returns {Promise<object>}
160
+ */
161
+ const restore_files = async (dirpath) => {
162
+ const fnm = (0, path_1.join)(dirpath, "files.csv");
163
+ const file_users = {};
164
+ if ((0, fs_1.existsSync)(fnm)) {
165
+ const file_rows = await (0, csvtojson_1.default)().fromFile(fnm);
166
+ for (const file of file_rows) {
167
+ const newPath = file_1.default.get_new_path(file.location);
168
+ //copy file
169
+ await (0, promises_1.copyFile)((0, path_1.join)(dirpath, "files", file.location), newPath);
170
+ //set location
171
+ file.location = newPath;
172
+ //insert in db
173
+ const { user_id, ...file_row } = file;
174
+ file_row.s3_store = !!file_row.s3_store;
175
+ const id = await index_1.default.insert("_sc_files", file_row);
176
+ file_users[id] = user_id;
177
+ }
178
+ if (index_1.default.reset_sequence)
179
+ await index_1.default.reset_sequence("_sc_files");
180
+ }
181
+ return file_users;
182
+ };
183
+ /**
184
+ * @function
185
+ * @param {object} file_users
186
+ * @returns {Promise<void>}
187
+ */
188
+ const restore_file_users = async (file_users) => {
189
+ for (const [id, user_id] of Object.entries(file_users)) {
190
+ if (user_id)
191
+ await index_1.default.update("_sc_files", { user_id }, id);
192
+ }
193
+ };
194
+ /**
195
+ * @function
196
+ * @param {string} file_users
197
+ * @param {boolean} [restore_first_user]
198
+ * @returns {Promise<string|undefined>}
199
+ */
200
+ const restore_tables = async (dirpath, restore_first_user) => {
201
+ var err;
202
+ const tables = await table_1.default.find();
203
+ for (const table of tables) {
204
+ const fnm_csv = table.name === "users"
205
+ ? (0, path_1.join)(dirpath, "users.csv")
206
+ : (0, path_1.join)(dirpath, "tables", table.name + ".csv");
207
+ const fnm_json = (0, path_1.join)(dirpath, "tables", table.name + ".json");
208
+ if ((0, fs_1.existsSync)(fnm_json)) {
209
+ const res = await table.import_json_file(fnm_json, table.name === "users" && !restore_first_user);
210
+ if (res.error)
211
+ err = (err || "") + res.error;
212
+ }
213
+ else if ((0, fs_1.existsSync)(fnm_csv)) {
214
+ const res = await table.import_csv_file(fnm_csv, false, table.name === "users" && !restore_first_user);
215
+ if ((0, common_types_1.instanceOfErrorMsg)(res))
216
+ err = (err || "") + res.error;
217
+ }
218
+ }
219
+ for (const table of tables) {
220
+ try {
221
+ await table.enable_fkey_constraints();
222
+ }
223
+ catch (e) {
224
+ err = (err || "") + e.message;
225
+ }
226
+ }
227
+ return err;
228
+ };
229
+ /**
230
+ * @function
231
+ * @param {string} dirpath
232
+ * @returns {Promise<void>}
233
+ */
234
+ const restore_config = async (dirpath) => {
235
+ const cfgs = (0, fs_1.readdirSync)((0, path_1.join)(dirpath, "config"));
236
+ const state = getState();
237
+ for (const cfg of cfgs) {
238
+ const s = await (0, promises_1.readFile)((0, path_1.join)(dirpath, "config", cfg));
239
+ await state.setConfig(cfg, JSON.parse(s.toString()).v);
240
+ }
241
+ };
242
+ /**
243
+ * @function
244
+ * @param {string} fnm
245
+ * @param {function} loadAndSaveNewPlugin
246
+ * @param {boolean} [restore_first_user]
247
+ * @returns {Promise<void>}
248
+ */
249
+ const restore = async (fnm, loadAndSaveNewPlugin, restore_first_user) => {
250
+ const tmpDir = await (0, tmp_promise_1.dir)({ unsafeCleanup: true });
251
+ //unzip
252
+ await extract(fnm, tmpDir.path);
253
+ var err;
254
+ //install pack
255
+ const pack = JSON.parse(await (await (0, promises_1.readFile)((0, path_1.join)(tmpDir.path, "pack.json"))).toString());
256
+ const can_restore = await can_install_pack(pack);
257
+ if (typeof can_restore !== "boolean" && can_restore.error) {
258
+ return `Cannot restore backup, clashing entities:
259
+ ${can_restore.error || ""}
260
+ Delete these entities or restore to a pristine instance.
261
+ `;
262
+ }
263
+ await install_pack(pack, undefined, loadAndSaveNewPlugin, true);
264
+ // files
265
+ const file_users = await restore_files(tmpDir.path);
266
+ //table csvs
267
+ const tabres = await restore_tables(tmpDir.path, restore_first_user);
268
+ if (tabres)
269
+ err = (err || "") + tabres;
270
+ //config
271
+ await restore_config(tmpDir.path);
272
+ await restore_file_users(file_users);
273
+ await tmpDir.cleanup();
274
+ return err;
275
+ };
276
+ module.exports = { create_backup, restore, create_csv_from_rows };
277
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../models/backup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @category saltcorn-admin-models
3
+ * @module pack
4
+ */
5
+ import type { Pack } from "@saltcorn/types/base_types";
6
+ import type { PagePack } from "@saltcorn/types/model-abstracts/abstract_page";
7
+ import type Plugin from "@saltcorn/data/models/plugin";
8
+ import type { ViewPack } from "@saltcorn/types/model-abstracts/abstract_view";
9
+ import type { TablePack } from "@saltcorn/types/model-abstracts/abstract_table";
10
+ declare const _default: {
11
+ table_pack: (name: string) => Promise<TablePack>;
12
+ view_pack: (name: string) => Promise<ViewPack>;
13
+ plugin_pack: (name: string) => Promise<import("@saltcorn/types/model-abstracts/abstract_plugin").PluginCfg>;
14
+ page_pack: (name: string) => Promise<PagePack>;
15
+ role_pack: (role: string) => Promise<import("@saltcorn/types/model-abstracts/abstract_role").RoleCfg>;
16
+ library_pack: (name: string) => Promise<import("@saltcorn/types/model-abstracts/abstract_library").LibraryCfg>;
17
+ trigger_pack: (name: string) => Promise<import("@saltcorn/types/model-abstracts/abstract_trigger").TriggerCfg>;
18
+ install_pack: (pack: Pack, name: string | undefined, loadAndSaveNewPlugin: (arg0: Plugin) => void, bare_tables?: boolean) => Promise<void>;
19
+ fetch_available_packs: () => Promise<{
20
+ name: string;
21
+ }[]>;
22
+ fetch_pack_by_name: (name: string) => Promise<{
23
+ name: string;
24
+ pack: any;
25
+ } | null>;
26
+ can_install_pack: (pack: Pack) => Promise<true | {
27
+ error?: string | undefined;
28
+ warning?: string | undefined;
29
+ }>;
30
+ uninstall_pack: (pack: Pack, name?: string | undefined) => Promise<void>;
31
+ add_to_menu: (item: {
32
+ label: string;
33
+ type: "View" | "Page";
34
+ viewname?: string | undefined;
35
+ pagename?: string | undefined;
36
+ min_role: number;
37
+ }) => Promise<void>;
38
+ };
39
+ export = _default;
40
+ //# sourceMappingURL=pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../models/pack.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAE9E,OAAO,KAAK,MAAM,MAAM,8BAA8B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqZhF,kBAcE"}