@social-mail/social-mail-web-server 1.7.366 → 1.7.367

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.
Files changed (34) hide show
  1. package/dist/server/model/entities/WebSiteVersion.d.ts +1 -0
  2. package/dist/server/model/entities/WebSiteVersion.d.ts.map +1 -1
  3. package/dist/server/model/entities/WebSiteVersion.js +4 -0
  4. package/dist/server/model/entities/WebSiteVersion.js.map +1 -1
  5. package/dist/server/model/events/WebSiteVersionEvents.d.ts.map +1 -1
  6. package/dist/server/model/events/WebSiteVersionEvents.js +7 -0
  7. package/dist/server/model/events/WebSiteVersionEvents.js.map +1 -1
  8. package/dist/server/seed/ui/seed-ui.js +1 -1
  9. package/dist/server/services/files/WebSiteVersionService.d.ts.map +1 -1
  10. package/dist/server/services/files/WebSiteVersionService.js +2 -1
  11. package/dist/server/services/files/WebSiteVersionService.js.map +1 -1
  12. package/dist/server/workflows/SocialWorkflowContext.d.ts.map +1 -1
  13. package/dist/server/workflows/SocialWorkflowContext.js +2 -0
  14. package/dist/server/workflows/SocialWorkflowContext.js.map +1 -1
  15. package/dist/server/workflows/clean-up/CleanupDeletedFilesWorkflow.d.ts.map +1 -1
  16. package/dist/server/workflows/clean-up/CleanupDeletedFilesWorkflow.js +1 -3
  17. package/dist/server/workflows/clean-up/CleanupDeletedFilesWorkflow.js.map +1 -1
  18. package/dist/server/workflows/files/DeleteFileWorkflow.d.ts.map +1 -1
  19. package/dist/server/workflows/files/DeleteFileWorkflow.js +1 -0
  20. package/dist/server/workflows/files/DeleteFileWorkflow.js.map +1 -1
  21. package/dist/server/workflows/web-site/DeleteWebSiteVersionWorkflow.d.ts +11 -0
  22. package/dist/server/workflows/web-site/DeleteWebSiteVersionWorkflow.d.ts.map +1 -0
  23. package/dist/server/workflows/web-site/DeleteWebSiteVersionWorkflow.js +55 -0
  24. package/dist/server/workflows/web-site/DeleteWebSiteVersionWorkflow.js.map +1 -0
  25. package/dist/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +1 -1
  27. package/src/server/model/entities/WebSiteVersion.ts +4 -0
  28. package/src/server/model/events/WebSiteVersionEvents.ts +8 -0
  29. package/src/server/seed/ui/seed-ui.ts +1 -1
  30. package/src/server/services/files/WebSiteVersionService.ts +2 -1
  31. package/src/server/workflows/SocialWorkflowContext.ts +2 -0
  32. package/src/server/workflows/clean-up/CleanupDeletedFilesWorkflow.ts +1 -3
  33. package/src/server/workflows/files/DeleteFileWorkflow.ts +1 -0
  34. package/src/server/workflows/web-site/DeleteWebSiteVersionWorkflow.ts +54 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.7.366",
3
+ "version": "1.7.367",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -45,6 +45,10 @@ export class WebSiteVersion {
45
45
  @JsonProperty({})
46
46
  public publish: boolean;
47
47
 
48
+ @JsonProperty({})
49
+ public clearHistory: boolean;
50
+
51
+
48
52
  @JsonProperty({ enum: ["major", "minor", "patch"] })
49
53
  public versionType: "major" | "minor" | "patch";
50
54
 
@@ -11,6 +11,8 @@ import { ForeignKeyFilter } from "@entity-access/entity-access/dist/model/events
11
11
  import FileDeleteService from "../../services/files/FileDeleteService.js";
12
12
  import SnapshotService from "../../services/files/SnapshotService.js";
13
13
  import WebSiteVersionService from "../../services/files/WebSiteVersionService.js";
14
+ import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
15
+ import DeleteWebSiteVersionWorkflow from "../../workflows/web-site/DeleteWebSiteVersionWorkflow.js";
14
16
 
15
17
 
16
18
 
@@ -94,6 +96,12 @@ export class WebSiteVersionEvents extends AuthenticatedEvents<WebSiteVersion> {
94
96
  isModified: false
95
97
  }));
96
98
  }
99
+
100
+ if(entity.clearHistory) {
101
+ const context = ServiceProvider.resolve(this, WorkflowContext);
102
+ const { folderID, snapshotFolderID } = entity;
103
+ await context.queue(DeleteWebSiteVersionWorkflow, { folderID, snapshotFolderID });
104
+ }
97
105
  }
98
106
 
