@tasenor/common-plugins 1.10.36 → 1.10.38

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @tasenor/common-plugins@1.10.35 build /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
2
+ > @tasenor/common-plugins@1.10.37 build /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
3
  > rm -fr dist && tsc
4
4
 
@@ -1,14 +1,8 @@
1
1
 
2
- > @tasenor/common-plugins@1.10.35 ci /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
2
+ > @tasenor/common-plugins@1.10.37 ci /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
3
  > pnpm run lint
4
4
 
5
5
 
6
- > @tasenor/common-plugins@1.10.35 lint /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
6
+ > @tasenor/common-plugins@1.10.37 lint /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
7
7
  > eslint 'src/**/*.{ts,tsx}' 'data/**/*.mjs'
8
8
 
9
-
10
- /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins/src/GitBackup/ui/index.tsx
11
- 7:10 warning 't' is defined but never used @typescript-eslint/no-unused-vars
12
-
13
- ✖ 1 problem (0 errors, 1 warning)
14
-
@@ -1,5 +1,5 @@
1
1
  import { KnexDatabase, ToolPlugin } from '@tasenor/common-node';
2
- import { DirectoryPath } from '@tasenor/common';
2
+ import { GitBackupCommit } from '../common/types';
3
3
  declare class GitBackup extends ToolPlugin {
4
4
  constructor();
5
5
  /**
@@ -29,14 +29,22 @@ declare class GitBackup extends ToolPlugin {
29
29
  /**
30
30
  * Get a list of commits.
31
31
  */
32
- collectCommits(db: KnexDatabase, limit: number): Promise<unknown[]>;
32
+ collectCommits(db: KnexDatabase, limit: number): Promise<GitBackupCommit[]>;
33
33
  /**
34
34
  * Execute backup making for a database.
35
35
  */
36
36
  makeBackup(db: KnexDatabase, message: string): Promise<boolean>;
37
+ /**
38
+ * Read in database from the give giot hash.
39
+ */
40
+ restoreBackup(db: KnexDatabase, commit: string): Promise<boolean>;
37
41
  /**
38
42
  * Write the data from the database to the directory.
39
43
  */
40
- dump(db: KnexDatabase, dir: DirectoryPath): Promise<void>;
44
+ private dump;
45
+ /**
46
+ * Read the data to the database from the directory.
47
+ */
48
+ private restore;
41
49
  }
42
50
  export default GitBackup;
