@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.
- package/dist/models/backup.d.ts +12 -0
- package/dist/models/backup.d.ts.map +1 -0
- package/dist/models/backup.js +277 -0
- package/dist/models/backup.js.map +1 -0
- package/dist/models/pack.d.ts +40 -0
- package/dist/models/pack.d.ts.map +1 -0
- package/dist/models/pack.js +407 -0
- package/dist/models/pack.js.map +1 -0
- package/dist/models/tenant.d.ts +26 -0
- package/dist/models/tenant.d.ts.map +1 -0
- package/dist/models/tenant.js +161 -0
- package/dist/models/tenant.js.map +1 -0
- package/dist/tests/actions.test.d.ts +2 -0
- package/dist/tests/actions.test.d.ts.map +1 -0
- package/dist/tests/actions.test.js +230 -0
- package/dist/tests/actions.test.js.map +1 -0
- package/dist/tests/backup.test.d.ts +2 -0
- package/dist/tests/backup.test.d.ts.map +1 -0
- package/dist/tests/backup.test.js +101 -0
- package/dist/tests/backup.test.js.map +1 -0
- package/dist/tests/pack.test.d.ts +2 -0
- package/dist/tests/pack.test.d.ts.map +1 -0
- package/dist/tests/pack.test.js +339 -0
- package/dist/tests/pack.test.js.map +1 -0
- package/dist/tests/random.test.d.ts +2 -0
- package/dist/tests/random.test.d.ts.map +1 -0
- package/dist/tests/random.test.js +148 -0
- package/dist/tests/random.test.js.map +1 -0
- package/dist/tests/tenant.test.d.ts +2 -0
- package/dist/tests/tenant.test.d.ts.map +1 -0
- package/dist/tests/tenant.test.js +59 -0
- package/dist/tests/tenant.test.js.map +1 -0
- package/dist/tsconfig.ref.tsbuildinfo +1 -0
- package/package.json +69 -0
|
@@ -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"}
|