@hahnpro/hpc-api 3.0.0 → 3.1.0

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.
@@ -38,6 +38,7 @@ export interface Asset {
38
38
  actions?: string[];
39
39
  author?: string;
40
40
  revision?: number;
41
+ deletedAt?: string;
41
42
  }
42
43
  export declare type AssetRevision = Asset & {
43
44
  originalId: string;
@@ -5,6 +5,14 @@ import { DataService } from './data.service';
5
5
  import { HttpClient } from './http.service';
6
6
  export declare class AssetService extends DataService<Asset> {
7
7
  constructor(httpClient: HttpClient);
8
+ paperBinRestoreAll(): Promise<Asset[]>;
9
+ paperBinRestoreOne(id: string): Promise<Asset>;
10
+ emptyTrash(offset: number): Promise<{
11
+ acknowledged: boolean;
12
+ deletedCount: number;
13
+ }>;
14
+ getPaperBin(params?: RequestParameter): Promise<Paginated<Asset[]>>;
15
+ deleteOne(id: string, force?: boolean): Promise<any>;
8
16
  addAttachment: (id: string, form: FormData) => Promise<Asset>;
9
17
  getChildren(assetId: string, params?: RequestParameter): Promise<Paginated<Asset[]>>;
10
18
  getRevisions(assetId: string): Promise<Paginated<AssetRevision[]>>;
@@ -14,6 +14,23 @@ class AssetService extends data_service_1.DataService {
14
14
  });
15
15
  };
16
16
  }
17
+ paperBinRestoreAll() {
18
+ return this.httpClient.put(`${this.basePath}/paperbin/restore`, {});
19
+ }
20
+ paperBinRestoreOne(id) {
21
+ return this.httpClient.put(`${this.basePath}/paperbin/restore/${id}`, {});
22
+ }
23
+ emptyTrash(offset) {
24
+ return this.httpClient.delete(`${this.basePath}/paperbin/clean`, { params: { offset } });
25
+ }
26
+ getPaperBin(params = {}) {
27
+ params.limit = params.limit || 0;
28
+ params.page = params.page || 1;
29
+ return this.httpClient.get(`${this.basePath}/paperbin`, { params });
30
+ }
31
+ deleteOne(id, force = false) {
32
+ return this.httpClient.delete(`${this.basePath}/${id}`, { params: { force } });
33
+ }
17
34
  getChildren(assetId, params = {}) {
18
35
  return this.getManyFiltered({ parent: assetId }, params);
19
36
  }
@@ -8,8 +8,17 @@ export declare class AssetMockService extends DataMockService<Asset> implements
8
8
  private api;
9
9
  private revisions;
10
10
  constructor(api: MockAPI, assets: Asset[], revisions: AssetRevision[]);
11
+ paperBinRestoreAll(): Promise<Asset[]>;
12
+ paperBinRestoreOne(id: string): Promise<Asset>;
13
+ emptyTrash(offset: number): Promise<{
14
+ acknowledged: boolean;
15
+ deletedCount: number;
16
+ }>;
17
+ getPaperBin(params?: RequestParameter): Promise<Paginated<Asset[]>>;
18
+ private getAssets;
11
19
  addOne(dto: Asset): Promise<Asset>;
12
- deleteOne(assetId: string): Promise<any>;
20
+ deleteOne(assetId: string, force?: boolean): Promise<Asset>;
21
+ getMany(params?: RequestParameter): Promise<Paginated<Asset[]>>;
13
22
  updateOne(assetId: string, dto: Asset): Promise<Asset>;
14
23
  addAttachment(id: string, form: FormData): Promise<Asset>;
15
24
  getChildren(assetId: string, params?: RequestParameter): Promise<Paginated<Asset[]>>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AssetMockService = void 0;
4
4
  const data_mock_service_1 = require("./data.mock.service");
5
- const crypto_1 = require("crypto");
6
5
  class AssetMockService extends data_mock_service_1.DataMockService {
7
6
  constructor(api, assets, revisions) {
8
7
  super();
@@ -10,12 +9,48 @@ class AssetMockService extends data_mock_service_1.DataMockService {
10
9
  this.revisions = revisions;
11
10
  this.data = assets;
12
11
  }
12
+ paperBinRestoreAll() {
13
+ const deleted = this.data.filter((v) => v.deletedAt);
14
+ for (const asset of deleted) {
15
+ delete asset.deletedAt;
16
+ }
17
+ return Promise.resolve(deleted);
18
+ }
19
+ paperBinRestoreOne(id) {
20
+ const deleted = this.data.find((v) => v.id === id);
21
+ delete deleted.deletedAt;
22
+ return Promise.resolve(deleted);
23
+ }
24
+ emptyTrash(offset) {
25
+ const dateOffsSeconds = Math.round(new Date().getTime() / 1000) - offset;
26
+ const date = new Date(dateOffsSeconds * 1000);
27
+ const trash = this.data.filter((v) => new Date(v.deletedAt) < date);
28
+ trash.map((v) => this.deleteOne(v.id));
29
+ return Promise.resolve({ acknowledged: true, deletedCount: trash.length });
30
+ }
31
+ getPaperBin(params) {
32
+ const page = this.getAssets(params, true);
33
+ return Promise.resolve(page);
34
+ }
35
+ getAssets(params, deleted = false) {
36
+ const data = this.data.filter((asset) => !!asset.deletedAt === deleted);
37
+ const page = {
38
+ docs: data,
39
+ limit: params && params.limit ? params.limit : Number.MAX_SAFE_INTEGER,
40
+ total: data.length,
41
+ };
42
+ return page;
43
+ }
13
44
  addOne(dto) {
14
- const id = (0, crypto_1.randomUUID)();
15
45
  this.revisions.push(Object.assign(Object.assign({}, dto), { originalId: dto.id }));
16
46
  return super.addOne(dto);
17
47
  }
18
- deleteOne(assetId) {
48
+ deleteOne(assetId, force = false) {
49
+ const asset = this.data.find((v) => v.id === assetId);
50
+ if (!(asset === null || asset === void 0 ? void 0 : asset.deletedAt) && !force) {
51
+ asset.deletedAt = new Date().toISOString();
52
+ return Promise.resolve(asset);
53
+ }
19
54
  this.revisions
20
55
  .filter((revision) => revision.originalId === assetId)
21
56
  .forEach((revision) => {
@@ -24,6 +59,10 @@ class AssetMockService extends data_mock_service_1.DataMockService {
24
59
  });
25
60
  return super.deleteOne(assetId);
26
61
  }
62
+ getMany(params) {
63
+ const page = this.getAssets(params, false);
64
+ return Promise.resolve(page);
65
+ }
27
66
  async updateOne(assetId, dto) {
28
67
  await super.deleteOne(assetId);
29
68
  const asset = await this.addOne(dto);
@@ -17,8 +17,9 @@ class DataMockService extends data_service_1.DataService {
17
17
  }
18
18
  deleteOne(id) {
19
19
  const index = this.data.findIndex((v) => v.id === id);
20
+ const obj = this.data[index];
20
21
  this.data.splice(index, 1);
21
- return Promise.resolve(undefined);
22
+ return Promise.resolve(obj);
22
23
  }
23
24
  getMany(params) {
24
25
  const data = this.data;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hahnpro/hpc-api",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "Module for easy access to the HahnPRO API",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/eventsource": "^1.1.8",
35
- "axios-mock-adapter": "^1.20.0"
35
+ "axios-mock-adapter": "^1.21.1"
36
36
  },
37
37
  "engines": {
38
38
  "node": ">=v14.13"