@@ -1,8 +1,12 @@
1
- import { GitRepo, systemPiped, TasenorExporter, ToolPlugin } from '@tasenor/common-node';
1
+ import { BookkeeperImporter, GitRepo, systemPiped, TasenorExporter, ToolPlugin } from '@tasenor/common-node';
2
2
  import { error, log, note, validGitRepoName } from '@tasenor/common';
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
- const ALLOW_BAD_REPOSITORY = true;
5
+ // TODO: Master branch should be configurable.
6
+ // Branch.
7
+ const BRANCH = 'main';
8
+ // Mainly for temporary testing with file:/// repository.
9
+ const ALLOW_BAD_REPOSITORY = false;
6
10
  class GitBackup extends ToolPlugin {
7
11
  constructor() {
8
12
  super();
@@ -55,8 +59,8 @@ class GitBackup extends ToolPlugin {
55
59
  */
56
60
  async PUT(db, data) {
57
61
  if (typeof data === 'object' && data !== null && !!data.commit) {
58
- console.log('TODO: hash', data.commit);
59
- return { success: true };
62
+ const success = await this.restoreBackup(db, data.commit);
63
+ return { success };
60
64
  }
61
65
  return { success: false };
62
66
  }
@@ -99,6 +103,7 @@ class GitBackup extends ToolPlugin {
99
103
  error(`Failed to establish git repository instance '${repository}' into ${workDir}.`);
100
104
  return null;
101
105
  }
106
+ repo.branch = BRANCH;
102
107
  repo.configure({
103
108
  name: 'Tasenor',
104
109
  email: 'communications.tasenor@gmail.com',
@@ -112,7 +117,6 @@ class GitBackup extends ToolPlugin {
112
117
  * Get a list of commits.
113
118
  */
114
119
  async collectCommits(db, limit) {
115
- // TODO: Would it work if we define types in ../common instead of unknown[]?
116
120
  const setup = await this.setupRepository(db);
117
121
  if (!setup) {
118
122
  return [];
@@ -144,9 +148,31 @@ class GitBackup extends ToolPlugin {
144
148
  }
145
149
  const { subDirectory, repo, backupDir } = setup;
146
150
  log(`Making a backup into '${subDirectory}' of DB '${db.client.config.connection.database}'.`);
151
+ await repo.update();
147
152
  await this.dump(db, backupDir);
148
153
  return repo.put(message, subDirectory);
149
154
  }
155
+ /**
156
+ * Read in database from the give giot hash.
157
+ */
158
+ async restoreBackup(db, commit) {
159
+ const setup = await this.setupRepository(db);
160
+ if (!setup) {
161
+ return false;
162
+ }
163
+ const { repo, backupDir } = setup;
164
+ log(`Restoting a backup into '${backupDir}' for DB '${db.client.config.connection.database}' from hash '${commit}'.`);
165
+ await repo.update();
166
+ try {
167
+ await repo.git.checkout(commit);
168
+ }
169
+ catch (err) {
170
+ error(`Checking out the hash '${commit}' failed: ${err}`);
171
+ return false;
172
+ }
173
+ await this.restore(db, backupDir);
174
+ return true;
175
+ }
150
176
  /**
151
177
  * Write the data from the database to the directory.
152
178
  */
@@ -158,6 +184,9 @@ class GitBackup extends ToolPlugin {
158
184
  }
159
185
  const exportDir = path.join(dir, 'export');
160
186
  fs.mkdirSync(exportDir, { recursive: true });
187
+ // This dump.sql is not really needed, but it is kind of safety net for failures
188
+ // in export and import code. It helps to rebuild database manually, if all else
189
+ // fails.
161
190
  // TODO: Check for pg_dump crash. What if that happens?
162
191
  const { host, port, database, user, password } = db.client.config.connection;
163
192
  const url = `postgresql://${user}:${password}@${host}:${port}/${database}`;
@@ -165,6 +194,13 @@ class GitBackup extends ToolPlugin {
165
194
  const exporter = new TasenorExporter();
166
195
  await exporter.dump(db, exportDir);
167
196
  }
197
+ /**
198
+ * Read the data to the database from the directory.
199
+ */
200
+ async restore(db, dir) {
201
+ const importer = new BookkeeperImporter();
202
+ await importer.restoreUser(db, path.join(dir, 'export'));
203
+ }
168
204
  }
169
205
  export default GitBackup;
170
206
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/backend/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/backend/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Timestring } from '@tasenor/common';
2
+ /**
3
+ * Commit data.
4
+ */
5
+ export interface GitBackupCommit {
6
+ hash: string;
7
+ date: Timestring;
8
+ message: string;
9
+ author: string;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/GitBackup/common/types.ts"],"names":[],"mappings":""}
@@ -3,6 +3,7 @@ import { Note, IconButton, SubPanel, ToolPlugin, Dialog, Localize } from '@tasen
3
3
  import { makeObservable, observable, runInAction } from 'mobx';
4
4
  import { Trans, useTranslation } from 'react-i18next';
5
5
  import { Box, Table, TableBody, TableCell, TableContainer, TableRow, TextField, Typography } from '@mui/material';
6
+ import { useNavigate } from 'react-router-dom';
6
7
  function MakeBackupIcon(props) {
7
8
  const { disabled, onMakeBackup } = props;
8
9
  const [askMessage, setAskMessage] = useState(false);
@@ -20,6 +21,8 @@ function BackupCommitList(props) {
20
21
  const [fetched, setFetched] = useState(false);
21
22
  const [restore, setRestore] = useState(null);
22
23
  const { t } = useTranslation();
24
+ // TODO: Use from common-ui once more useful.
25
+ const navigate = useNavigate();
23
26
  useEffect(() => {
24
27
  if (!store.db) {
25
28
  return;
@@ -35,6 +38,11 @@ function BackupCommitList(props) {
35
38
  store.request(`/db/${store.db}/tools/${GitBackup.code}`, 'PUT', { commit: commit.hash }).then((res) => {
36
39
  if (res && res.success) {
37
40
  store.addMessage(t('Backup restored successfully.'));
41
+ runInAction(() => {
42
+ store.setDb(null).then(() => {
43
+ navigate(`/${store.db}`);
44
+ });
45
+ });
38
46
  }
39
47
  else {
40
48
  store.addError(t('Restoring backup failed.'));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/ui/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/ui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGjH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAO9C,SAAS,cAAc,CAAC,KAA0B;IAChD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IACxC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,8EAA8E;IAE1G,OAAO;QAEH,oBAAC,MAAM,IACL,KAAK,QACL,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,CAAC,CAAC,wBAAwB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAChD,aAAa,CAAC,KAAK,CAAC,EACtB,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEjD,oBAAC,SAAS,IAAC,SAAS,QAAC,SAAS,QAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA,CAAC,CAAC,GAAG,CAC5H;QAEX,oBAAC,UAAU,IAAC,EAAE,EAAC,aAAa,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAC,uBAAuB,EAAC,IAAI,EAAC,MAAM,GAAG,CAChI,CAAA;AACL,CAAC;AAOD,SAAS,gBAAgB,CAAC,KAA4B;IACpD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAChC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAoB,EAAE,CAAC,CAAA;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAuB,IAAI,CAAC,CAAA;IAClE,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9B,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;YACb,OAAM;SACP;QACD,KAAK,CAAC,OAAO,CAAiC,OAAO,KAAK,CAAC,EAAE,UAAU,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3I,UAAU,CAAC,IAAI,CAAC,CAAA;YAChB,IAAI,GAAG,CAAC,OAAO,EAAE;gBACf,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAC7B;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAEvB,MAAM,SAAS,GAAG,CAAC,MAAuB,EAAE,EAAE;QAC5C,KAAK,CAAC,OAAO,CAAiC,OAAO,KAAK,CAAC,EAAE,UAAU,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACpI,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE;gBACtB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAA;gBACpD,WAAW,CAAC,GAAG,EAAE;oBACf,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC1B,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC1B,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;aACH;iBAAM;gBACL,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;aAC9C;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,OAAO,oBAAC,GAAG;YACT,oBAAC,KAAK,4DAA0D,CAC5D,CAAA;KACP;IAED,OAAO,oBAAC,GAAG;QACT,oBAAC,cAAc;YACb,oBAAC,KAAK;gBACJ,oBAAC,SAAS,QACP,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,oBAAC,QAAQ,IAAC,GAAG,EAAE,GAAG;oBAC9C,oBAAC,SAAS;wBACR,oBAAC,UAAU,IAAC,EAAE,EAAC,SAAS,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CACjF;oBACZ,oBAAC,SAAS;wBACR,oBAAC,UAAU,IAAC,KAAK,EAAC,WAAW,IAAE,MAAM,CAAC,IAAI,CAAc;wBACxD,oBAAC,UAAU,IAAC,OAAO,EAAC,OAAO,IAAE,MAAM,CAAC,OAAO,CAAc;wBACzD,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS,IAAE,MAAM,CAAC,MAAM,CAAc,CAChD;oBACZ,oBAAC,SAAS;wBACR,oBAAC,QAAQ,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,SAAE,CAC7B,CACH,CAAC,CACF,CACN,CACO;QAEjB,oBAAC,MAAM,IAAC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE,KAAK,QAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IACtI,OAAO,IAAI,oBAAC,GAAG;YACf,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS;gBAAC,oBAAC,QAAQ,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,SAAE;;gBAAE,OAAO,CAAC,IAAI,CAAc;YAClG,oBAAC,UAAU,IAAC,OAAO,EAAC,OAAO,IAAE,OAAO,CAAC,OAAO,CAAc;YAC1D,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS,IAAE,OAAO,CAAC,MAAM,CAAc,CACvD,CACC,CACL,CAAA;AACR,CAAC;AAED,MAAM,SAAU,SAAQ,UAAU;IAEhC,IAAI,GAAG,KAAK,CAAA;IACZ,OAAO,GAAG,EAAE,CAAA;IACZ,OAAO,GAAG,CAAC,CAAA;IAEX,MAAM,CAAC,IAAI,GAAG,WAAW,CAAA;IACzB,MAAM,CAAC,KAAK,GAAG,gBAAgB,CAAA;IAC/B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,IAAI,GAAG,oTAAoT,CAAA;IAClU,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,WAAW,GAAG,qDAAqD,CAAA;IAE1E;QACE,KAAK,EAAE,CAAA;QAEP,cAAc,CAAC,IAAI,EAAE;YACnB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;SACpB,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,GAAG;YACf,sEAAsE;YACtE,EAAE,EAAE;gBACF,kBAAkB,EAAE,gBAAgB;gBACpC,oBAAoB,EAAE,oCAAoC;gBAC1D,qBAAqB,EAAE,iBAAiB;gBACxC,cAAc,EAAE,qBAAqB;gBACrC,4BAA4B,EAAE,eAAe;aAC9C;YACD,EAAE,EAAE;gBACF,kBAAkB,EAAE,gBAAgB;gBACpC,oBAAoB,EAAE,mCAAmC;gBACzD,qBAAqB,EAAE,sBAAsB;gBAC7C,cAAc,EAAE,+BAA+B;gBAC/C,4BAA4B,EAAE,kBAAkB;gBAEhD,gBAAgB,EAAE,gCAAgC;gBAClD,sCAAsC,EAAE,+CAA+C;gBACvF,8BAA8B,EAAE,kCAAkC;gBAClE,yBAAyB,EAAE,uCAAuC;gBAClE,mDAAmD,EAAE,wCAAwC;gBAC7F,uDAAuD,EAAE,iDAAiD;gBAC1G,2DAA2D,EAAE,kFAAkF;gBAC/I,mFAAmF,EAAE,4HAA4H;gBACjN,+BAA+B,EAAE,kCAAkC;gBACnE,0BAA0B,EAAE,0CAA0C;aACvE;SACF,CAAA;IACH,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,SAAS;QACP,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAyB,CAAA;QAC9K,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;YACjB,WAAW,CAAC,GAAG,EAAE;gBACf,mBAAmB;gBACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;YACF,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAA;aAC/D;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;aACxD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC1C,OAAO,oBAAC,cAAc,IAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAI,CAAA;IACxG,CAAC;IAED,aAAa;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;gBACL,oBAAC,IAAI;oBAAC,oBAAC,KAAK,6EAA2E,CAAO,CAC7F,CAAA;SACJ;QAED,OAAO;YACL,oBAAC,QAAQ;gBACP,oBAAC,KAAK,gEAA8D;gBAAA,8CAAM;gBAC1E,oBAAC,KAAK,oEAAkE;gBAAA,8CAAM;gBAC9E,oBAAC,KAAK,4FAA0F;gBAAA,8CAAM,CAC7F;YACX,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;gBACf,oBAAC,gBAAgB,IAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CACzD,CACL,CAAA;IACL,CAAC;IAED,WAAW;QACT,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,EAAE;iBACZ;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,EAAE;iBACZ;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,eAAe;oBACrB,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,EAAE;iBACZ;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE;wBACP,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE;qBACvD;iBACF;aACF;SACF,CAAA;IACH,CAAC;;AAGH,eAAe,SAAS,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tasenor/common-plugins",
3
- "version": "1.10.36",
3
+ "version": "1.10.38",
4
4
  "description": "Shared common plugins of Tasenor project",
5
5
  "repository": "git@github.com:dataplugoy/tasenor-bookkeeper.git",
6
6
  "author": "Tommi Ronkainen <tommi.ronkainen@gmail.com>",
@@ -13,9 +13,9 @@
13
13
  "dayjs": "1.10.8",
14
14
  "sprintf-js": "^1.1.2",
15
15
  "tsx": "^4.7.0",
16
- "@tasenor/common": "1.10.36",
17
- "@tasenor/common-ui": "1.10.36",
18
- "@tasenor/common-node": "1.10.36"
16
+ "@tasenor/common": "1.10.38",
17
+ "@tasenor/common-node": "1.10.38",
18
+ "@tasenor/common-ui": "1.10.38"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@mui/icons-material": "^5.14.1",
@@ -31,8 +31,8 @@
31
31
  "react-i18next": "^13.0.2",
32
32
  "react-router-dom": "^6.14.1",
33
33
  "typescript": "^5.1.6",
34
- "@tasenor/config": "1.10.36",
35
- "eslint-config-tasenor": "0.0.0"
34
+ "eslint-config-tasenor": "0.0.0",
35
+ "@tasenor/config": "1.10.38"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@mui/icons-material": "^5.14.1",
@@ -1,9 +1,15 @@
1
- import { GitRepo, KnexDatabase, systemPiped, TasenorExporter, ToolPlugin } from '@tasenor/common-node'
2
- import { DirectoryPath, Email, error, FilePath, log, note, PluginCode, Url, validGitRepoName, Version } from '@tasenor/common'
1
+ import { BookkeeperImporter, GitRepo, KnexDatabase, systemPiped, TasenorExporter, ToolPlugin } from '@tasenor/common-node'
2
+ import { DirectoryPath, Email, error, FilePath, log, note, PluginCode, Timestring, Url, validGitRepoName, Version } from '@tasenor/common'
3
3
  import fs from 'fs'
4
4
  import path from 'path'
5
+ import { GitBackupCommit } from '../common/types'
5
6
 
6
- const ALLOW_BAD_REPOSITORY = true
7
+ // TODO: Master branch should be configurable.
8
+ // Branch.
9
+ const BRANCH = 'main'
10
+
11
+ // Mainly for temporary testing with file:/// repository.
12
+ const ALLOW_BAD_REPOSITORY = false
7
13
 
8
14
  class GitBackup extends ToolPlugin {
9
15
  constructor() {
@@ -66,8 +72,8 @@ class GitBackup extends ToolPlugin {
66
72
  */
67
73
  async PUT(db: KnexDatabase, data): Promise<unknown> {
68
74
  if (typeof data === 'object' && data !== null && !!data.commit) {
69
- console.log('TODO: hash', data.commit)
70
- return { success: true }
75
+ const success = await this.restoreBackup(db, data.commit)
76
+ return { success }
71
77
  }
72
78
  return { success: false }
73
79
  }
@@ -127,6 +133,7 @@ class GitBackup extends ToolPlugin {
127
133
  error(`Failed to establish git repository instance '${repository}' into ${workDir}.`)
128
134
  return null
129
135
  }
136
+ repo.branch = BRANCH
130
137
  repo.configure({
131
138
  name: 'Tasenor',
132
139
  email: 'communications.tasenor@gmail.com' as Email,
@@ -141,8 +148,7 @@ class GitBackup extends ToolPlugin {
141
148
  /**
142
149
  * Get a list of commits.
143
150
  */
144
- async collectCommits(db: KnexDatabase, limit: number): Promise<unknown[]> {
145
- // TODO: Would it work if we define types in ../common instead of unknown[]?
151
+ async collectCommits(db: KnexDatabase, limit: number): Promise<GitBackupCommit[]> {
146
152
  const setup = await this.setupRepository(db)
147
153
  if (!setup) {
148
154
  return []
@@ -155,7 +161,7 @@ class GitBackup extends ToolPlugin {
155
161
  const gitLog = await repo.git.log({ maxCount: limit })
156
162
  return gitLog.all.map(e => ({
157
163
  hash: e.hash,
158
- date: e.date,
164
+ date: e.date as Timestring,
159
165
  message: e.message,
160
166
  author: `${e.author_name} ${e.author_email ? '<' + e.author_email + '>' : ''}`.trim()
161
167
  }))
@@ -177,14 +183,39 @@ class GitBackup extends ToolPlugin {
177
183
  const { subDirectory, repo, backupDir } = setup
178
184
 
179
185
  log(`Making a backup into '${subDirectory}' of DB '${db.client.config.connection.database}'.`)
186
+ await repo.update()
180
187
  await this.dump(db, backupDir)
181
188
  return repo.put(message, subDirectory)
182
189
  }
183
190
 
191
+ /**
192
+ * Read in database from the give giot hash.
193
+ */
194
+ async restoreBackup(db: KnexDatabase, commit: string): Promise<boolean> {
195
+
196
+ const setup = await this.setupRepository(db)
197
+ if (!setup) {
198
+ return false
199
+ }
200
+ const { repo, backupDir } = setup
201
+
202
+ log(`Restoting a backup into '${backupDir}' for DB '${db.client.config.connection.database}' from hash '${commit}'.`)
203
+ await repo.update()
204
+ try {
205
+ await repo.git.checkout(commit)
206
+ } catch (err) {
207
+ error(`Checking out the hash '${commit}' failed: ${err}`)
208
+ return false
209
+ }
210
+ await this.restore(db, backupDir)
211
+
212
+ return true
213
+ }
214
+
184
215
  /**
185
216
  * Write the data from the database to the directory.
186
217
  */
187
- async dump(db: KnexDatabase, dir: DirectoryPath) {
218
+ private async dump(db: KnexDatabase, dir: DirectoryPath) {
188
219
 
189
220
  note(`Creating backup into '${dir}'.`)
190
221
 
@@ -194,6 +225,10 @@ class GitBackup extends ToolPlugin {
194
225
  }
195
226
  const exportDir = path.join(dir, 'export') as DirectoryPath
196
227
  fs.mkdirSync(exportDir, { recursive: true })
228
+
229
+ // This dump.sql is not really needed, but it is kind of safety net for failures
230
+ // in export and import code. It helps to rebuild database manually, if all else
231
+ // fails.
197
232
  // TODO: Check for pg_dump crash. What if that happens?
198
233
  const { host, port, database, user, password } = db.client.config.connection
199
234
  const url = `postgresql://${user}:${password}@${host}:${port}/${database}`
@@ -202,6 +237,14 @@ class GitBackup extends ToolPlugin {
202
237
  const exporter = new TasenorExporter()
203
238
  await exporter.dump(db, exportDir)
204
239
  }
240
+
241
+ /**
242
+ * Read the data to the database from the directory.
243
+ */
244
+ private async restore(db: KnexDatabase, dir: DirectoryPath): Promise<void> {
245
+ const importer = new BookkeeperImporter()
246
+ await importer.restoreUser(db, path.join(dir, 'export') as DirectoryPath)
247
+ }
205
248
  }
206
249
 
207
250
  export default GitBackup
@@ -0,0 +1,11 @@
1
+ import { Timestring } from '@tasenor/common'
2
+
3
+ /**
4
+ * Commit data.
5
+ */
6
+ export interface GitBackupCommit {
7
+ hash: string
8
+ date: Timestring
9
+ message: string
10
+ author: string
11
+ }
@@ -3,8 +3,9 @@ import { Note, IconButton, SubPanel, ToolPlugin, Dialog, Localize } from '@tasen
3
3
  import { makeObservable, observable, runInAction } from 'mobx'
4
4
  import { Trans, useTranslation } from 'react-i18next'
5
5
  import { Box, Table, TableBody, TableCell, TableContainer, TableRow, TextField, Typography } from '@mui/material'
6
- import { Store, Timestring } from '@tasenor/common'
7
- import { t } from 'i18next'
6
+ import { Store } from '@tasenor/common'
7
+ import { GitBackupCommit } from '../common/types'
8
+ import { useNavigate } from 'react-router-dom'
8
9
 
9
10
  interface MakeBackupIconProps {
10
11
  disabled: boolean
@@ -34,13 +35,6 @@ function MakeBackupIcon(props: MakeBackupIconProps): React.ReactNode {
34
35
  </>
35
36
  }
36
37
 
37
- interface GitBackupCommit {
38
- hash: string
39
- date: Timestring
40
- message: string
41
- author: string
42
- }
43
-
44
38
  interface BackupCommitListProps {
45
39
  store: Store
46
40
  backups: number
@@ -52,6 +46,8 @@ function BackupCommitList(props: BackupCommitListProps): React.ReactNode {
52
46
  const [fetched, setFetched] = useState(false)
53
47
  const [restore, setRestore] = useState<GitBackupCommit|null>(null)
54
48
  const { t } = useTranslation()
49
+ // TODO: Use from common-ui once more useful.
50
+ const navigate = useNavigate()
55
51
 
56
52
  useEffect(() => {
57
53
  if (!store.db) {
@@ -69,6 +65,11 @@ function BackupCommitList(props: BackupCommitListProps): React.ReactNode {
69
65
  store.request<{ commits: GitBackupCommit[] }>(`/db/${store.db}/tools/${GitBackup.code}`, 'PUT', { commit: commit.hash }).then((res) => {
70
66
  if (res && res.success) {
71
67
  store.addMessage(t('Backup restored successfully.'))
68
+ runInAction(() => {
69
+ store.setDb(null).then(() => {
70
+ navigate(`/${store.db}`)
71
+ })
72
+ })
72
73
  } else {
73
74
  store.addError(t('Restoring backup failed.'))
74
75
  }