99
107
  onForeignKeyFilter(filter: ForeignKeyFilter<WebSiteVersion, any>): IEntityQuery<any> {
@@ -5,7 +5,7 @@ export default async function seedUI(config: DBConfig) {
5
5
  await config.saveVersion(UIPackageConfig, {
6
6
  package: "@social-mail/social-mail-client",
7
7
  view: "dist/web/AppIndex",
8
- version: "1.4.214"
8
+ version: "1.4.215"
9
9
  });
10
10
 
11
11
  await config.saveVersion(WebComponentsPackageConfig, {
@@ -70,7 +70,8 @@ export default class WebSiteVersionService {
70
70
  authorID: creatorID,
71
71
  dateCreated,
72
72
  folderID,
73
- snapshotFolderID: snapshotRoot.appFileID
73
+ snapshotFolderID: snapshotRoot.appFileID,
74
+ name: await this.getNewVersion(site)
74
75
  });
75
76
 
76
77
  // delete previous versions...
@@ -50,6 +50,7 @@ import DeleteHostedDomainWorkflow from "./hosted-domain/DeleteHostedDomainWorkfl
50
50
  import DeleteMailboxContactWorkflow from "./mailbox/DeleteMailboxContactWorkflow.js";
51
51
  import DownloadExternalAttachmentWorkflow from "./external-body/DownloadExternalAttachmentWorkflow.js";
52
52
  import FetchCheckoutResultWorkflow from "./store/FetchCheckoutResultWorkflow.js";
53
+ import DeleteWebSiteVersionWorkflow from "./web-site/DeleteWebSiteVersionWorkflow.js";
53
54
 
54
55
  @RegisterSingleton
55
56
  export default class SocialWorkflowContext extends WorkflowContext {
@@ -102,6 +103,7 @@ export default class SocialWorkflowContext extends WorkflowContext {
102
103
  this.register(CopyTemplateWorkflow);
103
104
 
104
105
  this.register(DeleteWebsiteWorkflow);
106
+ this.register(DeleteWebSiteVersionWorkflow);
105
107
  this.register(DeleteFileWorkflow);
106
108
 
107
109
  this.register(DeleteMailboxWorkflow);
@@ -51,9 +51,7 @@ export default class CleanupDeletedFilesWorkflow extends Workflow {
51
51
  x.tempFiles.some((tf) => tf.rootID === p.tempFileID)
52
52
  )
53
53
  .update(void 0, (p) => (x) => ({ deleted: true }));
54
- await db.appTempFiles.statements.delete({
55
- rootID: tmpFolder.rootID
56
- });
54
+ await db.appTempFiles.asQuery().delete(tmpFolder, (p) => (x) => x.rootID === p.tempFileID);
57
55
  await db.appTempFiles.statements.delete({
58
56
  tempFileID: tmpFolder.tempFileID
59
57
  });
@@ -31,6 +31,7 @@ export default class DeleteFileWorkflow extends Workflow<{ fileID }> {
31
31
 
32
32
  @UniqueActivity
33
33
  async deleteFile(@Inject db?: SocialMailContext) {
34
+ await db.websiteVersions.asQuery().delete(this.input, (p) => (x) => x.snapshotFolderID === p.fileID);
34
35
  await db.websiteFolders.asQuery().delete(this.input, (p) => (x) => x.folderID === p.fileID);
35
36
  await db.appFiles.statements.delete({ appFileID: this.input.fileID});
36
37
  }
@@ -0,0 +1,54 @@
1
+ import Workflow, { UniqueActivity } from "@entity-access/entity-access/dist/workflows/Workflow.js";
2
+ import { WebSiteVersion } from "../../model/entities/WebSiteVersion.js";
3
+ import Inject from "@entity-access/entity-access/dist/di/di.js";
4
+ import SocialMailContext from "../../model/SocialMailContext.js";
5
+ import DeleteFileWorkflow from "../files/DeleteFileWorkflow.js";
6
+
7
+ export default class DeleteWebSiteVersionWorkflow extends Workflow<Partial<WebSiteVersion>> {
8
+
9
+ async run() {
10
+ let start = 0;
11
+ do {
12
+ const { start: startNext, children } = await this.deleteChildren(start);
13
+
14
+ if (!startNext) {
15
+ break;
16
+ }
17
+
18
+ start = startNext;
19
+ const all = children.map((fileID) => this.runChild(DeleteFileWorkflow, { fileID }));
20
+ await this.all(all);
21
+
22
+ } while(BigInt(start) > 0);
23
+ }
24
+
25
+ @UniqueActivity
26
+ async deleteChildren(
27
+ start: number,
28
+ @Inject db?: SocialMailContext
29
+ ) {
30
+
31
+ const { folderID, snapshotFolderID } = this.input;
32
+ const files = await db.websiteVersions.where({ folderID, snapshotFolderID , start }, (p) => (x) =>
33
+ x.folderID === p.folderID
34
+ && x.snapshotFolderID !== p.snapshotFolderID
35
+ && x.snapshotFolderID > p.start
36
+ )
37
+ .limit(10)
38
+ .toArray();
39
+
40
+ const children = [];
41
+
42
+ if (files.length === 0) {
43
+ return { start: 0, children };
44
+ }
45
+
46
+ for (const version of files) {
47
+ start = version.snapshotFolderID;
48
+ children.push(version.snapshotFolderID);
49
+ }
50
+
51
+ return { start, children };
52
+
53
+ }
54
+ }