@trafficgroup/knex-rel 0.1.23-rc.0 → 0.1.23

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.
@@ -8,6 +8,16 @@ export declare class BatchDAO implements IBaseDAO<IBatch> {
8
8
  update(id: number, item: Partial<IBatch>): Promise<IBatch | null>;
9
9
  delete(id: number): Promise<boolean>;
10
10
  getAll(page: number, limit: number, folderId?: number | null): Promise<IDataPaginator<IBatch>>;
11
+ /**
12
+ * Atomically increment completedVideos counter with row-level locking.
13
+ * Returns the updated batch with fresh counters.
14
+ */
15
+ incrementCompleted(id: number): Promise<IBatch>;
16
+ /**
17
+ * Atomically increment failedVideos counter with row-level locking.
18
+ * Returns the updated batch with fresh counters.
19
+ */
20
+ incrementFailed(id: number): Promise<IBatch>;
11
21
  /**
12
22
  * Get batches by folder ID
13
23
  */
@@ -79,6 +79,54 @@ class BatchDAO {
79
79
  };
80
80
  });
81
81
  }
82
+ /**
83
+ * Atomically increment completedVideos counter with row-level locking.
84
+ * Returns the updated batch with fresh counters.
85
+ */
86
+ incrementCompleted(id) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ return this._knex.transaction((trx) => __awaiter(this, void 0, void 0, function* () {
89
+ const batch = yield trx("video_batch")
90
+ .where({ id })
91
+ .forUpdate()
92
+ .first();
93
+ if (!batch)
94
+ throw new Error(`Batch ${id} not found`);
95
+ const newCompleted = batch.completedVideos + 1;
96
+ yield trx("video_batch")
97
+ .where({ id })
98
+ .update({
99
+ completedVideos: newCompleted,
100
+ updated_at: trx.fn.now()
101
+ });
102
+ return Object.assign(Object.assign({}, batch), { completedVideos: newCompleted });
103
+ }));
104
+ });
105
+ }
106
+ /**
107
+ * Atomically increment failedVideos counter with row-level locking.
108
+ * Returns the updated batch with fresh counters.
109
+ */
110
+ incrementFailed(id) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ return this._knex.transaction((trx) => __awaiter(this, void 0, void 0, function* () {
113
+ const batch = yield trx("video_batch")
114
+ .where({ id })
115
+ .forUpdate()
116
+ .first();
117
+ if (!batch)
118
+ throw new Error(`Batch ${id} not found`);
119
+ const newFailed = batch.failedVideos + 1;
120
+ yield trx("video_batch")
121
+ .where({ id })
122
+ .update({
123
+ failedVideos: newFailed,
124
+ updated_at: trx.fn.now()
125
+ });
126
+ return Object.assign(Object.assign({}, batch), { failedVideos: newFailed });
127
+ }));
128
+ });
129
+ }
82
130
  /**
83
131
  * Get batches by folder ID
84
132
  */
@@ -1 +1 @@
1
- {"version":3,"file":"batch.dao.js","sourceRoot":"","sources":["../../../src/dao/batch/batch.dao.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch.dao.js","sourceRoot":"","sources":["../../../src/dao/batch/batch.dao.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trafficgroup/knex-rel",
3
- "version": "0.1.23-rc.0",
3
+ "version": "0.1.23",
4
4
  "description": "Knex Module",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -64,6 +64,58 @@ export class BatchDAO implements IBaseDAO<IBatch> {
64
64
  };
65
65
  }
66
66
 
67
+ /**
68
+ * Atomically increment completedVideos counter with row-level locking.
69
+ * Returns the updated batch with fresh counters.
70
+ */
71
+ async incrementCompleted(id: number): Promise<IBatch> {
72
+ return this._knex.transaction(async (trx) => {
73
+ const batch = await trx("video_batch")
74
+ .where({ id })
75
+ .forUpdate()
76
+ .first();
77
+
78
+ if (!batch) throw new Error(`Batch ${id} not found`);
79
+
80
+ const newCompleted = batch.completedVideos + 1;
81
+
82
+ await trx("video_batch")
83
+ .where({ id })
84
+ .update({
85
+ completedVideos: newCompleted,
86
+ updated_at: trx.fn.now()
87
+ });
88
+
89
+ return { ...batch, completedVideos: newCompleted };
90
+ });
91
+ }
92
+
93
+ /**
94
+ * Atomically increment failedVideos counter with row-level locking.
95
+ * Returns the updated batch with fresh counters.
96
+ */
97
+ async incrementFailed(id: number): Promise<IBatch> {
98
+ return this._knex.transaction(async (trx) => {
99
+ const batch = await trx("video_batch")
100
+ .where({ id })
101
+ .forUpdate()
102
+ .first();
103
+
104
+ if (!batch) throw new Error(`Batch ${id} not found`);
105
+
106
+ const newFailed = batch.failedVideos + 1;
107
+
108
+ await trx("video_batch")
109
+ .where({ id })
110
+ .update({
111
+ failedVideos: newFailed,
112
+ updated_at: trx.fn.now()
113
+ });
114
+
115
+ return { ...batch, failedVideos: newFailed };
116
+ });
117
+ }
118
+
67
119
  /**
68
120
  * Get batches by folder ID
69
121
  */