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.
Files changed (3) hide show
  1. package/models/Folders.js +113 -34
  2. package/package.json +21 -1
  3. 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
- const Folders = sequelize.define("Folders", {
3
- id: {
4
- type: DataTypes.STRING,
5
- primaryKey: true,
6
- },
7
- ParentFolder: {
8
- type: DataTypes.STRING, // Self-referencing folder ID
9
- allowNull: true,
10
- },
11
- ParentFolders: {
12
- type: DataTypes.ARRAY(DataTypes.STRING), // Array of folder IDs
13
- allowNull: true,
14
- },
15
- name: {
16
- type: DataTypes.STRING,
17
- allowNull: false,
18
- },
19
- FilesCount: {
20
- type: DataTypes.INTEGER,
21
- allowNull: true,
22
- defaultValue: 0,
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
- Folders.associate = function (models) {
27
- // One-to-many: A folder can have many files
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
- {"name":"agrs-sequelize-sdk","version":"1.0.6","main":"index.js","scripts":{"start":"node index.js","sync":"node services/sequelizeService.js","test":"echo \"Error: no test specified\" \u0026\u0026 exit 1"},"keywords":[],"author":"","license":"ISC","description":"","dependencies":{"pg":"^8.13.0","pg-hstore":"^2.3.4","sequelize":"^6.37.4"}}
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 -Compress | Set-Content -Path "package.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