agrs-sequelize-sdk 1.0.6 → 1.0.7
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/models/Folders.js +113 -34
- package/package.json +21 -1
- package/run.ps1 +2 -2
package/models/Folders.js
CHANGED
|
@@ -1,37 +1,116 @@
|
|
|
1
|
+
const Files = require('./Files');
|
|
1
2
|
module.exports = (sequelize, DataTypes) => {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
3
|
+
const Folders = sequelize.define("Folders", {
|
|
4
|
+
id: {
|
|
5
|
+
type: DataTypes.STRING,
|
|
6
|
+
primaryKey: true,
|
|
7
|
+
},
|
|
8
|
+
ParentFolder: {
|
|
9
|
+
type: DataTypes.STRING, // Self-referencing folder ID
|
|
10
|
+
allowNull: true,
|
|
11
|
+
},
|
|
12
|
+
ParentFolders: {
|
|
13
|
+
type: DataTypes.ARRAY(DataTypes.STRING), // Array of folder IDs
|
|
14
|
+
allowNull: true,
|
|
15
|
+
},
|
|
16
|
+
name: {
|
|
17
|
+
type: DataTypes.STRING,
|
|
18
|
+
allowNull: false,
|
|
19
|
+
},
|
|
20
|
+
FilesCount: {
|
|
21
|
+
type: DataTypes.INTEGER,
|
|
22
|
+
allowNull: true,
|
|
23
|
+
defaultValue: 0,
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
Folders.associate = function (models) {
|
|
28
|
+
// One-to-many: A folder can have many files
|
|
29
|
+
Folders.hasMany(models.Files, { foreignKey: "ParentFolder", sourceKey: "id" });
|
|
30
|
+
|
|
31
|
+
// Self-referencing: A folder can have subfolders
|
|
32
|
+
Folders.hasMany(models.Folders, { foreignKey: "ParentFolder", sourceKey: "id" });
|
|
33
|
+
Folders.belongsTo(models.Folders, { foreignKey: "ParentFolder", targetKey: "id" });
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// Function to count files and subfolders for each parent folder in ParentFolders array
|
|
37
|
+
Folders.countFilesAndSubfolders = async function (parentFolderIds) {
|
|
38
|
+
try {
|
|
39
|
+
// Loop through each parent folder ID
|
|
40
|
+
for (const parentFolderId of parentFolderIds) {
|
|
41
|
+
// Find the parent folder by ID
|
|
42
|
+
const parentFolder = await Folders.findOne({ where: { id: parentFolderId } });
|
|
43
|
+
|
|
44
|
+
if (!parentFolder) {
|
|
45
|
+
console.warn(`Folder with ID ${parentFolderId} not found.`);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Count the number of files directly under this folder
|
|
50
|
+
const fileCount = await Files.count({
|
|
51
|
+
where: { ParentFolder: parentFolder.id }
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Count the number of subfolders directly under this folder
|
|
55
|
+
const subfolderCount = await Folders.count({
|
|
56
|
+
where: { ParentFolder: parentFolder.id }
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Total count is files + subfolders
|
|
60
|
+
const totalFilesCount = fileCount + subfolderCount;
|
|
61
|
+
|
|
62
|
+
// Update the FilesCount field in the parent folder
|
|
63
|
+
await parentFolder.update({ FilesCount: totalFilesCount });
|
|
23
64
|
}
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Folders.hasMany(models.Files, { foreignKey: "ParentFolder", sourceKey: "id" });
|
|
29
|
-
|
|
30
|
-
// Self-referencing: A folder can have subfolders
|
|
31
|
-
Folders.hasMany(models.Folders, { foreignKey: "ParentFolder", sourceKey: "id" });
|
|
32
|
-
Folders.belongsTo(models.Folders, { foreignKey: "ParentFolder", targetKey: "id" });
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
return Folders;
|
|
65
|
+
} catch (error) {
|
|
66
|
+
console.error(error);
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
36
69
|
};
|
|
37
|
-
|
|
70
|
+
|
|
71
|
+
// Add a hook that triggers after a folder is created, updated, or deleted
|
|
72
|
+
Folders.addHook('afterCreate', async (folder, options) => {
|
|
73
|
+
if (folder.ParentFolders && folder.ParentFolders.length > 0) {
|
|
74
|
+
await Folders.countFilesAndSubfolders(folder.ParentFolders);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
Folders.addHook('afterDestroy', async (folder, options) => {
|
|
79
|
+
if (folder.ParentFolders && folder.ParentFolders.length > 0) {
|
|
80
|
+
await Folders.countFilesAndSubfolders(folder.ParentFolders);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
Folders.addHook('afterUpdate', async (folder, options) => {
|
|
85
|
+
if (folder.ParentFolders && folder.ParentFolders.length > 0) {
|
|
86
|
+
await Folders.countFilesAndSubfolders(folder.ParentFolders);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// Add hooks for Files
|
|
91
|
+
Files.addHook('afterCreate', async (file, options) => {
|
|
92
|
+
if (file.ParentFolders && file.ParentFolders.length > 0) {
|
|
93
|
+
await Folders.countFilesAndSubfolders(file.ParentFolders);
|
|
94
|
+
} else if (file.ParentFolder) {
|
|
95
|
+
await Folders.countFilesAndSubfolders([file.ParentFolder]);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
Files.addHook('afterDestroy', async (file, options) => {
|
|
100
|
+
if (file.ParentFolders && file.ParentFolders.length > 0) {
|
|
101
|
+
await Folders.countFilesAndSubfolders(file.ParentFolders);
|
|
102
|
+
} else if (file.ParentFolder) {
|
|
103
|
+
await Folders.countFilesAndSubfolders([file.ParentFolder]);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
Files.addHook('afterUpdate', async (file, options) => {
|
|
108
|
+
if (file.ParentFolders && file.ParentFolders.length > 0) {
|
|
109
|
+
await Folders.countFilesAndSubfolders(file.ParentFolders);
|
|
110
|
+
} else if (file.ParentFolder) {
|
|
111
|
+
await Folders.countFilesAndSubfolders([file.ParentFolder]);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
return Folders;
|
|
116
|
+
};
|
package/package.json
CHANGED
|
@@ -1 +1,21 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "agrs-sequelize-sdk",
|
|
3
|
+
"version": "1.0.7",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"start": "node index.js",
|
|
7
|
+
"sync": "node services/sequelizeService.js",
|
|
8
|
+
"test": "echo \"Error: no test specified\" \u0026\u0026 exit 1"
|
|
9
|
+
},
|
|
10
|
+
"keywords": [
|
|
11
|
+
|
|
12
|
+
],
|
|
13
|
+
"author": "",
|
|
14
|
+
"license": "ISC",
|
|
15
|
+
"description": "",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"pg": "^8.13.0",
|
|
18
|
+
"pg-hstore": "^2.3.4",
|
|
19
|
+
"sequelize": "^6.37.4"
|
|
20
|
+
}
|
|
21
|
+
}
|
package/run.ps1
CHANGED
|
@@ -72,9 +72,9 @@ if ($patch -eq 99) {
|
|
|
72
72
|
|
|
73
73
|
$newVersion = "$major.$minor.$patch"
|
|
74
74
|
|
|
75
|
-
# Update the version in package.json
|
|
75
|
+
# Update the version in package.json while maintaining indentation
|
|
76
76
|
$packageJson.version = $newVersion
|
|
77
|
-
$packageJson | ConvertTo-Json -
|
|
77
|
+
$packageJson | ConvertTo-Json -Depth 100 | Set-Content -Path "package.json"
|
|
78
78
|
|
|
79
79
|
Write-Host "Version updated from $currentVersion to $newVersion"
|
|
80
80
|
|