@internxt/cli 1.6.1 → 1.6.3
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/README.md +410 -71
- package/dist/commands/add-cert.d.ts +1 -1
- package/dist/commands/add-cert.js +3 -3
- package/dist/commands/config.d.ts +7 -1
- package/dist/commands/config.js +36 -5
- package/dist/commands/create-folder.d.ts +2 -1
- package/dist/commands/create-folder.js +10 -7
- package/dist/commands/delete-permanently-file.d.ts +1 -0
- package/dist/commands/delete-permanently-folder.d.ts +1 -0
- package/dist/commands/download-file.d.ts +1 -0
- package/dist/commands/download-file.js +4 -2
- package/dist/commands/list.d.ts +1 -0
- package/dist/commands/list.js +2 -4
- package/dist/commands/login-legacy.d.ts +1 -0
- package/dist/commands/logs.js +3 -3
- package/dist/commands/move-file.d.ts +1 -1
- package/dist/commands/move-file.js +7 -21
- package/dist/commands/move-folder.d.ts +1 -1
- package/dist/commands/move-folder.js +7 -21
- package/dist/commands/rename-file.d.ts +1 -0
- package/dist/commands/rename-folder.d.ts +1 -0
- package/dist/commands/trash-clear.d.ts +1 -0
- package/dist/commands/trash-file.d.ts +1 -0
- package/dist/commands/trash-folder.d.ts +1 -0
- package/dist/commands/trash-restore-file.d.ts +1 -1
- package/dist/commands/trash-restore-file.js +7 -21
- package/dist/commands/trash-restore-folder.d.ts +1 -1
- package/dist/commands/trash-restore-folder.js +7 -21
- package/dist/commands/upload-file.d.ts +5 -6
- package/dist/commands/upload-file.js +77 -52
- package/dist/commands/upload-folder.d.ts +1 -0
- package/dist/commands/upload-folder.js +11 -6
- package/dist/commands/webdav-config.d.ts +19 -1
- package/dist/commands/webdav-config.js +81 -3
- package/dist/commands/webdav.d.ts +1 -1
- package/dist/commands/webdav.js +10 -5
- package/dist/commands/whoami.js +2 -1
- package/dist/commands/workspaces-list.d.ts +20 -0
- package/dist/commands/workspaces-list.js +67 -0
- package/dist/commands/workspaces-unset.d.ts +23 -0
- package/dist/commands/workspaces-unset.js +45 -0
- package/dist/commands/workspaces-use.d.ts +27 -0
- package/dist/commands/workspaces-use.js +113 -0
- package/dist/constants/configs.d.ts +13 -0
- package/dist/constants/configs.js +21 -0
- package/dist/hooks/prerun/auth_check.js +13 -4
- package/dist/services/auth.service.d.ts +5 -2
- package/dist/services/auth.service.js +68 -6
- package/dist/services/config.service.d.ts +1 -13
- package/dist/services/config.service.js +44 -41
- package/dist/services/crypto.service.d.ts +5 -0
- package/dist/services/crypto.service.js +43 -0
- package/dist/services/database/database.service.d.ts +9 -0
- package/dist/services/database/database.service.js +39 -0
- package/dist/services/database/drive-file/drive-file.attributes.d.ts +3 -6
- package/dist/services/database/drive-file/drive-file.domain.d.ts +3 -6
- package/dist/services/database/drive-file/drive-file.domain.js +1 -12
- package/dist/services/database/drive-file/drive-file.model.d.ts +15 -0
- package/dist/services/database/drive-file/drive-file.model.js +67 -0
- package/dist/services/database/drive-file/drive-file.repository.d.ts +11 -0
- package/dist/services/database/drive-file/drive-file.repository.js +63 -0
- package/dist/services/database/drive-folder/drive-folder.attributes.d.ts +3 -4
- package/dist/services/database/drive-folder/drive-folder.domain.d.ts +4 -5
- package/dist/services/database/drive-folder/drive-folder.domain.js +11 -15
- package/dist/services/database/drive-folder/drive-folder.model.d.ts +11 -0
- package/dist/services/database/drive-folder/drive-folder.model.js +51 -0
- package/dist/services/database/drive-folder/drive-folder.repository.d.ts +13 -0
- package/dist/services/database/drive-folder/drive-folder.repository.js +99 -0
- package/dist/services/drive/drive-file.service.d.ts +2 -0
- package/dist/services/drive/drive-file.service.js +71 -15
- package/dist/services/drive/drive-folder.service.d.ts +6 -1
- package/dist/services/drive/drive-folder.service.js +157 -31
- package/dist/services/drive/trash.service.d.ts +3 -0
- package/dist/services/drive/trash.service.js +52 -16
- package/dist/services/drive/workspace.service.d.ts +7 -0
- package/dist/services/drive/workspace.service.js +30 -0
- package/dist/services/keys.service.d.ts +7 -0
- package/dist/services/keys.service.js +55 -0
- package/dist/services/local-filesystem/local-filesystem.service.d.ts +2 -2
- package/dist/services/local-filesystem/local-filesystem.service.js +4 -4
- package/dist/services/network/download.service.d.ts +2 -2
- package/dist/services/network/download.service.js +2 -2
- package/dist/services/network/network-facade.service.d.ts +3 -7
- package/dist/services/network/network-facade.service.js +9 -11
- package/dist/services/network/upload/upload-facade.service.d.ts +1 -1
- package/dist/services/network/upload/upload-facade.service.js +15 -8
- package/dist/services/network/upload/upload-file.service.d.ts +5 -4
- package/dist/services/network/upload/upload-file.service.js +73 -41
- package/dist/services/network/upload/upload-folder.service.d.ts +2 -2
- package/dist/services/network/upload/upload-folder.service.js +15 -10
- package/dist/services/network/upload/upload.types.d.ts +13 -2
- package/dist/services/network/upload/upload.types.js +1 -1
- package/dist/services/sdk-manager.service.d.ts +11 -9
- package/dist/services/sdk-manager.service.js +29 -15
- package/dist/services/thumbnail.service.d.ts +19 -1
- package/dist/services/thumbnail.service.js +29 -2
- package/dist/services/universal-link.service.d.ts +3 -1
- package/dist/services/universal-link.service.js +15 -3
- package/dist/services/usage.service.d.ts +1 -2
- package/dist/services/usage.service.js +1 -1
- package/dist/services/validation.service.d.ts +5 -0
- package/dist/services/validation.service.js +36 -22
- package/dist/{webdav/services → services/webdav}/webdav-folder.service.d.ts +1 -7
- package/dist/{webdav/services → services/webdav}/webdav-folder.service.js +6 -10
- package/dist/types/command.types.d.ts +44 -1
- package/dist/types/command.types.js +29 -1
- package/dist/types/config.types.d.ts +1 -0
- package/dist/types/drive.types.d.ts +7 -6
- package/dist/types/network.types.d.ts +6 -0
- package/dist/utils/async.utils.d.ts +2 -1
- package/dist/utils/async.utils.js +13 -2
- package/dist/utils/cli.utils.d.ts +23 -15
- package/dist/utils/cli.utils.js +85 -21
- package/dist/utils/crypto.utils.d.ts +3 -1
- package/dist/utils/crypto.utils.js +15 -2
- package/dist/utils/database.utils.d.ts +11 -0
- package/dist/utils/database.utils.js +26 -0
- package/dist/utils/drive.utils.js +7 -10
- package/dist/utils/errors.utils.d.ts +4 -3
- package/dist/utils/errors.utils.js +16 -13
- package/dist/utils/format.utils.d.ts +1 -0
- package/dist/utils/format.utils.js +3 -0
- package/dist/utils/inquirer.utils.js +10 -1
- package/dist/utils/logger.utils.js +5 -5
- package/dist/utils/network.utils.js +17 -18
- package/dist/utils/path.utils.d.ts +7 -0
- package/dist/utils/path.utils.js +18 -0
- package/dist/utils/thumbnail.utils.d.ts +6 -20
- package/dist/utils/thumbnail.utils.js +20 -45
- package/dist/utils/webdav.utils.d.ts +4 -20
- package/dist/utils/webdav.utils.js +12 -14
- package/dist/utils/xml.utils.d.ts +1 -1
- package/dist/utils/xml.utils.js +1 -1
- package/dist/webdav/handlers/DELETE.handler.d.ts +0 -9
- package/dist/webdav/handlers/DELETE.handler.js +18 -16
- package/dist/webdav/handlers/GET.handler.d.ts +0 -13
- package/dist/webdav/handlers/GET.handler.js +6 -13
- package/dist/webdav/handlers/HEAD.handler.d.ts +0 -5
- package/dist/webdav/handlers/HEAD.handler.js +11 -23
- package/dist/webdav/handlers/MKCOL.handler.d.ts +0 -7
- package/dist/webdav/handlers/MKCOL.handler.js +5 -12
- package/dist/webdav/handlers/MOVE.handler.d.ts +0 -9
- package/dist/webdav/handlers/MOVE.handler.js +10 -16
- package/dist/webdav/handlers/PROPFIND.handler.d.ts +0 -7
- package/dist/webdav/handlers/PROPFIND.handler.js +7 -19
- package/dist/webdav/handlers/PUT.handler.d.ts +0 -15
- package/dist/webdav/handlers/PUT.handler.js +70 -57
- package/dist/webdav/index.js +6 -8
- package/dist/webdav/middewares/auth.middleware.d.ts +1 -2
- package/dist/webdav/middewares/auth.middleware.js +5 -4
- package/dist/webdav/middewares/errors.middleware.js +3 -3
- package/dist/webdav/middewares/webdav-auth.middleware.d.ts +3 -0
- package/dist/webdav/middewares/webdav-auth.middleware.js +44 -0
- package/dist/webdav/webdav-server.d.ts +3 -16
- package/dist/webdav/webdav-server.js +33 -91
- package/oclif.manifest.json +429 -6
- package/package.json +27 -22
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import { DriveFileItem } from '../../../types/drive.types';
|
|
2
2
|
import { DriveFileAttributes } from './drive-file.attributes';
|
|
3
3
|
export declare class DriveFile implements DriveFileAttributes {
|
|
4
|
-
id: number;
|
|
5
4
|
name: string;
|
|
6
|
-
type
|
|
5
|
+
type: string | null;
|
|
7
6
|
uuid: string;
|
|
8
|
-
fileId: string;
|
|
9
|
-
folderId: number;
|
|
7
|
+
fileId: string | null;
|
|
10
8
|
folderUuid: string;
|
|
11
9
|
bucket: string;
|
|
12
|
-
relativePath: string;
|
|
13
10
|
createdAt: Date;
|
|
14
11
|
updatedAt: Date;
|
|
15
12
|
size: number;
|
|
16
13
|
status: 'EXISTS' | 'TRASHED' | 'DELETED';
|
|
17
14
|
creationTime: Date;
|
|
18
15
|
modificationTime: Date;
|
|
19
|
-
constructor({
|
|
16
|
+
constructor({ name, type, uuid, fileId, folderUuid, bucket, createdAt, updatedAt, size, status, creationTime, modificationTime, }: DriveFileAttributes);
|
|
20
17
|
static build(file: DriveFileAttributes): DriveFile;
|
|
21
18
|
toJSON(): DriveFileAttributes;
|
|
22
19
|
toItem(): DriveFileItem;
|
|
@@ -2,31 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DriveFile = void 0;
|
|
4
4
|
class DriveFile {
|
|
5
|
-
id;
|
|
6
5
|
name;
|
|
7
6
|
type;
|
|
8
7
|
uuid;
|
|
9
8
|
fileId;
|
|
10
|
-
folderId;
|
|
11
9
|
folderUuid;
|
|
12
10
|
bucket;
|
|
13
|
-
relativePath;
|
|
14
11
|
createdAt;
|
|
15
12
|
updatedAt;
|
|
16
13
|
size;
|
|
17
14
|
status;
|
|
18
15
|
creationTime;
|
|
19
16
|
modificationTime;
|
|
20
|
-
constructor({
|
|
21
|
-
this.id = id;
|
|
17
|
+
constructor({ name, type, uuid, fileId, folderUuid, bucket, createdAt, updatedAt, size, status, creationTime, modificationTime, }) {
|
|
22
18
|
this.name = name;
|
|
23
19
|
this.type = type;
|
|
24
20
|
this.uuid = uuid;
|
|
25
21
|
this.fileId = fileId;
|
|
26
|
-
this.folderId = folderId;
|
|
27
22
|
this.folderUuid = folderUuid;
|
|
28
23
|
this.bucket = bucket;
|
|
29
|
-
this.relativePath = relativePath;
|
|
30
24
|
this.createdAt = createdAt;
|
|
31
25
|
this.updatedAt = updatedAt;
|
|
32
26
|
this.size = size;
|
|
@@ -39,15 +33,12 @@ class DriveFile {
|
|
|
39
33
|
}
|
|
40
34
|
toJSON() {
|
|
41
35
|
return {
|
|
42
|
-
id: this.id,
|
|
43
36
|
name: this.name,
|
|
44
37
|
type: this.type,
|
|
45
38
|
uuid: this.uuid,
|
|
46
39
|
fileId: this.fileId,
|
|
47
|
-
folderId: this.folderId,
|
|
48
40
|
folderUuid: this.folderUuid,
|
|
49
41
|
bucket: this.bucket,
|
|
50
|
-
relativePath: this.relativePath,
|
|
51
42
|
createdAt: this.createdAt,
|
|
52
43
|
updatedAt: this.updatedAt,
|
|
53
44
|
size: this.size,
|
|
@@ -59,12 +50,10 @@ class DriveFile {
|
|
|
59
50
|
toItem() {
|
|
60
51
|
return {
|
|
61
52
|
itemType: 'file',
|
|
62
|
-
id: this.id,
|
|
63
53
|
name: this.name,
|
|
64
54
|
type: this.type,
|
|
65
55
|
uuid: this.uuid,
|
|
66
56
|
fileId: this.fileId,
|
|
67
|
-
folderId: this.folderId,
|
|
68
57
|
folderUuid: this.folderUuid,
|
|
69
58
|
bucket: this.bucket,
|
|
70
59
|
createdAt: this.createdAt,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DriveFileAttributes } from './drive-file.attributes';
|
|
2
|
+
export declare class DriveFileModel implements DriveFileAttributes {
|
|
3
|
+
uuid: string;
|
|
4
|
+
name: string;
|
|
5
|
+
type: string | null;
|
|
6
|
+
fileId: string | null;
|
|
7
|
+
folderUuid: string;
|
|
8
|
+
bucket: string;
|
|
9
|
+
createdAt: Date;
|
|
10
|
+
updatedAt: Date;
|
|
11
|
+
size: number;
|
|
12
|
+
status: 'EXISTS' | 'TRASHED' | 'DELETED';
|
|
13
|
+
creationTime: Date;
|
|
14
|
+
modificationTime: Date;
|
|
15
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DriveFileModel = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
let DriveFileModel = class DriveFileModel {
|
|
15
|
+
};
|
|
16
|
+
exports.DriveFileModel = DriveFileModel;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, typeorm_1.PrimaryColumn)({ nullable: false, type: 'varchar' }),
|
|
19
|
+
__metadata("design:type", String)
|
|
20
|
+
], DriveFileModel.prototype, "uuid", void 0);
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], DriveFileModel.prototype, "name", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, typeorm_1.Column)({ nullable: true, type: 'varchar' }),
|
|
27
|
+
__metadata("design:type", Object)
|
|
28
|
+
], DriveFileModel.prototype, "type", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, typeorm_1.Column)({ nullable: true, type: 'varchar' }),
|
|
31
|
+
__metadata("design:type", Object)
|
|
32
|
+
], DriveFileModel.prototype, "fileId", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], DriveFileModel.prototype, "folderUuid", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], DriveFileModel.prototype, "bucket", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
43
|
+
__metadata("design:type", Date)
|
|
44
|
+
], DriveFileModel.prototype, "createdAt", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
47
|
+
__metadata("design:type", Date)
|
|
48
|
+
], DriveFileModel.prototype, "updatedAt", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'bigint' }),
|
|
51
|
+
__metadata("design:type", Number)
|
|
52
|
+
], DriveFileModel.prototype, "size", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], DriveFileModel.prototype, "status", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
59
|
+
__metadata("design:type", Date)
|
|
60
|
+
], DriveFileModel.prototype, "creationTime", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
63
|
+
__metadata("design:type", Date)
|
|
64
|
+
], DriveFileModel.prototype, "modificationTime", void 0);
|
|
65
|
+
exports.DriveFileModel = DriveFileModel = __decorate([
|
|
66
|
+
(0, typeorm_1.Entity)('drive_file')
|
|
67
|
+
], DriveFileModel);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DriveFile } from './drive-file.domain';
|
|
2
|
+
import { DriveFileModel } from './drive-file.model';
|
|
3
|
+
export declare class FileRepository {
|
|
4
|
+
static readonly instance: FileRepository;
|
|
5
|
+
private readonly fileRepository;
|
|
6
|
+
createOrUpdate: (files: DriveFileModel[]) => Promise<DriveFile[] | undefined>;
|
|
7
|
+
updateByUuid: (uuid: string, update: Partial<DriveFileModel>) => Promise<import("typeorm").UpdateResult | undefined>;
|
|
8
|
+
delete: (uuids: string[]) => Promise<import("typeorm").DeleteResult | undefined>;
|
|
9
|
+
deleteByParentUuid: (parentUuid: string) => Promise<import("typeorm").DeleteResult | undefined>;
|
|
10
|
+
getByParentUuidNameAndType: (parentUuid: string, name: string, type: string | null) => Promise<DriveFile | undefined>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileRepository = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const database_utils_1 = require("../../../utils/database.utils");
|
|
6
|
+
const errors_utils_1 = require("../../../utils/errors.utils");
|
|
7
|
+
const database_service_1 = require("../database.service");
|
|
8
|
+
const drive_file_domain_1 = require("./drive-file.domain");
|
|
9
|
+
const drive_file_model_1 = require("./drive-file.model");
|
|
10
|
+
class FileRepository {
|
|
11
|
+
static instance = new FileRepository();
|
|
12
|
+
fileRepository = database_service_1.DatabaseService.instance.dataSource.getRepository(drive_file_model_1.DriveFileModel);
|
|
13
|
+
createOrUpdate = async (files) => {
|
|
14
|
+
try {
|
|
15
|
+
for (let i = 0; i < files.length; i += database_utils_1.DatabaseUtils.CREATE_BATCH_SIZE) {
|
|
16
|
+
const chunk = files.slice(i, i + database_utils_1.DatabaseUtils.CREATE_BATCH_SIZE);
|
|
17
|
+
await this.fileRepository.upsert(chunk, { conflictPaths: ['uuid'] });
|
|
18
|
+
}
|
|
19
|
+
return files.map((file) => drive_file_domain_1.DriveFile.build(file));
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
errors_utils_1.ErrorUtils.report(error, { createOrUpdate: files });
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
updateByUuid = async (uuid, update) => {
|
|
26
|
+
try {
|
|
27
|
+
return await this.fileRepository.update({ uuid }, update);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
errors_utils_1.ErrorUtils.report(error, { updateByUuid: uuid });
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
delete = async (uuids) => {
|
|
34
|
+
try {
|
|
35
|
+
return await this.fileRepository.delete(uuids);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
errors_utils_1.ErrorUtils.report(error, { delete: uuids });
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
deleteByParentUuid = async (parentUuid) => {
|
|
42
|
+
try {
|
|
43
|
+
return await this.fileRepository.delete({ folderUuid: parentUuid });
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
errors_utils_1.ErrorUtils.report(error, { deleteByParentUuid: parentUuid });
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
getByParentUuidNameAndType = async (parentUuid, name, type) => {
|
|
50
|
+
try {
|
|
51
|
+
const typeCondition = type ?? (0, typeorm_1.IsNull)();
|
|
52
|
+
const file = await this.fileRepository.findOneBy({ folderUuid: parentUuid, name, type: typeCondition });
|
|
53
|
+
if (!file) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
return drive_file_domain_1.DriveFile.build(file);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
errors_utils_1.ErrorUtils.report(error, { getByParentuuidAndName: { parentUuid, name, type } });
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
exports.FileRepository = FileRepository;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
export interface DriveFolderAttributes {
|
|
2
|
-
id: number;
|
|
3
|
-
name: string;
|
|
4
2
|
uuid: string;
|
|
3
|
+
name: string;
|
|
5
4
|
status: 'EXISTS' | 'TRASHED';
|
|
6
|
-
relativePath: string;
|
|
7
|
-
parentId: number | null;
|
|
8
5
|
parentUuid: string | null;
|
|
9
6
|
createdAt: Date;
|
|
10
7
|
updatedAt: Date;
|
|
8
|
+
creationTime: Date;
|
|
9
|
+
modificationTime: Date;
|
|
11
10
|
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { DriveFolderItem } from '../../../types/drive.types';
|
|
2
2
|
import { DriveFolderAttributes } from './drive-folder.attributes';
|
|
3
3
|
export declare class DriveFolder implements DriveFolderAttributes {
|
|
4
|
-
id: number;
|
|
5
4
|
name: string;
|
|
6
5
|
uuid: string;
|
|
7
|
-
relativePath: string;
|
|
8
|
-
parentId: number | null;
|
|
9
6
|
parentUuid: string | null;
|
|
7
|
+
status: DriveFolderAttributes['status'];
|
|
10
8
|
createdAt: Date;
|
|
11
9
|
updatedAt: Date;
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
creationTime: Date;
|
|
11
|
+
modificationTime: Date;
|
|
12
|
+
constructor({ name, uuid, parentUuid, createdAt, updatedAt, status, creationTime, modificationTime, }: DriveFolderAttributes);
|
|
14
13
|
static build(folder: DriveFolderAttributes): DriveFolder;
|
|
15
14
|
toJSON(): DriveFolderAttributes;
|
|
16
15
|
toItem(): DriveFolderItem;
|
|
@@ -2,54 +2,50 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DriveFolder = void 0;
|
|
4
4
|
class DriveFolder {
|
|
5
|
-
id;
|
|
6
5
|
name;
|
|
7
6
|
uuid;
|
|
8
|
-
relativePath;
|
|
9
|
-
parentId;
|
|
10
7
|
parentUuid;
|
|
8
|
+
status;
|
|
11
9
|
createdAt;
|
|
12
10
|
updatedAt;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
creationTime;
|
|
12
|
+
modificationTime;
|
|
13
|
+
constructor({ name, uuid, parentUuid, createdAt, updatedAt, status, creationTime, modificationTime, }) {
|
|
16
14
|
this.name = name;
|
|
17
15
|
this.uuid = uuid;
|
|
18
|
-
this.relativePath = relativePath;
|
|
19
|
-
this.parentId = parentId;
|
|
20
16
|
this.parentUuid = parentUuid;
|
|
17
|
+
this.status = status;
|
|
21
18
|
this.createdAt = createdAt;
|
|
22
19
|
this.updatedAt = updatedAt;
|
|
23
|
-
this.
|
|
20
|
+
this.creationTime = creationTime;
|
|
21
|
+
this.modificationTime = modificationTime;
|
|
24
22
|
}
|
|
25
23
|
static build(folder) {
|
|
26
24
|
return new DriveFolder(folder);
|
|
27
25
|
}
|
|
28
26
|
toJSON() {
|
|
29
27
|
return {
|
|
30
|
-
id: this.id,
|
|
31
28
|
name: this.name,
|
|
32
29
|
uuid: this.uuid,
|
|
33
30
|
status: this.status,
|
|
34
|
-
relativePath: this.relativePath,
|
|
35
|
-
parentId: this.parentId,
|
|
36
31
|
parentUuid: this.parentUuid,
|
|
37
32
|
createdAt: this.createdAt,
|
|
38
33
|
updatedAt: this.updatedAt,
|
|
34
|
+
creationTime: this.creationTime,
|
|
35
|
+
modificationTime: this.modificationTime,
|
|
39
36
|
};
|
|
40
37
|
}
|
|
41
38
|
toItem() {
|
|
42
39
|
return {
|
|
43
40
|
itemType: 'folder',
|
|
44
|
-
id: this.id,
|
|
45
41
|
name: this.name,
|
|
46
42
|
uuid: this.uuid,
|
|
47
43
|
status: this.status,
|
|
48
|
-
parentId: this.parentId,
|
|
49
44
|
parentUuid: this.parentUuid,
|
|
50
45
|
createdAt: this.createdAt,
|
|
51
46
|
updatedAt: this.updatedAt,
|
|
52
|
-
|
|
47
|
+
creationTime: this.creationTime,
|
|
48
|
+
modificationTime: this.modificationTime,
|
|
53
49
|
bucket: null,
|
|
54
50
|
};
|
|
55
51
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DriveFolderAttributes } from './drive-folder.attributes';
|
|
2
|
+
export declare class DriveFolderModel implements DriveFolderAttributes {
|
|
3
|
+
uuid: string;
|
|
4
|
+
name: string;
|
|
5
|
+
status: 'EXISTS' | 'TRASHED';
|
|
6
|
+
parentUuid: string | null;
|
|
7
|
+
createdAt: Date;
|
|
8
|
+
updatedAt: Date;
|
|
9
|
+
creationTime: Date;
|
|
10
|
+
modificationTime: Date;
|
|
11
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DriveFolderModel = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
let DriveFolderModel = class DriveFolderModel {
|
|
15
|
+
};
|
|
16
|
+
exports.DriveFolderModel = DriveFolderModel;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, typeorm_1.PrimaryColumn)({ nullable: false, type: 'varchar' }),
|
|
19
|
+
__metadata("design:type", String)
|
|
20
|
+
], DriveFolderModel.prototype, "uuid", void 0);
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], DriveFolderModel.prototype, "name", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], DriveFolderModel.prototype, "status", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, typeorm_1.Column)({ nullable: true, type: 'varchar' }),
|
|
31
|
+
__metadata("design:type", Object)
|
|
32
|
+
], DriveFolderModel.prototype, "parentUuid", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
35
|
+
__metadata("design:type", Date)
|
|
36
|
+
], DriveFolderModel.prototype, "createdAt", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
39
|
+
__metadata("design:type", Date)
|
|
40
|
+
], DriveFolderModel.prototype, "updatedAt", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
43
|
+
__metadata("design:type", Date)
|
|
44
|
+
], DriveFolderModel.prototype, "creationTime", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, typeorm_1.Column)({ nullable: false, type: 'varchar' }),
|
|
47
|
+
__metadata("design:type", Date)
|
|
48
|
+
], DriveFolderModel.prototype, "modificationTime", void 0);
|
|
49
|
+
exports.DriveFolderModel = DriveFolderModel = __decorate([
|
|
50
|
+
(0, typeorm_1.Entity)('drive_folder')
|
|
51
|
+
], DriveFolderModel);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DriveFolder } from './drive-folder.domain';
|
|
2
|
+
import { DriveFolderModel } from './drive-folder.model';
|
|
3
|
+
export declare class FolderRepository {
|
|
4
|
+
static readonly instance: FolderRepository;
|
|
5
|
+
private readonly folderRepository;
|
|
6
|
+
getByUuid: (uuid: string) => Promise<DriveFolder | undefined>;
|
|
7
|
+
getAllByParentUuid: (parentUuid?: string) => Promise<DriveFolder[] | undefined>;
|
|
8
|
+
getByParentUuidAndName: (parentUuid: string, name: string) => Promise<DriveFolder | undefined>;
|
|
9
|
+
getByPath: (path: string, parentUuid: string) => Promise<DriveFolder | undefined>;
|
|
10
|
+
createOrUpdate: (files: DriveFolderModel[]) => Promise<DriveFolder[] | undefined>;
|
|
11
|
+
updateByUuid: (uuid: string, update: Partial<DriveFolderModel>) => Promise<import("typeorm").UpdateResult | undefined>;
|
|
12
|
+
delete: (uuids: string[]) => Promise<import("typeorm").DeleteResult | undefined>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FolderRepository = void 0;
|
|
4
|
+
const errors_utils_1 = require("../../../utils/errors.utils");
|
|
5
|
+
const database_service_1 = require("../database.service");
|
|
6
|
+
const drive_folder_domain_1 = require("./drive-folder.domain");
|
|
7
|
+
const drive_folder_model_1 = require("./drive-folder.model");
|
|
8
|
+
const database_utils_1 = require("../../../utils/database.utils");
|
|
9
|
+
class FolderRepository {
|
|
10
|
+
static instance = new FolderRepository();
|
|
11
|
+
folderRepository = database_service_1.DatabaseService.instance.dataSource.getRepository(drive_folder_model_1.DriveFolderModel);
|
|
12
|
+
getByUuid = async (uuid) => {
|
|
13
|
+
try {
|
|
14
|
+
const folder = await this.folderRepository.findOneBy({ uuid });
|
|
15
|
+
if (!folder) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
return drive_folder_domain_1.DriveFolder.build(folder);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
errors_utils_1.ErrorUtils.report(error, { getByUuid: uuid });
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
getAllByParentUuid = async (parentUuid) => {
|
|
25
|
+
try {
|
|
26
|
+
const folders = await this.folderRepository.findBy({ parentUuid });
|
|
27
|
+
if (!folders) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
return folders.map((folder) => drive_folder_domain_1.DriveFolder.build(folder));
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
errors_utils_1.ErrorUtils.report(error, { getAllByParentUuid: parentUuid });
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
getByParentUuidAndName = async (parentUuid, name) => {
|
|
37
|
+
try {
|
|
38
|
+
const folder = await this.folderRepository.findOneBy({ parentUuid, name });
|
|
39
|
+
if (!folder) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
return drive_folder_domain_1.DriveFolder.build(folder);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
errors_utils_1.ErrorUtils.report(error, { getByParentuuidAndName: { parentUuid, name } });
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
getByPath = async (path, parentUuid) => {
|
|
49
|
+
try {
|
|
50
|
+
const onFound = async (uuid) => {
|
|
51
|
+
const folder = await this.folderRepository.findOneBy({ uuid });
|
|
52
|
+
if (!folder) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
return drive_folder_domain_1.DriveFolder.build(folder);
|
|
56
|
+
};
|
|
57
|
+
return database_utils_1.DatabaseUtils.getFolderByPathGeneric({
|
|
58
|
+
path,
|
|
59
|
+
parentUuid,
|
|
60
|
+
onFound,
|
|
61
|
+
getByParentAndName: this.getByParentUuidAndName.bind(this),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
errors_utils_1.ErrorUtils.report(error, { getByPath: path });
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
createOrUpdate = async (files) => {
|
|
69
|
+
if (files.length === 0)
|
|
70
|
+
return;
|
|
71
|
+
try {
|
|
72
|
+
for (let i = 0; i < files.length; i += database_utils_1.DatabaseUtils.CREATE_BATCH_SIZE) {
|
|
73
|
+
const chunk = files.slice(i, i + database_utils_1.DatabaseUtils.CREATE_BATCH_SIZE);
|
|
74
|
+
await this.folderRepository.upsert(chunk, { conflictPaths: ['uuid'] });
|
|
75
|
+
}
|
|
76
|
+
return files.map((file) => drive_folder_domain_1.DriveFolder.build(file));
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
errors_utils_1.ErrorUtils.report(error, { createOrUpdate: files });
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
updateByUuid = async (uuid, update) => {
|
|
83
|
+
try {
|
|
84
|
+
return await this.folderRepository.update({ uuid }, update);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
errors_utils_1.ErrorUtils.report(error, { updateByUuid: uuid });
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
delete = async (uuids) => {
|
|
91
|
+
try {
|
|
92
|
+
return await this.folderRepository.delete(uuids);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
errors_utils_1.ErrorUtils.report(error, { delete: uuids });
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
exports.FolderRepository = FolderRepository;
|
|
@@ -3,12 +3,14 @@ import { DriveFileItem } from '../../types/drive.types';
|
|
|
3
3
|
export declare class DriveFileService {
|
|
4
4
|
static readonly instance: DriveFileService;
|
|
5
5
|
createFile: (payload: StorageTypes.FileEntryByUuid) => Promise<DriveFileItem>;
|
|
6
|
+
private createDriveFileEntry;
|
|
6
7
|
getFileMetadata: (uuid: string) => Promise<DriveFileItem>;
|
|
7
8
|
moveFile: (uuid: string, payload: StorageTypes.MoveFileUuidPayload) => Promise<StorageTypes.FileMeta>;
|
|
8
9
|
renameFile: (fileUuid: string, payload: {
|
|
9
10
|
plainName?: string;
|
|
10
11
|
type?: string | null;
|
|
11
12
|
}) => Promise<void>;
|
|
13
|
+
getByParentUuidAndName: (parentUuid: string, name: string, type: string | null) => Promise<DriveFileItem>;
|
|
12
14
|
getFileMetadataByPath: (path: string) => Promise<DriveFileItem>;
|
|
13
15
|
createThumbnail: (payload: StorageTypes.CreateThumbnailEntryPayload) => Promise<StorageTypes.Thumbnail>;
|
|
14
16
|
}
|