@trafficgroup/knex-rel 0.1.9 → 0.1.11-rc0
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/.claude/settings.local.json +5 -2
- package/CLAUDE.md +2 -11
- package/dist/constants/video.constants.d.ts +12 -0
- package/dist/constants/video.constants.js +22 -0
- package/dist/constants/video.constants.js.map +1 -0
- package/dist/dao/chat/chat.dao.d.ts +4 -1
- package/dist/dao/chat/chat.dao.js +21 -12
- package/dist/dao/chat/chat.dao.js.map +1 -1
- package/dist/dao/user-push-notification-token/user-push-notification-token.dao.js.map +1 -1
- package/dist/dao/video/video.dao.d.ts +2 -1
- package/dist/dao/video/video.dao.js +18 -2
- package/dist/dao/video/video.dao.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/migrations/20250717160737_migration.ts +1 -1
- package/migrations/20250717160908_migration.ts +2 -5
- package/migrations/20250717161310_migration.ts +1 -1
- package/migrations/20250717161406_migration.ts +3 -3
- package/migrations/20250717162431_migration.ts +1 -1
- package/migrations/20250717173228_migration.ts +2 -2
- package/migrations/20250717204731_migration.ts +1 -1
- package/migrations/20250722210109_migration.ts +4 -8
- package/migrations/20250722211019_migration.ts +1 -1
- package/migrations/20250723153852_migration.ts +10 -13
- package/migrations/20250723162257_migration.ts +7 -4
- package/migrations/20250723171109_migration.ts +7 -4
- package/migrations/20250723205331_migration.ts +9 -6
- package/migrations/20250724191345_migration.ts +11 -8
- package/migrations/20250730180932_migration.ts +13 -14
- package/migrations/20250730213625_migration.ts +11 -8
- package/migrations/20250804124509_migration.ts +21 -26
- package/migrations/20250804132053_migration.ts +8 -5
- package/migrations/20250804164518_migration.ts +7 -7
- package/migrations/20250823223016_migration.ts +21 -32
- package/migrations/20250910015452_migration.ts +6 -18
- package/migrations/20250911000000_migration.ts +4 -18
- package/migrations/20250917144153_migration.ts +7 -14
- package/migrations/20250930200521_migration.ts +4 -8
- package/migrations/20251010143500_migration.ts +6 -27
- package/migrations/20251020225758_migration.ts +15 -51
- package/migrations/20251112120000_migration.ts +2 -10
- package/migrations/20251112120200_migration.ts +7 -19
- package/migrations/20251112120300_migration.ts +2 -7
- package/package.json +1 -1
- package/src/constants/video.constants.ts +19 -0
- package/src/d.types.ts +14 -18
- package/src/dao/VideoMinuteResultDAO.ts +49 -72
- package/src/dao/auth/auth.dao.ts +55 -58
- package/src/dao/batch/batch.dao.ts +98 -101
- package/src/dao/camera/camera.dao.ts +121 -124
- package/src/dao/chat/chat.dao.ts +60 -42
- package/src/dao/folder/folder.dao.ts +56 -65
- package/src/dao/location/location.dao.ts +87 -109
- package/src/dao/message/message.dao.ts +32 -32
- package/src/dao/report-configuration/report-configuration.dao.ts +342 -370
- package/src/dao/study/study.dao.ts +63 -88
- package/src/dao/user/user.dao.ts +50 -52
- package/src/dao/user-push-notification-token/user-push-notification-token.dao.ts +49 -83
- package/src/dao/video/video.dao.ts +339 -357
- package/src/entities/BaseEntity.ts +1 -1
- package/src/index.ts +23 -27
- package/src/interfaces/auth/auth.interfaces.ts +10 -10
- package/src/interfaces/batch/batch.interfaces.ts +1 -1
- package/src/interfaces/camera/camera.interfaces.ts +9 -9
- package/src/interfaces/chat/chat.interfaces.ts +4 -4
- package/src/interfaces/folder/folder.interfaces.ts +2 -2
- package/src/interfaces/location/location.interfaces.ts +7 -7
- package/src/interfaces/message/message.interfaces.ts +3 -3
- package/src/interfaces/report-configuration/report-configuration.interfaces.ts +16 -16
- package/src/interfaces/study/study.interfaces.ts +3 -3
- package/src/interfaces/user/user.interfaces.ts +9 -9
- package/src/interfaces/user-push-notification-token/user-push-notification-token.interfaces.ts +9 -9
- package/src/interfaces/video/video.interfaces.ts +34 -34
package/CLAUDE.md
CHANGED
|
@@ -9,21 +9,18 @@ This is `@trafficgroup/knex-rel` - a TypeScript-based Knex.js module for databas
|
|
|
9
9
|
## Development Commands
|
|
10
10
|
|
|
11
11
|
### Building and Formatting
|
|
12
|
-
|
|
13
12
|
- `npm run build` - Compile TypeScript to JavaScript in dist/
|
|
14
13
|
- `npm run format` - Format code with Prettier
|
|
15
14
|
- `npm run clean` - Clean dist/, format, and rebuild
|
|
16
15
|
- `npm test` - Run Jest tests
|
|
17
16
|
|
|
18
17
|
### Database Operations
|
|
19
|
-
|
|
20
18
|
- `npm run migrate:create` - Create a new TypeScript migration file
|
|
21
19
|
- `npm run migrate:deploy` - Run all pending migrations
|
|
22
|
-
- `npm run seed:create` - Create a new TypeScript seed file
|
|
20
|
+
- `npm run seed:create` - Create a new TypeScript seed file
|
|
23
21
|
- `npm run seed:run` - Execute all seed files
|
|
24
22
|
|
|
25
23
|
### Publishing
|
|
26
|
-
|
|
27
24
|
- `npm run npm:publish` - Clean, build, and publish to npm
|
|
28
25
|
|
|
29
26
|
## Architecture
|
|
@@ -31,25 +28,21 @@ This is `@trafficgroup/knex-rel` - a TypeScript-based Knex.js module for databas
|
|
|
31
28
|
### Core Components
|
|
32
29
|
|
|
33
30
|
**KnexManager** (`src/KnexConnection.ts`): Singleton connection manager
|
|
34
|
-
|
|
35
31
|
- `connect(config?, connections?)` - Establish database connection
|
|
36
32
|
- `getConnection()` - Get active connection instance
|
|
37
33
|
- `disconnect()` - Close connection and cleanup
|
|
38
34
|
|
|
39
35
|
**DAO Pattern**: All data access follows the `IBaseDAO<T>` interface with standard CRUD operations:
|
|
40
|
-
|
|
41
36
|
- `create(item)`, `getById(id)`, `getByUuid(uuid)`, `getAll(page, limit)`, `update(id, item)`, `delete(id)`
|
|
42
37
|
- Returns `IDataPaginator<T>` for paginated results
|
|
43
38
|
|
|
44
39
|
**AuthDAO Additional Methods**:
|
|
45
|
-
|
|
46
40
|
- `getByUserId(userId: number)` - Find auth record by user ID
|
|
47
41
|
- `getByEmailToken(emailToken: string)` - Find auth record by email verification/reset token
|
|
48
42
|
|
|
49
43
|
### Entity Structure
|
|
50
44
|
|
|
51
45
|
Each entity has:
|
|
52
|
-
|
|
53
46
|
- Interface in `src/interfaces/[entity]/[entity].interfaces.ts`
|
|
54
47
|
- DAO implementation in `src/dao/[entity]/[entity].dao.ts`
|
|
55
48
|
|
|
@@ -58,15 +51,13 @@ Current entities: User, Study, Folder, Video
|
|
|
58
51
|
### Database Configuration
|
|
59
52
|
|
|
60
53
|
Environment variables (for development):
|
|
61
|
-
|
|
62
54
|
- `SQL_HOST`, `SQL_USER`, `SQL_PASSWORD`, `SQL_DB_NAME`, `SQL_PORT`
|
|
63
55
|
|
|
64
56
|
Environment variables (for staging/production):
|
|
65
|
-
|
|
66
57
|
- `PG_HOST`, `PG_USER`, `PG_PASSWORD`, `PG_DB`, `PG_PORT`
|
|
67
58
|
|
|
68
59
|
Knex configuration supports development, staging, and production environments in `knexfile.ts`.
|
|
69
60
|
|
|
70
61
|
### Migrations
|
|
71
62
|
|
|
72
|
-
Located in `migrations/` directory. Use TypeScript format with timestamp prefixes. Database uses `knex_migrations` table for tracking.
|
|
63
|
+
Located in `migrations/` directory. Use TypeScript format with timestamp prefixes. Database uses `knex_migrations` table for tracking.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Video sorting constants
|
|
3
|
+
* Shared between DAO and API controller to ensure validation consistency
|
|
4
|
+
*/
|
|
5
|
+
export declare const VALID_VIDEO_SORT_FIELDS: readonly ["created_at", "name", "status"];
|
|
6
|
+
export type VideoSortField = (typeof VALID_VIDEO_SORT_FIELDS)[number];
|
|
7
|
+
export declare const VALID_SORT_ORDERS: readonly ["ASC", "DESC"];
|
|
8
|
+
export type SortOrder = (typeof VALID_SORT_ORDERS)[number];
|
|
9
|
+
/**
|
|
10
|
+
* Maps API sort field names to database column names with table aliases
|
|
11
|
+
*/
|
|
12
|
+
export declare const VIDEO_SORT_COLUMN_MAP: Record<VideoSortField, string>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Video sorting constants
|
|
4
|
+
* Shared between DAO and API controller to ensure validation consistency
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.VIDEO_SORT_COLUMN_MAP = exports.VALID_SORT_ORDERS = exports.VALID_VIDEO_SORT_FIELDS = void 0;
|
|
8
|
+
exports.VALID_VIDEO_SORT_FIELDS = [
|
|
9
|
+
"created_at",
|
|
10
|
+
"name",
|
|
11
|
+
"status",
|
|
12
|
+
];
|
|
13
|
+
exports.VALID_SORT_ORDERS = ["ASC", "DESC"];
|
|
14
|
+
/**
|
|
15
|
+
* Maps API sort field names to database column names with table aliases
|
|
16
|
+
*/
|
|
17
|
+
exports.VIDEO_SORT_COLUMN_MAP = {
|
|
18
|
+
created_at: "v.created_at",
|
|
19
|
+
name: "v.name",
|
|
20
|
+
status: "v.status",
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=video.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.constants.js","sourceRoot":"","sources":["../../src/constants/video.constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEU,QAAA,uBAAuB,GAAG;IACrC,YAAY;IACZ,MAAM;IACN,QAAQ;CACA,CAAC;AAGE,QAAA,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC;AAG1D;;GAEG;AACU,QAAA,qBAAqB,GAAmC;IACnE,UAAU,EAAE,cAAc;IAC1B,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,UAAU;CACnB,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { IBaseDAO, IDataPaginator } from "../../d.types";
|
|
2
2
|
import { IChat, IChatCreate, IChatUpdate } from "../../interfaces/chat/chat.interfaces";
|
|
3
|
+
export interface IChatPaginatorResponse extends IDataPaginator<IChat> {
|
|
4
|
+
hasMore: boolean;
|
|
5
|
+
}
|
|
3
6
|
export declare class ChatDAO implements IBaseDAO<IChat> {
|
|
4
7
|
private _knex;
|
|
5
8
|
create(item: IChatCreate): Promise<IChat>;
|
|
@@ -9,5 +12,5 @@ export declare class ChatDAO implements IBaseDAO<IChat> {
|
|
|
9
12
|
update(id: number, item: IChatUpdate): Promise<IChat | null>;
|
|
10
13
|
delete(id: number): Promise<boolean>;
|
|
11
14
|
getByUserId(userId: number, page?: number, limit?: number): Promise<IDataPaginator<IChat>>;
|
|
12
|
-
getActiveByUserId(userId: number, page?: number, limit?: number): Promise<
|
|
15
|
+
getActiveByUserId(userId: number, page?: number, limit?: number, query?: string): Promise<IChatPaginatorResponse>;
|
|
13
16
|
}
|
|
@@ -97,21 +97,29 @@ class ChatDAO {
|
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
getActiveByUserId(userId_1) {
|
|
100
|
-
return __awaiter(this, arguments, void 0, function* (userId, page = 1, limit = 10) {
|
|
100
|
+
return __awaiter(this, arguments, void 0, function* (userId, page = 1, limit = 10, query) {
|
|
101
101
|
const offset = (page - 1) * limit;
|
|
102
|
+
// Build data query
|
|
103
|
+
let dataQuery = this._knex("chat")
|
|
104
|
+
.where("userId", userId)
|
|
105
|
+
.where("status", "active");
|
|
106
|
+
// Build count query
|
|
107
|
+
let countQuery = this._knex("chat")
|
|
108
|
+
.where("userId", userId)
|
|
109
|
+
.where("status", "active");
|
|
110
|
+
// Apply search filter if query is provided
|
|
111
|
+
if (query && query.trim()) {
|
|
112
|
+
const searchTerm = `%${query.trim()}%`;
|
|
113
|
+
dataQuery = dataQuery.where("title", "ILIKE", searchTerm);
|
|
114
|
+
countQuery = countQuery.where("title", "ILIKE", searchTerm);
|
|
115
|
+
}
|
|
102
116
|
const [results, [{ count }]] = yield Promise.all([
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
.where("status", "active")
|
|
106
|
-
.orderBy("created_at", "desc")
|
|
107
|
-
.limit(limit)
|
|
108
|
-
.offset(offset),
|
|
109
|
-
this._knex("chat")
|
|
110
|
-
.where("userId", userId)
|
|
111
|
-
.where("status", "active")
|
|
112
|
-
.count("* as count"),
|
|
117
|
+
dataQuery.orderBy("created_at", "desc").limit(limit).offset(offset),
|
|
118
|
+
countQuery.count("* as count"),
|
|
113
119
|
]);
|
|
114
120
|
const totalCount = parseInt(count);
|
|
121
|
+
const totalPages = Math.ceil(totalCount / limit);
|
|
122
|
+
const hasMore = page < totalPages;
|
|
115
123
|
return {
|
|
116
124
|
success: true,
|
|
117
125
|
data: results,
|
|
@@ -119,7 +127,8 @@ class ChatDAO {
|
|
|
119
127
|
limit,
|
|
120
128
|
count: results.length,
|
|
121
129
|
totalCount,
|
|
122
|
-
totalPages
|
|
130
|
+
totalPages,
|
|
131
|
+
hasMore,
|
|
123
132
|
};
|
|
124
133
|
});
|
|
125
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.dao.js","sourceRoot":"","sources":["../../../src/dao/chat/chat.dao.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAOA,0EAA+C;
|
|
1
|
+
{"version":3,"file":"chat.dao.js","sourceRoot":"","sources":["../../../src/dao/chat/chat.dao.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-push-notification-token.dao.js","sourceRoot":"","sources":["../../../src/dao/user-push-notification-token/user-push-notification-token.dao.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,0EAA+C;AAE/C,MAAa,4BAA4B;IAAzC;
|
|
1
|
+
{"version":3,"file":"user-push-notification-token.dao.js","sourceRoot":"","sources":["../../../src/dao/user-push-notification-token/user-push-notification-token.dao.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Knex } from "knex";
|
|
2
2
|
import { IBaseDAO, IDataPaginator } from "../../d.types";
|
|
3
3
|
import { IVideo } from "../../interfaces/video/video.interfaces";
|
|
4
|
+
import { VideoSortField, SortOrder } from "../../constants/video.constants";
|
|
4
5
|
export declare class VideoDAO implements IBaseDAO<IVideo> {
|
|
5
6
|
private _knex;
|
|
6
7
|
static getInstance(): Knex<any, unknown[]>;
|
|
@@ -9,7 +10,7 @@ export declare class VideoDAO implements IBaseDAO<IVideo> {
|
|
|
9
10
|
getByUuid(uuid: string): Promise<IVideo | null>;
|
|
10
11
|
update(id: number, item: Partial<IVideo>): Promise<IVideo | null>;
|
|
11
12
|
delete(id: number): Promise<boolean>;
|
|
12
|
-
getAll(page: number, limit: number, folderId?: number | null): Promise<IDataPaginator<IVideo>>;
|
|
13
|
+
getAll(page: number, limit: number, folderId?: number | null, sortBy?: VideoSortField, sortOrder?: SortOrder): Promise<IDataPaginator<IVideo>>;
|
|
13
14
|
getVideoStatsByFolderIds(folderIds: number[]): Promise<{
|
|
14
15
|
total_videos: number;
|
|
15
16
|
completed_videos: number;
|
|
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.VideoDAO = void 0;
|
|
16
16
|
const KnexConnection_1 = __importDefault(require("../../KnexConnection"));
|
|
17
|
+
const video_constants_1 = require("../../constants/video.constants");
|
|
17
18
|
class VideoDAO {
|
|
18
19
|
constructor() {
|
|
19
20
|
this._knex = KnexConnection_1.default.getConnection();
|
|
@@ -65,9 +66,20 @@ class VideoDAO {
|
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
// entityId corresponde al id del folder al que pertenece el video
|
|
68
|
-
getAll(page, limit, folderId) {
|
|
69
|
+
getAll(page, limit, folderId, sortBy, sortOrder) {
|
|
69
70
|
return __awaiter(this, void 0, void 0, function* () {
|
|
70
71
|
const offset = (page - 1) * limit;
|
|
72
|
+
// Validate and set defaults for sorting (defensive programming)
|
|
73
|
+
const sortField = (sortBy || "name");
|
|
74
|
+
if (!video_constants_1.VALID_VIDEO_SORT_FIELDS.includes(sortField)) {
|
|
75
|
+
throw new Error(`Invalid sortBy value: ${sortField}. Must be one of: ${video_constants_1.VALID_VIDEO_SORT_FIELDS.join(", ")}`);
|
|
76
|
+
}
|
|
77
|
+
const sortDirection = (sortOrder || "DESC").toUpperCase();
|
|
78
|
+
if (!video_constants_1.VALID_SORT_ORDERS.includes(sortDirection)) {
|
|
79
|
+
throw new Error(`Invalid sortOrder value: ${sortOrder}. Must be one of: ${video_constants_1.VALID_SORT_ORDERS.join(", ")}`);
|
|
80
|
+
}
|
|
81
|
+
// Map sortBy to database column with table alias
|
|
82
|
+
const sortColumn = video_constants_1.VIDEO_SORT_COLUMN_MAP[sortField];
|
|
71
83
|
const query = this._knex("video as v")
|
|
72
84
|
.innerJoin("folders as f", "v.folderId", "f.id")
|
|
73
85
|
.leftJoin("cameras as c", "v.cameraId", "c.id")
|
|
@@ -77,7 +89,11 @@ class VideoDAO {
|
|
|
77
89
|
}
|
|
78
90
|
const [countResult] = yield query.clone().clearSelect().count("* as count");
|
|
79
91
|
const totalCount = +countResult.count;
|
|
80
|
-
const videos = yield query
|
|
92
|
+
const videos = yield query
|
|
93
|
+
.clone()
|
|
94
|
+
.orderBy(sortColumn, sortDirection.toLowerCase())
|
|
95
|
+
.limit(limit)
|
|
96
|
+
.offset(offset);
|
|
81
97
|
return {
|
|
82
98
|
success: true,
|
|
83
99
|
data: videos,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.dao.js","sourceRoot":"","sources":["../../../src/dao/video/video.dao.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,0EAA+C;
|
|
1
|
+
{"version":3,"file":"video.dao.js","sourceRoot":"","sources":["../../../src/dao/video/video.dao.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { AuthDAO } from "./dao/auth/auth.dao";
|
|
2
2
|
export { BatchDAO } from "./dao/batch/batch.dao";
|
|
3
3
|
export { CameraDAO } from "./dao/camera/camera.dao";
|
|
4
|
-
export { ChatDAO } from "./dao/chat/chat.dao";
|
|
4
|
+
export { ChatDAO, IChatPaginatorResponse } from "./dao/chat/chat.dao";
|
|
5
5
|
export { FolderDAO } from "./dao/folder/folder.dao";
|
|
6
6
|
export { LocationDAO } from "./dao/location/location.dao";
|
|
7
7
|
export { MessageDAO } from "./dao/message/message.dao";
|
|
@@ -11,6 +11,8 @@ export { UserDAO } from "./dao/user/user.dao";
|
|
|
11
11
|
export { UserPushNotificationTokenDAO } from "./dao/user-push-notification-token/user-push-notification-token.dao";
|
|
12
12
|
export { VideoDAO } from "./dao/video/video.dao";
|
|
13
13
|
export { VideoMinuteResultDAO } from "./dao/VideoMinuteResultDAO";
|
|
14
|
+
export { VALID_VIDEO_SORT_FIELDS, VALID_SORT_ORDERS, VIDEO_SORT_COLUMN_MAP, } from "./constants/video.constants";
|
|
15
|
+
export type { VideoSortField, SortOrder } from "./constants/video.constants";
|
|
14
16
|
export { IDataPaginator } from "./d.types";
|
|
15
17
|
export { IAuth } from "./interfaces/auth/auth.interfaces";
|
|
16
18
|
export { IBatch } from "./interfaces/batch/batch.interfaces";
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.KnexManager = exports.VideoMinuteResultDAO = exports.VideoDAO = exports.UserPushNotificationTokenDAO = exports.UserDAO = exports.StudyDAO = exports.ReportConfigurationDAO = exports.MessageDAO = exports.LocationDAO = exports.FolderDAO = exports.ChatDAO = exports.CameraDAO = exports.BatchDAO = exports.AuthDAO = void 0;
|
|
6
|
+
exports.KnexManager = exports.VIDEO_SORT_COLUMN_MAP = exports.VALID_SORT_ORDERS = exports.VALID_VIDEO_SORT_FIELDS = exports.VideoMinuteResultDAO = exports.VideoDAO = exports.UserPushNotificationTokenDAO = exports.UserDAO = exports.StudyDAO = exports.ReportConfigurationDAO = exports.MessageDAO = exports.LocationDAO = exports.FolderDAO = exports.ChatDAO = exports.CameraDAO = exports.BatchDAO = exports.AuthDAO = void 0;
|
|
7
7
|
// DAOs
|
|
8
8
|
var auth_dao_1 = require("./dao/auth/auth.dao");
|
|
9
9
|
Object.defineProperty(exports, "AuthDAO", { enumerable: true, get: function () { return auth_dao_1.AuthDAO; } });
|
|
@@ -31,6 +31,11 @@ var video_dao_1 = require("./dao/video/video.dao");
|
|
|
31
31
|
Object.defineProperty(exports, "VideoDAO", { enumerable: true, get: function () { return video_dao_1.VideoDAO; } });
|
|
32
32
|
var VideoMinuteResultDAO_1 = require("./dao/VideoMinuteResultDAO");
|
|
33
33
|
Object.defineProperty(exports, "VideoMinuteResultDAO", { enumerable: true, get: function () { return VideoMinuteResultDAO_1.VideoMinuteResultDAO; } });
|
|
34
|
+
// Constants
|
|
35
|
+
var video_constants_1 = require("./constants/video.constants");
|
|
36
|
+
Object.defineProperty(exports, "VALID_VIDEO_SORT_FIELDS", { enumerable: true, get: function () { return video_constants_1.VALID_VIDEO_SORT_FIELDS; } });
|
|
37
|
+
Object.defineProperty(exports, "VALID_SORT_ORDERS", { enumerable: true, get: function () { return video_constants_1.VALID_SORT_ORDERS; } });
|
|
38
|
+
Object.defineProperty(exports, "VIDEO_SORT_COLUMN_MAP", { enumerable: true, get: function () { return video_constants_1.VIDEO_SORT_COLUMN_MAP; } });
|
|
34
39
|
const KnexConnection_1 = __importDefault(require("./KnexConnection"));
|
|
35
40
|
exports.KnexManager = KnexConnection_1.default;
|
|
36
41
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO;AACP,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AAChB,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,sDAAoD;AAA3C,uGAAA,SAAS,OAAA;AAClB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO;AACP,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AAChB,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,sDAAoD;AAA3C,uGAAA,SAAS,OAAA;AAClB,gDAAsE;AAA7D,mGAAA,OAAO,OAAA;AAChB,sDAAoD;AAA3C,uGAAA,SAAS,OAAA;AAClB,4DAA0D;AAAjD,2GAAA,WAAW,OAAA;AACpB,yDAAuD;AAA9C,yGAAA,UAAU,OAAA;AACnB,gGAA6F;AAApF,kIAAA,sBAAsB,OAAA;AAC/B,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,gDAA8C;AAArC,mGAAA,OAAO,OAAA;AAChB,wHAAmH;AAA1G,gJAAA,4BAA4B,OAAA;AACrC,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,mEAAkE;AAAzD,4HAAA,oBAAoB,OAAA;AAE7B,YAAY;AACZ,+DAIqC;AAHnC,0HAAA,uBAAuB,OAAA;AACvB,oHAAA,iBAAiB,OAAA;AACjB,wHAAA,qBAAqB,OAAA;AA8CvB,sEAA2C;AAClC,sBADF,wBAAW,CACE"}
|
|
@@ -13,10 +13,7 @@ export async function up(knex: Knex): Promise<void> {
|
|
|
13
13
|
.inTable("user")
|
|
14
14
|
.onDelete("CASCADE");
|
|
15
15
|
|
|
16
|
-
table
|
|
17
|
-
.enu("status", ["COMPLETE", "IN PROGRESS", "FAILED"])
|
|
18
|
-
.notNullable()
|
|
19
|
-
.defaultTo("IN PROGRESS");
|
|
16
|
+
table.enu("status", ["COMPLETE", "IN PROGRESS", "FAILED"]).notNullable().defaultTo("IN PROGRESS");
|
|
20
17
|
|
|
21
18
|
table.timestamps(true, true); // created_at, updated_at
|
|
22
19
|
});
|
|
@@ -24,4 +21,4 @@ export async function up(knex: Knex): Promise<void> {
|
|
|
24
21
|
|
|
25
22
|
export async function down(knex: Knex): Promise<void> {
|
|
26
23
|
await knex.schema.dropTableIfExists("study");
|
|
27
|
-
}
|
|
24
|
+
}
|
|
@@ -19,13 +19,13 @@ export async function up(knex: Knex): Promise<void> {
|
|
|
19
19
|
.enu("videoType", ["TMC", "ATR", "JUNCTION", "ROUNDABOUT", "PATHWAY"])
|
|
20
20
|
.notNullable();
|
|
21
21
|
|
|
22
|
-
table.jsonb("metadata").defaultTo(
|
|
22
|
+
table.jsonb("metadata").defaultTo('{}');
|
|
23
23
|
table
|
|
24
24
|
.enu("status", ["QUEUED", "PROCESSING", "COMPLETED", "FAILED"])
|
|
25
25
|
.notNullable()
|
|
26
26
|
.defaultTo("QUEUE");
|
|
27
27
|
|
|
28
|
-
table.jsonb("results").defaultTo(
|
|
28
|
+
table.jsonb("results").defaultTo('{}');
|
|
29
29
|
|
|
30
30
|
table.timestamps(true, true);
|
|
31
31
|
});
|
|
@@ -33,4 +33,4 @@ export async function up(knex: Knex): Promise<void> {
|
|
|
33
33
|
|
|
34
34
|
export async function down(knex: Knex): Promise<void> {
|
|
35
35
|
await knex.schema.dropTableIfExists("video");
|
|
36
|
-
}
|
|
36
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Knex } from "knex";
|
|
2
2
|
|
|
3
3
|
export async function up(knex: Knex): Promise<void> {
|
|
4
|
-
|
|
4
|
+
await knex.schema.renameTable("user", "users");
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
export async function down(knex: Knex): Promise<void> {
|
|
8
|
-
|
|
8
|
+
await knex.schema.renameTable("users", "user");
|
|
9
9
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { Knex } from "knex";
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
export async function up(knex: Knex): Promise<void> {
|
|
4
5
|
// 1. Crear el tipo ENUM nativo
|
|
5
|
-
await knex.raw(
|
|
6
|
-
`CREATE TYPE "video_status" AS ENUM ('QUEUED', 'PROCESSING', 'COMPLETED', 'FAILED', 'PENDING');`,
|
|
7
|
-
);
|
|
6
|
+
await knex.raw(`CREATE TYPE "video_status" AS ENUM ('QUEUED', 'PROCESSING', 'COMPLETED', 'FAILED', 'PENDING');`);
|
|
8
7
|
|
|
9
8
|
// 2. Normalizar los valores existentes
|
|
10
9
|
await knex.raw(`
|
|
@@ -54,11 +53,8 @@ export async function down(knex: Knex): Promise<void> {
|
|
|
54
53
|
await knex.schema.alterTable("video", (table) => {
|
|
55
54
|
table.dropColumn("progress");
|
|
56
55
|
table.dropColumn("remainingTime");
|
|
57
|
-
table
|
|
58
|
-
.specificType("status", "varchar(255)")
|
|
59
|
-
.notNullable()
|
|
60
|
-
.defaultTo("QUEUED")
|
|
61
|
-
.alter();
|
|
56
|
+
table.specificType("status", "varchar(255)").notNullable().defaultTo("QUEUED").alter();
|
|
62
57
|
});
|
|
63
58
|
await knex.raw('DROP TYPE IF EXISTS "video_status";');
|
|
64
59
|
}
|
|
60
|
+
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import type { Knex } from "knex";
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
export async function up(knex: Knex): Promise<void> {
|
|
4
|
-
await knex.schema.createTable(
|
|
5
|
-
table.increments(
|
|
6
|
-
table
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
.references("id")
|
|
11
|
-
.inTable("users")
|
|
12
|
-
.onDelete("CASCADE");
|
|
13
|
-
table.string("password", 255).notNullable();
|
|
14
|
-
table.boolean("twofaEnabled").notNullable().defaultTo(false);
|
|
15
|
-
table.string("twofaSecret", 255).nullable();
|
|
5
|
+
await knex.schema.createTable('auth', (table) => {
|
|
6
|
+
table.increments('id').primary();
|
|
7
|
+
table.integer('userId').unsigned().notNullable().references('id').inTable('users').onDelete('CASCADE');
|
|
8
|
+
table.string('password', 255).notNullable();
|
|
9
|
+
table.boolean('twofaEnabled').notNullable().defaultTo(false);
|
|
10
|
+
table.string('twofaSecret', 255).nullable();
|
|
16
11
|
table.timestamps(true, true);
|
|
17
12
|
});
|
|
18
13
|
}
|
|
19
14
|
|
|
15
|
+
|
|
20
16
|
export async function down(knex: Knex): Promise<void> {
|
|
21
|
-
await knex.schema.dropTableIfExists(
|
|
17
|
+
await knex.schema.dropTableIfExists('auth');
|
|
22
18
|
}
|
|
19
|
+
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import type { Knex } from "knex";
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
export async function up(knex: Knex): Promise<void> {
|
|
4
|
-
await knex.schema.alterTable(
|
|
5
|
-
table.boolean(
|
|
5
|
+
await knex.schema.alterTable('video', (table) => {
|
|
6
|
+
table.boolean('generateVideoOutput').notNullable().defaultTo(false);
|
|
6
7
|
});
|
|
7
8
|
}
|
|
8
9
|
|
|
10
|
+
|
|
9
11
|
export async function down(knex: Knex): Promise<void> {
|
|
10
|
-
await knex.schema.alterTable(
|
|
11
|
-
table.dropColumn(
|
|
12
|
+
await knex.schema.alterTable('video', (table) => {
|
|
13
|
+
table.dropColumn('generateVideoOutput');
|
|
12
14
|
});
|
|
13
15
|
}
|
|
16
|
+
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import type { Knex } from "knex";
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
export async function up(knex: Knex): Promise<void> {
|
|
4
|
-
await knex.schema.alterTable(
|
|
5
|
-
table.string(
|
|
5
|
+
await knex.schema.alterTable('video', (table) => {
|
|
6
|
+
table.string('videoOutputLocation').nullable();
|
|
6
7
|
});
|
|
7
8
|
}
|
|
8
9
|
|
|
10
|
+
|
|
9
11
|
export async function down(knex: Knex): Promise<void> {
|
|
10
|
-
await knex.schema.alterTable(
|
|
11
|
-
table.dropColumn(
|
|
12
|
+
await knex.schema.alterTable('video', (table) => {
|
|
13
|
+
table.dropColumn('videoOutputLocation');
|
|
12
14
|
});
|
|
13
15
|
}
|
|
16
|
+
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { Knex } from "knex";
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
export async function up(knex: Knex): Promise<void> {
|
|
4
|
-
await knex.schema.alterTable(
|
|
5
|
-
table.string(
|
|
6
|
-
table.boolean(
|
|
5
|
+
await knex.schema.alterTable('auth', (table) => {
|
|
6
|
+
table.string('emailToken', 255).nullable();
|
|
7
|
+
table.boolean('emailVerified').notNullable().defaultTo(false);
|
|
7
8
|
});
|
|
8
9
|
}
|
|
9
10
|
|
|
11
|
+
|
|
10
12
|
export async function down(knex: Knex): Promise<void> {
|
|
11
|
-
await knex.schema.alterTable(
|
|
12
|
-
table.dropColumn(
|
|
13
|
-
table.dropColumn(
|
|
13
|
+
await knex.schema.alterTable('auth', (table) => {
|
|
14
|
+
table.dropColumn('emailToken');
|
|
15
|
+
table.dropColumn('emailVerified');
|
|
14
16
|
});
|
|
15
17
|
}
|
|
18
|
+
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { Knex } from "knex";
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
export async function up(knex: Knex): Promise<void> {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
await knex.schema.alterTable('users', (table) => {
|
|
6
|
+
table.string('profilePhoto').nullable();
|
|
7
|
+
table.string('company').nullable();
|
|
8
|
+
});
|
|
8
9
|
}
|
|
9
10
|
|
|
11
|
+
|
|
10
12
|
export async function down(knex: Knex): Promise<void> {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
await knex.schema.alterTable('users', (table) => {
|
|
14
|
+
table.dropColumn('profilePhoto');
|
|
15
|
+
table.dropColumn('company');
|
|
16
|
+
});
|
|
15
17
|
}
|
|
18
|
+
|