@internxt/cli 1.5.1 → 1.5.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/.env +0 -3
- package/README.md +30 -29
- package/dist/commands/login.js +0 -3
- package/dist/commands/logout.js +0 -2
- package/dist/commands/webdav-config.d.ts +1 -0
- package/dist/commands/webdav-config.js +10 -0
- package/dist/commands/webdav.js +0 -3
- package/dist/commands/whoami.js +0 -2
- package/dist/services/auth.service.js +10 -2
- package/dist/services/config.service.d.ts +1 -0
- package/dist/services/config.service.js +3 -0
- package/dist/types/command.types.d.ts +1 -0
- package/dist/types/config.types.d.ts +0 -3
- package/dist/utils/webdav.utils.d.ts +2 -8
- package/dist/utils/webdav.utils.js +16 -33
- package/dist/utils/xml.utils.d.ts +1 -1
- package/dist/webdav/handlers/DELETE.handler.d.ts +0 -2
- package/dist/webdav/handlers/DELETE.handler.js +1 -8
- package/dist/webdav/handlers/GET.handler.d.ts +0 -2
- package/dist/webdav/handlers/GET.handler.js +1 -2
- package/dist/webdav/handlers/HEAD.handler.d.ts +0 -2
- package/dist/webdav/handlers/HEAD.handler.js +24 -19
- package/dist/webdav/handlers/MKCOL.handler.d.ts +0 -2
- package/dist/webdav/handlers/MKCOL.handler.js +14 -15
- package/dist/webdav/handlers/MOVE.handler.d.ts +0 -2
- package/dist/webdav/handlers/MOVE.handler.js +1 -7
- package/dist/webdav/handlers/PROPFIND.handler.d.ts +0 -2
- package/dist/webdav/handlers/PROPFIND.handler.js +23 -38
- package/dist/webdav/handlers/PUT.handler.d.ts +0 -2
- package/dist/webdav/handlers/PUT.handler.js +3 -7
- package/dist/webdav/index.js +1 -5
- package/dist/webdav/middewares/mkcol.middleware.d.ts +2 -0
- package/dist/webdav/middewares/mkcol.middleware.js +23 -0
- package/dist/webdav/webdav-server.d.ts +1 -3
- package/dist/webdav/webdav-server.js +16 -22
- package/oclif.manifest.json +10 -1
- package/package.json +24 -30
- package/dist/database/migrations/20240402164914-create-files.d.ts +0 -1
- package/dist/database/migrations/20240402164914-create-files.js +0 -55
- package/dist/database/migrations/20240402165418-create-folders.d.ts +0 -1
- package/dist/database/migrations/20240402165418-create-folders.js +0 -37
- package/dist/database/migrations/20241018114828-add-parent-column.d.ts +0 -1
- package/dist/database/migrations/20241018114828-add-parent-column.js +0 -24
- package/dist/services/database/drive-database-manager.service.d.ts +0 -23
- package/dist/services/database/drive-database-manager.service.js +0 -93
- package/dist/services/database/drive-file/drive-file.model.d.ts +0 -18
- package/dist/services/database/drive-file/drive-file.model.js +0 -80
- package/dist/services/database/drive-file/drive-file.repository.d.ts +0 -11
- package/dist/services/database/drive-file/drive-file.repository.js +0 -40
- package/dist/services/database/drive-folder/drive-folder.model.d.ts +0 -14
- package/dist/services/database/drive-folder/drive-folder.model.js +0 -65
- package/dist/services/database/drive-folder/drive-folder.repository.d.ts +0 -11
- package/dist/services/database/drive-folder/drive-folder.repository.js +0 -40
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": "Internxt <hello@internxt.com>",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "Internxt CLI to manage your encrypted storage",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "yarn clean && tsc",
|
|
@@ -16,8 +16,6 @@
|
|
|
16
16
|
"test:watch": "vitest watch",
|
|
17
17
|
"dev:webdav": "nodemon -e ts --exec ts-node src/webdav/index.ts",
|
|
18
18
|
"pack:win": "oclif pack win",
|
|
19
|
-
"migrate": "sequelize db:migrate",
|
|
20
|
-
"migrate:undo": "sequelize db:migrate:undo",
|
|
21
19
|
"publish:npm": "npm run build && npm publish --scope=@internxt --registry=https://registry.npmjs.org/ --access public",
|
|
22
20
|
"publish:github": "npm run build && npm publish --scope=@internxt --registry=https://npm.pkg.github.com",
|
|
23
21
|
"postinstall": "node ./scripts/restart-webdav.js"
|
|
@@ -37,61 +35,57 @@
|
|
|
37
35
|
"/oclif.manifest.json"
|
|
38
36
|
],
|
|
39
37
|
"dependencies": {
|
|
40
|
-
"@inquirer/prompts": "7.
|
|
38
|
+
"@inquirer/prompts": "7.5.0",
|
|
41
39
|
"@internxt/inxt-js": "2.1.0",
|
|
42
40
|
"@internxt/lib": "1.2.1",
|
|
43
41
|
"@internxt/sdk": "1.7.0",
|
|
44
|
-
"@oclif/core": "4.
|
|
45
|
-
"@types/validator": "13.
|
|
42
|
+
"@oclif/core": "4.3.0",
|
|
43
|
+
"@types/validator": "13.15.0",
|
|
46
44
|
"async": "3.2.6",
|
|
47
|
-
"axios": "1.
|
|
45
|
+
"axios": "1.9.0",
|
|
48
46
|
"bip39": "3.1.0",
|
|
49
|
-
"body-parser": "
|
|
47
|
+
"body-parser": "2.2.0",
|
|
50
48
|
"cli-progress": "3.12.0",
|
|
51
49
|
"dayjs": "1.11.13",
|
|
52
|
-
"dotenv": "16.
|
|
53
|
-
"express": "
|
|
50
|
+
"dotenv": "16.5.0",
|
|
51
|
+
"express": "5.1.0",
|
|
54
52
|
"express-async-handler": "1.2.0",
|
|
55
53
|
"express-basic-auth": "1.2.1",
|
|
56
|
-
"fast-xml-parser": "5.
|
|
57
|
-
"mime-types": "
|
|
54
|
+
"fast-xml-parser": "5.2.1",
|
|
55
|
+
"mime-types": "3.0.1",
|
|
58
56
|
"openpgp": "5.11.2",
|
|
59
|
-
"pm2": "
|
|
57
|
+
"pm2": "6.0.5",
|
|
60
58
|
"range-parser": "1.2.1",
|
|
61
59
|
"reflect-metadata": "0.2.2",
|
|
62
60
|
"selfsigned": "2.4.1",
|
|
63
|
-
"
|
|
64
|
-
"sequelize-typescript": "2.1.6",
|
|
65
|
-
"sharp": "0.33.5",
|
|
66
|
-
"sqlite3": "5.1.7",
|
|
61
|
+
"sharp": "0.34.1",
|
|
67
62
|
"tty-table": "4.2.3",
|
|
68
63
|
"winston": "3.17.0"
|
|
69
64
|
},
|
|
70
65
|
"devDependencies": {
|
|
71
66
|
"@internxt/eslint-config-internxt": "2.0.0",
|
|
72
67
|
"@internxt/prettier-config": "internxt/prettier-config#v1.0.2",
|
|
73
|
-
"@oclif/test": "4.1.
|
|
68
|
+
"@oclif/test": "4.1.12",
|
|
74
69
|
"@openpgp/web-stream-tools": "0.0.11-patch-1",
|
|
75
70
|
"@types/async": "3.2.24",
|
|
76
71
|
"@types/cli-progress": "3.11.6",
|
|
77
|
-
"@types/express": "5.0.
|
|
72
|
+
"@types/express": "5.0.1",
|
|
78
73
|
"@types/mime-types": "2.1.4",
|
|
79
|
-
"@types/node": "22.
|
|
74
|
+
"@types/node": "22.15.3",
|
|
80
75
|
"@types/range-parser": "1.2.7",
|
|
81
|
-
"@vitest/coverage-istanbul": "3.
|
|
82
|
-
"@vitest/spy": "3.
|
|
83
|
-
"eslint": "9.
|
|
76
|
+
"@vitest/coverage-istanbul": "3.1.2",
|
|
77
|
+
"@vitest/spy": "3.1.2",
|
|
78
|
+
"eslint": "9.25.1",
|
|
84
79
|
"husky": "9.1.7",
|
|
85
|
-
"lint-staged": "15.
|
|
86
|
-
"nock": "14.0.
|
|
87
|
-
"nodemon": "3.1.
|
|
88
|
-
"oclif": "4.17.
|
|
80
|
+
"lint-staged": "15.5.1",
|
|
81
|
+
"nock": "14.0.4",
|
|
82
|
+
"nodemon": "3.1.10",
|
|
83
|
+
"oclif": "4.17.46",
|
|
89
84
|
"prettier": "3.5.3",
|
|
90
85
|
"rimraf": "6.0.1",
|
|
91
|
-
"sequelize-cli": "6.6.2",
|
|
92
86
|
"ts-node": "10.9.2",
|
|
93
|
-
"typescript": "5.8.
|
|
94
|
-
"vitest": "3.
|
|
87
|
+
"typescript": "5.8.3",
|
|
88
|
+
"vitest": "3.1.2",
|
|
95
89
|
"vitest-mock-express": "2.2.0"
|
|
96
90
|
},
|
|
97
91
|
"engines": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
module.exports = {
|
|
4
|
-
async up(queryInterface, Sequelize) {
|
|
5
|
-
await queryInterface.createTable('files', {
|
|
6
|
-
id: {
|
|
7
|
-
allowNull: false,
|
|
8
|
-
autoIncrement: true,
|
|
9
|
-
primaryKey: true,
|
|
10
|
-
type: Sequelize.INTEGER,
|
|
11
|
-
},
|
|
12
|
-
name: {
|
|
13
|
-
type: Sequelize.STRING,
|
|
14
|
-
},
|
|
15
|
-
type: {
|
|
16
|
-
type: Sequelize.STRING(24),
|
|
17
|
-
allowNull: true,
|
|
18
|
-
},
|
|
19
|
-
uuid: {
|
|
20
|
-
type: Sequelize.UUIDV4,
|
|
21
|
-
unique: true,
|
|
22
|
-
},
|
|
23
|
-
file_id: {
|
|
24
|
-
type: Sequelize.STRING(24),
|
|
25
|
-
},
|
|
26
|
-
folder_id: {
|
|
27
|
-
type: Sequelize.INTEGER,
|
|
28
|
-
},
|
|
29
|
-
bucket: {
|
|
30
|
-
type: Sequelize.STRING(24),
|
|
31
|
-
},
|
|
32
|
-
relative_path: {
|
|
33
|
-
type: Sequelize.TEXT,
|
|
34
|
-
},
|
|
35
|
-
size: {
|
|
36
|
-
type: Sequelize.BIGINT,
|
|
37
|
-
},
|
|
38
|
-
status: {
|
|
39
|
-
type: Sequelize.ENUM,
|
|
40
|
-
values: ['EXISTS', 'TRASHED', 'DELETED'],
|
|
41
|
-
defaultValue: 'EXISTS',
|
|
42
|
-
allowNull: false,
|
|
43
|
-
},
|
|
44
|
-
created_at: {
|
|
45
|
-
type: Sequelize.DATE,
|
|
46
|
-
},
|
|
47
|
-
updated_at: {
|
|
48
|
-
type: Sequelize.DATE,
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
},
|
|
52
|
-
async down(queryInterface) {
|
|
53
|
-
await queryInterface.dropTable('files');
|
|
54
|
-
},
|
|
55
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
module.exports = {
|
|
4
|
-
async up(queryInterface, Sequelize) {
|
|
5
|
-
await queryInterface.createTable('folders', {
|
|
6
|
-
id: {
|
|
7
|
-
allowNull: false,
|
|
8
|
-
autoIncrement: true,
|
|
9
|
-
primaryKey: true,
|
|
10
|
-
type: Sequelize.INTEGER,
|
|
11
|
-
},
|
|
12
|
-
name: {
|
|
13
|
-
type: Sequelize.STRING,
|
|
14
|
-
},
|
|
15
|
-
uuid: {
|
|
16
|
-
type: Sequelize.UUIDV4,
|
|
17
|
-
unique: true,
|
|
18
|
-
},
|
|
19
|
-
relative_path: {
|
|
20
|
-
type: Sequelize.TEXT,
|
|
21
|
-
},
|
|
22
|
-
parent_id: {
|
|
23
|
-
type: Sequelize.INTEGER,
|
|
24
|
-
allowNull: true,
|
|
25
|
-
},
|
|
26
|
-
created_at: {
|
|
27
|
-
type: Sequelize.DATE,
|
|
28
|
-
},
|
|
29
|
-
updated_at: {
|
|
30
|
-
type: Sequelize.DATE,
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
async down(queryInterface) {
|
|
35
|
-
await queryInterface.dropTable('folders');
|
|
36
|
-
},
|
|
37
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
module.exports = {
|
|
4
|
-
async up(queryInterface, Sequelize) {
|
|
5
|
-
await queryInterface.addColumn('folders', 'parent_uuid', {
|
|
6
|
-
type: Sequelize.UUIDV4,
|
|
7
|
-
references: {
|
|
8
|
-
model: 'folders',
|
|
9
|
-
key: 'uuid',
|
|
10
|
-
},
|
|
11
|
-
});
|
|
12
|
-
await queryInterface.addColumn('files', 'folder_uuid', {
|
|
13
|
-
type: Sequelize.UUIDV4,
|
|
14
|
-
references: {
|
|
15
|
-
model: 'files',
|
|
16
|
-
key: 'uuid',
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
},
|
|
20
|
-
async down(queryInterface) {
|
|
21
|
-
await queryInterface.removeColumn('folders', 'parent_uuid');
|
|
22
|
-
await queryInterface.removeColumn('files', 'folder_uuid');
|
|
23
|
-
},
|
|
24
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { DriveFileItem, DriveFolderItem } from '../../types/drive.types';
|
|
2
|
-
import { DriveFileRepository } from './drive-file/drive-file.repository';
|
|
3
|
-
import { DriveFolderRepository } from './drive-folder/drive-folder.repository';
|
|
4
|
-
import { DriveFile } from './drive-file/drive-file.domain';
|
|
5
|
-
import { DriveFolder } from './drive-folder/drive-folder.domain';
|
|
6
|
-
export declare class DriveDatabaseManager {
|
|
7
|
-
private readonly driveFileRepository;
|
|
8
|
-
private readonly driveFolderRepository;
|
|
9
|
-
private static readonly sequelize;
|
|
10
|
-
constructor(driveFileRepository: DriveFileRepository, driveFolderRepository: DriveFolderRepository);
|
|
11
|
-
static readonly init: () => Promise<void>;
|
|
12
|
-
static readonly clean: () => Promise<void>;
|
|
13
|
-
findFileByRelativePath: (relativePath: string) => Promise<DriveFile | null>;
|
|
14
|
-
findFolderByRelativePath: (relativePath: string) => Promise<DriveFolder | null>;
|
|
15
|
-
createFolder: (driveFolder: DriveFolderItem, relativePath: string) => Promise<DriveFolder>;
|
|
16
|
-
createFile: (driveFile: DriveFileItem, relativePath: string) => Promise<DriveFile>;
|
|
17
|
-
buildRelativePathForFile: (fileName: string, parentId: number | null) => Promise<string>;
|
|
18
|
-
buildRelativePathForFolder: (folderName: string, parentId: number | null) => Promise<string>;
|
|
19
|
-
deleteFileById: (id: number) => Promise<void>;
|
|
20
|
-
deleteFolderById: (id: number) => Promise<void>;
|
|
21
|
-
deleteFileByPath: (relativePath: string) => Promise<void>;
|
|
22
|
-
deleteFolderByPath: (relativePath: string) => Promise<void>;
|
|
23
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DriveDatabaseManager = void 0;
|
|
7
|
-
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
8
|
-
const webdav_utils_1 = require("../../utils/webdav.utils");
|
|
9
|
-
const config_service_1 = require("../config.service");
|
|
10
|
-
const drive_file_repository_1 = require("./drive-file/drive-file.repository");
|
|
11
|
-
const drive_folder_repository_1 = require("./drive-folder/drive-folder.repository");
|
|
12
|
-
const drive_file_model_1 = __importDefault(require("./drive-file/drive-file.model"));
|
|
13
|
-
const drive_folder_model_1 = __importDefault(require("./drive-folder/drive-folder.model"));
|
|
14
|
-
class DriveDatabaseManager {
|
|
15
|
-
driveFileRepository;
|
|
16
|
-
driveFolderRepository;
|
|
17
|
-
static sequelize = new sequelize_typescript_1.Sequelize({
|
|
18
|
-
dialect: 'sqlite',
|
|
19
|
-
storage: config_service_1.ConfigService.DRIVE_SQLITE_FILE,
|
|
20
|
-
models: [drive_file_model_1.default, drive_folder_model_1.default],
|
|
21
|
-
logging: false,
|
|
22
|
-
});
|
|
23
|
-
constructor(driveFileRepository, driveFolderRepository) {
|
|
24
|
-
this.driveFileRepository = driveFileRepository;
|
|
25
|
-
this.driveFolderRepository = driveFolderRepository;
|
|
26
|
-
}
|
|
27
|
-
static init = async () => {
|
|
28
|
-
await DriveDatabaseManager.sequelize.sync({ force: true });
|
|
29
|
-
};
|
|
30
|
-
static clean = async () => {
|
|
31
|
-
await drive_file_repository_1.DriveFileRepository.clean();
|
|
32
|
-
await drive_folder_repository_1.DriveFolderRepository.clean();
|
|
33
|
-
};
|
|
34
|
-
findFileByRelativePath = async (relativePath) => {
|
|
35
|
-
const driveFile = await this.driveFileRepository.findByRelativePath(relativePath);
|
|
36
|
-
return driveFile ?? null;
|
|
37
|
-
};
|
|
38
|
-
findFolderByRelativePath = async (relativePath) => {
|
|
39
|
-
const folderRelativePath = relativePath.endsWith('/') ? relativePath : relativePath.concat('/');
|
|
40
|
-
const driveFolder = await this.driveFolderRepository.findByRelativePath(folderRelativePath);
|
|
41
|
-
return driveFolder ?? null;
|
|
42
|
-
};
|
|
43
|
-
createFolder = async (driveFolder, relativePath) => {
|
|
44
|
-
await this.deleteFolderById(driveFolder.id);
|
|
45
|
-
await this.deleteFolderByPath(relativePath);
|
|
46
|
-
return await this.driveFolderRepository.createFolder(driveFolder, relativePath);
|
|
47
|
-
};
|
|
48
|
-
createFile = async (driveFile, relativePath) => {
|
|
49
|
-
await this.deleteFileById(driveFile.id);
|
|
50
|
-
await this.deleteFileByPath(relativePath);
|
|
51
|
-
return await this.driveFileRepository.createFile(driveFile, relativePath);
|
|
52
|
-
};
|
|
53
|
-
buildRelativePathForFile = async (fileName, parentId) => {
|
|
54
|
-
const parentFolder = await this.driveFolderRepository.findById(parentId ?? -1);
|
|
55
|
-
if (!parentFolder) {
|
|
56
|
-
return webdav_utils_1.WebDavUtils.joinURL('/', fileName);
|
|
57
|
-
}
|
|
58
|
-
const parentPath = await this.buildRelativePathForFile(parentFolder.name, parentFolder.parentId);
|
|
59
|
-
return webdav_utils_1.WebDavUtils.joinURL(parentPath, fileName);
|
|
60
|
-
};
|
|
61
|
-
buildRelativePathForFolder = async (folderName, parentId) => {
|
|
62
|
-
const parentFolder = await this.driveFolderRepository.findById(parentId ?? -1);
|
|
63
|
-
if (!parentFolder) {
|
|
64
|
-
return webdav_utils_1.WebDavUtils.joinURL('/', folderName, '/');
|
|
65
|
-
}
|
|
66
|
-
const parentPath = await this.buildRelativePathForFolder(parentFolder.name, parentFolder.parentId);
|
|
67
|
-
return webdav_utils_1.WebDavUtils.joinURL(parentPath, folderName, '/');
|
|
68
|
-
};
|
|
69
|
-
deleteFileById = async (id) => {
|
|
70
|
-
const existingObject = await this.driveFileRepository.findById(id);
|
|
71
|
-
if (existingObject) {
|
|
72
|
-
await this.driveFileRepository.deleteById(existingObject.id);
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
deleteFolderById = async (id) => {
|
|
76
|
-
const existingObject = await this.driveFolderRepository.findById(id);
|
|
77
|
-
if (existingObject) {
|
|
78
|
-
await this.driveFolderRepository.deleteById(existingObject.id);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
deleteFileByPath = async (relativePath) => {
|
|
82
|
-
const existingPath = await this.driveFileRepository.findByRelativePath(relativePath);
|
|
83
|
-
if (existingPath)
|
|
84
|
-
await this.driveFileRepository.deleteById(existingPath.id);
|
|
85
|
-
};
|
|
86
|
-
deleteFolderByPath = async (relativePath) => {
|
|
87
|
-
const existingPath = await this.driveFolderRepository.findByRelativePath(relativePath);
|
|
88
|
-
if (existingPath) {
|
|
89
|
-
await this.driveFolderRepository.deleteById(existingPath.id);
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
exports.DriveDatabaseManager = DriveDatabaseManager;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Model } from 'sequelize-typescript';
|
|
2
|
-
import { DriveFileAttributes } from './drive-file.attributes';
|
|
3
|
-
export declare class DriveFileModel extends Model implements DriveFileAttributes {
|
|
4
|
-
id: number;
|
|
5
|
-
name: string;
|
|
6
|
-
type?: string;
|
|
7
|
-
uuid: string;
|
|
8
|
-
fileId: string;
|
|
9
|
-
folderId: number;
|
|
10
|
-
folderUuid: string;
|
|
11
|
-
bucket: string;
|
|
12
|
-
relativePath: string;
|
|
13
|
-
size: number;
|
|
14
|
-
status: string;
|
|
15
|
-
createdAt: Date;
|
|
16
|
-
updatedAt: Date;
|
|
17
|
-
}
|
|
18
|
-
export default DriveFileModel;
|
|
@@ -1,80 +0,0 @@
|
|
|
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 sequelize_typescript_1 = require("sequelize-typescript");
|
|
14
|
-
let DriveFileModel = class DriveFileModel extends sequelize_typescript_1.Model {
|
|
15
|
-
};
|
|
16
|
-
exports.DriveFileModel = DriveFileModel;
|
|
17
|
-
__decorate([
|
|
18
|
-
sequelize_typescript_1.PrimaryKey,
|
|
19
|
-
sequelize_typescript_1.AutoIncrement,
|
|
20
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.INTEGER),
|
|
21
|
-
__metadata("design:type", Number)
|
|
22
|
-
], DriveFileModel.prototype, "id", void 0);
|
|
23
|
-
__decorate([
|
|
24
|
-
sequelize_typescript_1.Index,
|
|
25
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.STRING),
|
|
26
|
-
__metadata("design:type", String)
|
|
27
|
-
], DriveFileModel.prototype, "name", void 0);
|
|
28
|
-
__decorate([
|
|
29
|
-
sequelize_typescript_1.AllowNull,
|
|
30
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.STRING(24)),
|
|
31
|
-
__metadata("design:type", String)
|
|
32
|
-
], DriveFileModel.prototype, "type", void 0);
|
|
33
|
-
__decorate([
|
|
34
|
-
sequelize_typescript_1.Unique,
|
|
35
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.UUIDV4),
|
|
36
|
-
__metadata("design:type", String)
|
|
37
|
-
], DriveFileModel.prototype, "uuid", void 0);
|
|
38
|
-
__decorate([
|
|
39
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.STRING(24)),
|
|
40
|
-
__metadata("design:type", String)
|
|
41
|
-
], DriveFileModel.prototype, "fileId", void 0);
|
|
42
|
-
__decorate([
|
|
43
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.INTEGER),
|
|
44
|
-
__metadata("design:type", Number)
|
|
45
|
-
], DriveFileModel.prototype, "folderId", void 0);
|
|
46
|
-
__decorate([
|
|
47
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.UUIDV4),
|
|
48
|
-
__metadata("design:type", String)
|
|
49
|
-
], DriveFileModel.prototype, "folderUuid", void 0);
|
|
50
|
-
__decorate([
|
|
51
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.STRING(24)),
|
|
52
|
-
__metadata("design:type", String)
|
|
53
|
-
], DriveFileModel.prototype, "bucket", void 0);
|
|
54
|
-
__decorate([
|
|
55
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.TEXT),
|
|
56
|
-
__metadata("design:type", String)
|
|
57
|
-
], DriveFileModel.prototype, "relativePath", void 0);
|
|
58
|
-
__decorate([
|
|
59
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.BIGINT),
|
|
60
|
-
__metadata("design:type", Number)
|
|
61
|
-
], DriveFileModel.prototype, "size", void 0);
|
|
62
|
-
__decorate([
|
|
63
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.STRING),
|
|
64
|
-
__metadata("design:type", String)
|
|
65
|
-
], DriveFileModel.prototype, "status", void 0);
|
|
66
|
-
__decorate([
|
|
67
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.DATE),
|
|
68
|
-
__metadata("design:type", Date)
|
|
69
|
-
], DriveFileModel.prototype, "createdAt", void 0);
|
|
70
|
-
__decorate([
|
|
71
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.DATE),
|
|
72
|
-
__metadata("design:type", Date)
|
|
73
|
-
], DriveFileModel.prototype, "updatedAt", void 0);
|
|
74
|
-
exports.DriveFileModel = DriveFileModel = __decorate([
|
|
75
|
-
(0, sequelize_typescript_1.Table)({
|
|
76
|
-
underscored: true,
|
|
77
|
-
tableName: 'files',
|
|
78
|
-
})
|
|
79
|
-
], DriveFileModel);
|
|
80
|
-
exports.default = DriveFileModel;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DriveFileItem } from '../../../types/drive.types';
|
|
2
|
-
import { DriveFileModel } from './drive-file.model';
|
|
3
|
-
import { DriveFile } from './drive-file.domain';
|
|
4
|
-
export declare class DriveFileRepository {
|
|
5
|
-
findByRelativePath: (relativePath: DriveFile["relativePath"]) => Promise<DriveFile | null>;
|
|
6
|
-
findById: (id: DriveFile["id"]) => Promise<DriveFile | null>;
|
|
7
|
-
deleteById: (id: DriveFile["id"]) => Promise<void>;
|
|
8
|
-
createFile: (driveFileItem: DriveFileItem, relativePath: string) => Promise<DriveFile>;
|
|
9
|
-
toDomain: (model: DriveFileModel) => DriveFile;
|
|
10
|
-
static readonly clean: () => Promise<void>;
|
|
11
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DriveFileRepository = void 0;
|
|
4
|
-
const drive_file_model_1 = require("./drive-file.model");
|
|
5
|
-
const drive_file_domain_1 = require("./drive-file.domain");
|
|
6
|
-
class DriveFileRepository {
|
|
7
|
-
findByRelativePath = async (relativePath) => {
|
|
8
|
-
const file = await drive_file_model_1.DriveFileModel.findOne({
|
|
9
|
-
where: {
|
|
10
|
-
relativePath,
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
return file ? this.toDomain(file) : null;
|
|
14
|
-
};
|
|
15
|
-
findById = async (id) => {
|
|
16
|
-
const file = await drive_file_model_1.DriveFileModel.findByPk(id);
|
|
17
|
-
return file ? this.toDomain(file) : null;
|
|
18
|
-
};
|
|
19
|
-
deleteById = async (id) => {
|
|
20
|
-
await drive_file_model_1.DriveFileModel.destroy({ where: { id } });
|
|
21
|
-
};
|
|
22
|
-
createFile = async (driveFileItem, relativePath) => {
|
|
23
|
-
const driveFile = drive_file_domain_1.DriveFile.build({
|
|
24
|
-
...driveFileItem,
|
|
25
|
-
relativePath,
|
|
26
|
-
});
|
|
27
|
-
const newFile = await drive_file_model_1.DriveFileModel.create({ ...driveFile.toJSON() });
|
|
28
|
-
return this.toDomain(newFile);
|
|
29
|
-
};
|
|
30
|
-
toDomain = (model) => {
|
|
31
|
-
const driveFile = drive_file_domain_1.DriveFile.build({
|
|
32
|
-
...model.toJSON(),
|
|
33
|
-
});
|
|
34
|
-
return driveFile;
|
|
35
|
-
};
|
|
36
|
-
static clean = () => {
|
|
37
|
-
return drive_file_model_1.DriveFileModel.drop();
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
exports.DriveFileRepository = DriveFileRepository;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Model } from 'sequelize-typescript';
|
|
2
|
-
import { DriveFolderAttributes } from './drive-folder.attributes';
|
|
3
|
-
export declare class DriveFolderModel extends Model implements DriveFolderAttributes {
|
|
4
|
-
id: number;
|
|
5
|
-
name: string;
|
|
6
|
-
status: 'EXISTS' | 'TRASHED';
|
|
7
|
-
uuid: string;
|
|
8
|
-
relativePath: string;
|
|
9
|
-
parentId: number | null;
|
|
10
|
-
parentUuid: string | null;
|
|
11
|
-
createdAt: Date;
|
|
12
|
-
updatedAt: Date;
|
|
13
|
-
}
|
|
14
|
-
export default DriveFolderModel;
|
|
@@ -1,65 +0,0 @@
|
|
|
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 sequelize_typescript_1 = require("sequelize-typescript");
|
|
14
|
-
let DriveFolderModel = class DriveFolderModel extends sequelize_typescript_1.Model {
|
|
15
|
-
};
|
|
16
|
-
exports.DriveFolderModel = DriveFolderModel;
|
|
17
|
-
__decorate([
|
|
18
|
-
sequelize_typescript_1.PrimaryKey,
|
|
19
|
-
sequelize_typescript_1.AutoIncrement,
|
|
20
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.INTEGER),
|
|
21
|
-
__metadata("design:type", Number)
|
|
22
|
-
], DriveFolderModel.prototype, "id", void 0);
|
|
23
|
-
__decorate([
|
|
24
|
-
sequelize_typescript_1.Index,
|
|
25
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.STRING),
|
|
26
|
-
__metadata("design:type", String)
|
|
27
|
-
], DriveFolderModel.prototype, "name", void 0);
|
|
28
|
-
__decorate([
|
|
29
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.STRING),
|
|
30
|
-
__metadata("design:type", String)
|
|
31
|
-
], DriveFolderModel.prototype, "status", void 0);
|
|
32
|
-
__decorate([
|
|
33
|
-
sequelize_typescript_1.Unique,
|
|
34
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.UUIDV4),
|
|
35
|
-
__metadata("design:type", String)
|
|
36
|
-
], DriveFolderModel.prototype, "uuid", void 0);
|
|
37
|
-
__decorate([
|
|
38
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.TEXT),
|
|
39
|
-
__metadata("design:type", String)
|
|
40
|
-
], DriveFolderModel.prototype, "relativePath", void 0);
|
|
41
|
-
__decorate([
|
|
42
|
-
sequelize_typescript_1.AllowNull,
|
|
43
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.INTEGER),
|
|
44
|
-
__metadata("design:type", Object)
|
|
45
|
-
], DriveFolderModel.prototype, "parentId", void 0);
|
|
46
|
-
__decorate([
|
|
47
|
-
sequelize_typescript_1.AllowNull,
|
|
48
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.UUIDV4),
|
|
49
|
-
__metadata("design:type", Object)
|
|
50
|
-
], DriveFolderModel.prototype, "parentUuid", void 0);
|
|
51
|
-
__decorate([
|
|
52
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.DATE),
|
|
53
|
-
__metadata("design:type", Date)
|
|
54
|
-
], DriveFolderModel.prototype, "createdAt", void 0);
|
|
55
|
-
__decorate([
|
|
56
|
-
(0, sequelize_typescript_1.Column)(sequelize_typescript_1.DataType.DATE),
|
|
57
|
-
__metadata("design:type", Date)
|
|
58
|
-
], DriveFolderModel.prototype, "updatedAt", void 0);
|
|
59
|
-
exports.DriveFolderModel = DriveFolderModel = __decorate([
|
|
60
|
-
(0, sequelize_typescript_1.Table)({
|
|
61
|
-
underscored: true,
|
|
62
|
-
tableName: 'folders',
|
|
63
|
-
})
|
|
64
|
-
], DriveFolderModel);
|
|
65
|
-
exports.default = DriveFolderModel;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DriveFolderItem } from '../../../types/drive.types';
|
|
2
|
-
import { DriveFolder } from './drive-folder.domain';
|
|
3
|
-
import { DriveFolderModel } from './drive-folder.model';
|
|
4
|
-
export declare class DriveFolderRepository {
|
|
5
|
-
findByRelativePath: (relativePath: DriveFolder["relativePath"]) => Promise<DriveFolder | null>;
|
|
6
|
-
findById: (id: DriveFolder["id"]) => Promise<DriveFolder | null>;
|
|
7
|
-
deleteById: (id: DriveFolder["id"]) => Promise<void>;
|
|
8
|
-
createFolder: (driveFolderItem: DriveFolderItem, relativePath: string) => Promise<DriveFolder>;
|
|
9
|
-
toDomain: (model: DriveFolderModel) => DriveFolder;
|
|
10
|
-
static readonly clean: () => Promise<void>;
|
|
11
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DriveFolderRepository = void 0;
|
|
4
|
-
const drive_folder_domain_1 = require("./drive-folder.domain");
|
|
5
|
-
const drive_folder_model_1 = require("./drive-folder.model");
|
|
6
|
-
class DriveFolderRepository {
|
|
7
|
-
findByRelativePath = async (relativePath) => {
|
|
8
|
-
const folder = await drive_folder_model_1.DriveFolderModel.findOne({
|
|
9
|
-
where: {
|
|
10
|
-
relativePath,
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
return folder ? this.toDomain(folder) : null;
|
|
14
|
-
};
|
|
15
|
-
findById = async (id) => {
|
|
16
|
-
const folder = await drive_folder_model_1.DriveFolderModel.findByPk(id);
|
|
17
|
-
return folder ? this.toDomain(folder) : null;
|
|
18
|
-
};
|
|
19
|
-
deleteById = async (id) => {
|
|
20
|
-
await drive_folder_model_1.DriveFolderModel.destroy({ where: { id } });
|
|
21
|
-
};
|
|
22
|
-
createFolder = async (driveFolderItem, relativePath) => {
|
|
23
|
-
const driveFolder = drive_folder_domain_1.DriveFolder.build({
|
|
24
|
-
...driveFolderItem,
|
|
25
|
-
relativePath,
|
|
26
|
-
});
|
|
27
|
-
const newFolder = await drive_folder_model_1.DriveFolderModel.create({ ...driveFolder.toJSON() });
|
|
28
|
-
return this.toDomain(newFolder);
|
|
29
|
-
};
|
|
30
|
-
toDomain = (model) => {
|
|
31
|
-
const driveFolder = drive_folder_domain_1.DriveFolder.build({
|
|
32
|
-
...model.toJSON(),
|
|
33
|
-
});
|
|
34
|
-
return driveFolder;
|
|
35
|
-
};
|
|
36
|
-
static clean = () => {
|
|
37
|
-
return drive_folder_model_1.DriveFolderModel.drop();
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
exports.DriveFolderRepository = DriveFolderRepository;
|