@trafficgroup/knex-rel 0.1.19 → 0.1.20

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 (121) hide show
  1. package/.claude/settings.local.json +2 -5
  2. package/CLAUDE.md +11 -2
  3. package/dist/constants/folder.constants.d.ts +2 -2
  4. package/dist/constants/folder.constants.js +15 -6
  5. package/dist/constants/folder.constants.js.map +1 -1
  6. package/dist/constants/video.constants.d.ts +2 -2
  7. package/dist/constants/video.constants.js +9 -5
  8. package/dist/constants/video.constants.js.map +1 -1
  9. package/dist/dao/VideoMinuteResultDAO.d.ts +1 -1
  10. package/dist/dao/VideoMinuteResultDAO.js +29 -23
  11. package/dist/dao/VideoMinuteResultDAO.js.map +1 -1
  12. package/dist/dao/auth/auth.dao.js +4 -1
  13. package/dist/dao/auth/auth.dao.js.map +1 -1
  14. package/dist/dao/batch/batch.dao.d.ts +10 -0
  15. package/dist/dao/batch/batch.dao.js +51 -14
  16. package/dist/dao/batch/batch.dao.js.map +1 -1
  17. package/dist/dao/camera/camera.dao.js +10 -7
  18. package/dist/dao/camera/camera.dao.js.map +1 -1
  19. package/dist/dao/chat/chat.dao.d.ts +1 -1
  20. package/dist/dao/chat/chat.dao.js +27 -40
  21. package/dist/dao/chat/chat.dao.js.map +1 -1
  22. package/dist/dao/folder/folder.dao.js +18 -7
  23. package/dist/dao/folder/folder.dao.js.map +1 -1
  24. package/dist/dao/location/location.dao.js +16 -9
  25. package/dist/dao/location/location.dao.js.map +1 -1
  26. package/dist/dao/message/message.dao.d.ts +1 -1
  27. package/dist/dao/message/message.dao.js +18 -26
  28. package/dist/dao/message/message.dao.js.map +1 -1
  29. package/dist/dao/report-configuration/report-configuration.dao.js +32 -31
  30. package/dist/dao/report-configuration/report-configuration.dao.js.map +1 -1
  31. package/dist/dao/study/study.dao.d.ts +1 -8
  32. package/dist/dao/study/study.dao.js +11 -20
  33. package/dist/dao/study/study.dao.js.map +1 -1
  34. package/dist/dao/systemConfiguration/SystemConfigurationDAO.d.ts +2 -2
  35. package/dist/dao/systemConfiguration/SystemConfigurationDAO.js +26 -26
  36. package/dist/dao/systemConfiguration/SystemConfigurationDAO.js.map +1 -1
  37. package/dist/dao/user/user.dao.js +4 -1
  38. package/dist/dao/user/user.dao.js.map +1 -1
  39. package/dist/dao/user-push-notification-token/user-push-notification-token.dao.js +26 -8
  40. package/dist/dao/user-push-notification-token/user-push-notification-token.dao.js.map +1 -1
  41. package/dist/dao/video/video.dao.js +30 -28
  42. package/dist/dao/video/video.dao.js.map +1 -1
  43. package/dist/index.d.ts +7 -10
  44. package/dist/index.js +1 -4
  45. package/dist/index.js.map +1 -1
  46. package/dist/interfaces/batch/batch.interfaces.d.ts +1 -1
  47. package/dist/interfaces/camera/camera.interfaces.d.ts +1 -1
  48. package/dist/interfaces/chat/chat.interfaces.d.ts +3 -3
  49. package/dist/interfaces/folder/folder.interfaces.d.ts +1 -1
  50. package/dist/interfaces/message/message.interfaces.d.ts +2 -2
  51. package/dist/interfaces/study/study.interfaces.d.ts +2 -2
  52. package/dist/interfaces/user/user.interfaces.d.ts +1 -1
  53. package/dist/interfaces/user-push-notification-token/user-push-notification-token.interfaces.d.ts +1 -1
  54. package/dist/interfaces/video/video.interfaces.d.ts +2 -2
  55. package/migrations/20250717160737_migration.ts +1 -1
  56. package/migrations/20250717160908_migration.ts +5 -2
  57. package/migrations/20250717161310_migration.ts +1 -1
  58. package/migrations/20250717161406_migration.ts +3 -3
  59. package/migrations/20250717162431_migration.ts +1 -1
  60. package/migrations/20250717173228_migration.ts +2 -2
  61. package/migrations/20250717204731_migration.ts +1 -1
  62. package/migrations/20250722210109_migration.ts +8 -4
  63. package/migrations/20250722211019_migration.ts +1 -1
  64. package/migrations/20250723153852_migration.ts +13 -10
  65. package/migrations/20250723162257_migration.ts +4 -7
  66. package/migrations/20250723171109_migration.ts +4 -7
  67. package/migrations/20250723205331_migration.ts +6 -9
  68. package/migrations/20250724191345_migration.ts +8 -11
  69. package/migrations/20250730180932_migration.ts +14 -13
  70. package/migrations/20250730213625_migration.ts +8 -11
  71. package/migrations/20250804124509_migration.ts +26 -21
  72. package/migrations/20250804132053_migration.ts +5 -8
  73. package/migrations/20250804164518_migration.ts +7 -7
  74. package/migrations/20250823223016_migration.ts +32 -21
  75. package/migrations/20250910015452_migration.ts +18 -6
  76. package/migrations/20250911000000_migration.ts +18 -4
  77. package/migrations/20250917144153_migration.ts +14 -7
  78. package/migrations/20250930200521_migration.ts +8 -4
  79. package/migrations/20251010143500_migration.ts +27 -6
  80. package/migrations/20251020225758_migration.ts +51 -15
  81. package/migrations/20251112120000_migration.ts +10 -2
  82. package/migrations/20251112120200_migration.ts +19 -7
  83. package/migrations/20251112120300_migration.ts +7 -2
  84. package/migrations/20260109140000_migration.ts +7 -2
  85. package/package.json +1 -1
  86. package/src/constants/folder.constants.ts +17 -8
  87. package/src/constants/video.constants.ts +11 -7
  88. package/src/d.types.ts +18 -14
  89. package/src/dao/VideoMinuteResultDAO.ts +83 -52
  90. package/src/dao/auth/auth.dao.ts +58 -55
  91. package/src/dao/batch/batch.dao.ts +145 -100
  92. package/src/dao/camera/camera.dao.ts +124 -121
  93. package/src/dao/chat/chat.dao.ts +45 -45
  94. package/src/dao/folder/folder.dao.ts +105 -90
  95. package/src/dao/location/location.dao.ts +109 -87
  96. package/src/dao/message/message.dao.ts +32 -32
  97. package/src/dao/reconciliation-log/reconciliation-log.dao.ts +1 -1
  98. package/src/dao/report-configuration/report-configuration.dao.ts +370 -342
  99. package/src/dao/study/study.dao.ts +88 -84
  100. package/src/dao/systemConfiguration/SystemConfigurationDAO.ts +41 -35
  101. package/src/dao/user/user.dao.ts +52 -50
  102. package/src/dao/user-push-notification-token/user-push-notification-token.dao.ts +80 -48
  103. package/src/dao/video/video.dao.ts +396 -345
  104. package/src/entities/BaseEntity.ts +1 -1
  105. package/src/index.ts +37 -29
  106. package/src/interfaces/auth/auth.interfaces.ts +10 -10
  107. package/src/interfaces/batch/batch.interfaces.ts +1 -1
  108. package/src/interfaces/camera/camera.interfaces.ts +9 -9
  109. package/src/interfaces/chat/chat.interfaces.ts +4 -4
  110. package/src/interfaces/folder/folder.interfaces.ts +2 -2
  111. package/src/interfaces/location/location.interfaces.ts +7 -7
  112. package/src/interfaces/message/message.interfaces.ts +3 -3
  113. package/src/interfaces/report-configuration/report-configuration.interfaces.ts +16 -16
  114. package/src/interfaces/study/study.interfaces.ts +3 -3
  115. package/src/interfaces/user/user.interfaces.ts +9 -9
  116. package/src/interfaces/user-push-notification-token/user-push-notification-token.interfaces.ts +9 -9
  117. package/src/interfaces/video/video.interfaces.ts +34 -34
  118. package/dist/constants/study.constants.d.ts +0 -10
  119. package/dist/constants/study.constants.js +0 -18
  120. package/dist/constants/study.constants.js.map +0 -1
  121. package/src/constants/study.constants.ts +0 -17
@@ -1,4 +1,4 @@
1
1
  export interface IBaseEntity {
2
2
  id: number;
3
3
  uuid: string;
4
- }
4
+ }
package/src/index.ts CHANGED
@@ -17,44 +17,48 @@ export { VideoMinuteResultDAO } from "./dao/VideoMinuteResultDAO";
17
17
 
18
18
  // Constants
19
19
  export {
20
- VALID_VIDEO_SORT_FIELDS,
21
- VALID_SORT_ORDERS,
22
- VIDEO_SORT_COLUMN_MAP
20
+ VALID_VIDEO_SORT_FIELDS,
21
+ VALID_SORT_ORDERS,
22
+ VIDEO_SORT_COLUMN_MAP,
23
23
  } from "./constants/video.constants";
24
24
  export type { VideoSortField, SortOrder } from "./constants/video.constants";
25
25
 
26
26
  export {
27
- VALID_FOLDER_SORT_FIELDS,
28
- VALID_FOLDER_STATUSES,
29
- FOLDER_SORT_COLUMN_MAP
27
+ VALID_FOLDER_SORT_FIELDS,
28
+ VALID_FOLDER_STATUSES,
29
+ FOLDER_SORT_COLUMN_MAP,
30
+ } from "./constants/folder.constants";
31
+ export type {
32
+ FolderSortField,
33
+ FolderStatus,
30
34
  } from "./constants/folder.constants";
31
- export type { FolderSortField, FolderStatus } from "./constants/folder.constants";
32
-
33
- export {
34
- VALID_STUDY_SORT_FIELDS,
35
- STUDY_SORT_COLUMN_MAP
36
- } from "./constants/study.constants";
37
- export type { StudySortField } from "./constants/study.constants";
38
35
 
39
- // Filters interfaces
36
+ // Folder filters interface
40
37
  export type { IFolderFilters } from "./dao/folder/folder.dao";
41
- export type { IStudyFilters } from "./dao/study/study.dao";
42
38
 
43
39
  // Interfaces
44
40
  export { IDataPaginator } from "./d.types";
45
41
  export { IAuth } from "./interfaces/auth/auth.interfaces";
46
42
  export { IBatch } from "./interfaces/batch/batch.interfaces";
47
43
  export { ICamera } from "./interfaces/camera/camera.interfaces";
48
- export { IChat, IChatCreate, IChatUpdate } from "./interfaces/chat/chat.interfaces";
44
+ export {
45
+ IChat,
46
+ IChatCreate,
47
+ IChatUpdate,
48
+ } from "./interfaces/chat/chat.interfaces";
49
49
  export { IFolder } from "./interfaces/folder/folder.interfaces";
50
50
  export { ILocation } from "./interfaces/location/location.interfaces";
51
- export { IMessage, IMessageCreate, IMessageUpdate } from "./interfaces/message/message.interfaces";
52
51
  export {
53
- IReportConfiguration,
54
- IReportConfigurationData,
55
- IReportConfigurationInput,
56
- ICustomClass,
57
- IValidationResult
52
+ IMessage,
53
+ IMessageCreate,
54
+ IMessageUpdate,
55
+ } from "./interfaces/message/message.interfaces";
56
+ export {
57
+ IReportConfiguration,
58
+ IReportConfigurationData,
59
+ IReportConfigurationInput,
60
+ ICustomClass,
61
+ IValidationResult,
58
62
  } from "./interfaces/report-configuration/report-configuration.interfaces";
59
63
  export { IStudy } from "./interfaces/study/study.interfaces";
60
64
  export { ISystemConfiguration } from "./interfaces/systemConfiguration/ISystemConfiguration";
@@ -62,14 +66,18 @@ export { IUser } from "./interfaces/user/user.interfaces";
62
66
  export { IUserPushNotificationToken } from "./interfaces/user-push-notification-token/user-push-notification-token.interfaces";
63
67
  export { IReconciliationLog } from "./interfaces/reconciliation-log/reconciliation-log.interfaces";
64
68
  export { IVideo, ITrimPeriod } from "./interfaces/video/video.interfaces";
65
- export { IVideoMinuteResult, IVideoMinuteResultInput, IVideoMinuteBatch } from "./entities/VideoMinuteResult";
69
+ export {
70
+ IVideoMinuteResult,
71
+ IVideoMinuteResultInput,
72
+ IVideoMinuteBatch,
73
+ } from "./entities/VideoMinuteResult";
66
74
  export type {
67
- IStudyTimeGroupResult,
68
- IGroupedStudyResponse,
69
- IGroupedResponse,
70
- IGroupedResult,
71
- ITMCResult,
72
- IATRResult,
75
+ IStudyTimeGroupResult,
76
+ IGroupedStudyResponse,
77
+ IGroupedResponse,
78
+ IGroupedResult,
79
+ ITMCResult,
80
+ IATRResult,
73
81
  } from "./dao/VideoMinuteResultDAO";
74
82
 
75
83
  import KnexManager from "./KnexConnection";
@@ -1,11 +1,11 @@
1
1
  export interface IAuth {
2
- id: number;
3
- userId: number;
4
- password: string;
5
- twofaEnabled: boolean;
6
- twofaSecret: string | null;
7
- emailToken: string | null;
8
- emailVerified: boolean;
9
- created_at: string;
10
- updated_at: string;
11
- }
2
+ id: number;
3
+ userId: number;
4
+ password: string;
5
+ twofaEnabled: boolean;
6
+ twofaSecret: string | null;
7
+ emailToken: string | null;
8
+ emailVerified: boolean;
9
+ created_at: string;
10
+ updated_at: string;
11
+ }
@@ -4,7 +4,7 @@ export interface IBatch {
4
4
  id: number;
5
5
  uuid: string;
6
6
  folderId: number;
7
- status: 'PENDING' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED';
7
+ status: "PENDING" | "IN_PROGRESS" | "COMPLETED" | "FAILED";
8
8
  totalVideos: number;
9
9
  completedVideos: number;
10
10
  failedVideos: number;
@@ -1,11 +1,11 @@
1
1
  export interface ICamera {
2
- id: number;
3
- uuid: string;
4
- locationId: number;
5
- name: string;
6
- description?: string;
7
- status: 'ACTIVE' | 'INACTIVE' | 'MAINTENANCE';
8
- metadata: Record<string, any>;
9
- created_at: string;
10
- updated_at: string;
2
+ id: number;
3
+ uuid: string;
4
+ locationId: number;
5
+ name: string;
6
+ description?: string;
7
+ status: "ACTIVE" | "INACTIVE" | "MAINTENANCE";
8
+ metadata: Record<string, any>;
9
+ created_at: string;
10
+ updated_at: string;
11
11
  }
@@ -3,7 +3,7 @@ export interface IChat {
3
3
  uuid?: string;
4
4
  userId: number;
5
5
  title: string;
6
- status?: 'active' | 'archived';
6
+ status?: "active" | "archived";
7
7
  created_at?: Date;
8
8
  updated_at?: Date;
9
9
  }
@@ -11,10 +11,10 @@ export interface IChat {
11
11
  export interface IChatCreate {
12
12
  userId: number;
13
13
  title: string;
14
- status?: 'active' | 'archived';
14
+ status?: "active" | "archived";
15
15
  }
16
16
 
17
17
  export interface IChatUpdate {
18
18
  title?: string;
19
- status?: 'active' | 'archived';
20
- }
19
+ status?: "active" | "archived";
20
+ }
@@ -5,9 +5,9 @@ export interface IFolder {
5
5
  uuid: string;
6
6
  name: string;
7
7
  createdBy: number; // user.id
8
- status: 'UPLOADING' | 'COMPLETE';
8
+ status: "UPLOADING" | "COMPLETE";
9
9
  studyId: number; // study.id
10
10
  created_at: string;
11
11
  updated_at: string;
12
12
  study?: IStudy;
13
- }
13
+ }
@@ -1,9 +1,9 @@
1
1
  export interface ILocation {
2
- id: number;
3
- uuid: string;
4
- name: string;
5
- longitude: number;
6
- latitude: number;
7
- created_at: string;
8
- updated_at: string;
2
+ id: number;
3
+ uuid: string;
4
+ name: string;
5
+ longitude: number;
6
+ latitude: number;
7
+ created_at: string;
8
+ updated_at: string;
9
9
  }
@@ -1,7 +1,7 @@
1
1
  export interface IMessage {
2
2
  id?: number;
3
3
  chatId: number;
4
- role: 'user' | 'assistant';
4
+ role: "user" | "assistant";
5
5
  content: string;
6
6
  created_at?: Date;
7
7
  updated_at?: Date;
@@ -9,10 +9,10 @@ export interface IMessage {
9
9
 
10
10
  export interface IMessageCreate {
11
11
  chatId: number;
12
- role: 'user' | 'assistant';
12
+ role: "user" | "assistant";
13
13
  content: string;
14
14
  }
15
15
 
16
16
  export interface IMessageUpdate {
17
17
  content?: string;
18
- }
18
+ }
@@ -1,30 +1,30 @@
1
1
  export interface IReportConfiguration {
2
- id: number;
3
- uuid: string;
4
- name: string;
5
- description?: string;
6
- configuration: IReportConfigurationData;
7
- created_at: Date;
8
- updated_at: Date;
2
+ id: number;
3
+ uuid: string;
4
+ name: string;
5
+ description?: string;
6
+ configuration: IReportConfigurationData;
7
+ created_at: Date;
8
+ updated_at: Date;
9
9
  }
10
10
 
11
11
  export interface IReportConfigurationData {
12
- version: string;
13
- customClasses: ICustomClass[];
12
+ version: string;
13
+ customClasses: ICustomClass[];
14
14
  }
15
15
 
16
16
  export interface ICustomClass {
17
- name: string; // Max 30 chars
18
- fhwaClasses: number[]; // Array of 1-13
17
+ name: string; // Max 30 chars
18
+ fhwaClasses: number[]; // Array of 1-13
19
19
  }
20
20
 
21
21
  export interface IReportConfigurationInput {
22
- name: string;
23
- description?: string;
24
- configuration: IReportConfigurationData;
22
+ name: string;
23
+ description?: string;
24
+ configuration: IReportConfigurationData;
25
25
  }
26
26
 
27
27
  export interface IValidationResult {
28
- valid: boolean;
29
- errors: string[];
28
+ valid: boolean;
29
+ errors: string[];
30
30
  }
@@ -6,13 +6,13 @@ export interface IStudy {
6
6
  uuid: string;
7
7
  name: string;
8
8
  description?: string;
9
- type: 'TMC' | 'ATR';
9
+ type: "TMC" | "ATR";
10
10
  createdBy: number;
11
11
  locationId?: number;
12
12
  isMultiCamera: boolean;
13
- status: 'COMPLETE' | 'IN PROGRESS' | 'FAILED';
13
+ status: "COMPLETE" | "IN PROGRESS" | "FAILED";
14
14
  created_at: string;
15
15
  updated_at: string;
16
16
  user?: IUser;
17
17
  location?: ILocation;
18
- }
18
+ }
@@ -1,11 +1,11 @@
1
1
  export interface IUser {
2
- id: number;
3
- uuid: string;
4
- email: string;
5
- nombre: string;
6
- role: 'ADMIN' | 'USER';
7
- profilePhoto?: string;
8
- company?: string;
9
- created_at: string;
10
- updated_at: string;
2
+ id: number;
3
+ uuid: string;
4
+ email: string;
5
+ nombre: string;
6
+ role: "ADMIN" | "USER";
7
+ profilePhoto?: string;
8
+ company?: string;
9
+ created_at: string;
10
+ updated_at: string;
11
11
  }
@@ -1,10 +1,10 @@
1
1
  export interface IUserPushNotificationToken {
2
- id: number;
3
- userId: number;
4
- token: string;
5
- available: boolean;
6
- token_type: 'expo' | 'native';
7
- device_type?: string;
8
- created_at: string;
9
- updated_at: string;
10
- }
2
+ id: number;
3
+ userId: number;
4
+ token: string;
5
+ available: boolean;
6
+ token_type: "expo" | "native";
7
+ device_type?: string;
8
+ created_at: string;
9
+ updated_at: string;
10
+ }
@@ -1,44 +1,44 @@
1
1
  import type { IFolder } from "../folder/folder.interfaces";
2
2
 
3
3
  export interface ITrimPeriod {
4
- startTime: string;
5
- endTime: string;
4
+ startTime: string;
5
+ endTime: string;
6
6
  }
7
7
 
8
8
  export interface IVideo {
9
- id: number;
10
- uuid: string;
11
- folderId: number;
12
- annotationSourceId?: number;
13
- cameraId?: number;
14
- name: string;
15
- videoLocation: string;
16
- videoOutputLocation: string | null;
17
- generateVideoOutput: boolean;
18
- videoRate: number;
19
- videoType: 'TMC' | 'ATR' | 'JUNCTION' | 'ROUNDABOUT' | 'PATHWAY';
20
- metadata: Record<string, any>;
21
- status: 'QUEUED' | 'PROCESSING' | 'COMPLETED' | 'FAILED' | 'PENDING';
22
- progress: number;
23
- remainingTime: string;
24
- results: Record<string, any>;
25
- durationSeconds?: number;
9
+ id: number;
10
+ uuid: string;
11
+ folderId: number;
12
+ annotationSourceId?: number;
13
+ cameraId?: number;
14
+ name: string;
15
+ videoLocation: string;
16
+ videoOutputLocation: string | null;
17
+ generateVideoOutput: boolean;
18
+ videoRate: number;
19
+ videoType: "TMC" | "ATR" | "JUNCTION" | "ROUNDABOUT" | "PATHWAY";
20
+ metadata: Record<string, any>;
21
+ status: "QUEUED" | "PROCESSING" | "COMPLETED" | "FAILED" | "PENDING";
22
+ progress: number;
23
+ remainingTime: string;
24
+ results: Record<string, any>;
25
+ durationSeconds?: number;
26
26
 
27
- // HLS streaming support
28
- isHlsEnabled: boolean;
29
- hlsPlaylist: string | null;
30
- videoSizeMB: number | null;
27
+ // HLS streaming support
28
+ isHlsEnabled: boolean;
29
+ hlsPlaylist: string | null;
30
+ videoSizeMB: number | null;
31
31
 
32
- // Enhanced metadata for hybrid streaming
33
- streamingMetadata: Record<string, any> | null;
32
+ // Enhanced metadata for hybrid streaming
33
+ streamingMetadata: Record<string, any> | null;
34
34
 
35
- // Recording start time and video trimming support
36
- recordingStartedAt?: Date;
37
- trimEnabled?: boolean;
38
- trimPeriods?: ITrimPeriod[] | null;
39
- batchId?: number | null;
35
+ // Recording start time and video trimming support
36
+ recordingStartedAt?: Date;
37
+ trimEnabled?: boolean;
38
+ trimPeriods?: ITrimPeriod[] | null;
39
+ batchId?: number | null;
40
40
 
41
- created_at: string;
42
- updated_at: string;
43
- folder?: IFolder;
44
- }
41
+ created_at: string;
42
+ updated_at: string;
43
+ folder?: IFolder;
44
+ }
@@ -1,10 +0,0 @@
1
- /**
2
- * Study sorting and filtering constants
3
- * Shared between DAO and API controller to ensure validation consistency
4
- */
5
- export declare const VALID_STUDY_SORT_FIELDS: readonly ["created_at", "name", "type", "status"];
6
- export type StudySortField = typeof VALID_STUDY_SORT_FIELDS[number];
7
- /**
8
- * Maps API sort field names to database column names with table aliases
9
- */
10
- export declare const STUDY_SORT_COLUMN_MAP: Record<StudySortField, string>;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- /**
3
- * Study sorting and filtering constants
4
- * Shared between DAO and API controller to ensure validation consistency
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.STUDY_SORT_COLUMN_MAP = exports.VALID_STUDY_SORT_FIELDS = void 0;
8
- exports.VALID_STUDY_SORT_FIELDS = ['created_at', 'name', 'type', 'status'];
9
- /**
10
- * Maps API sort field names to database column names with table aliases
11
- */
12
- exports.STUDY_SORT_COLUMN_MAP = {
13
- 'created_at': 's.created_at',
14
- 'name': 's.name',
15
- 'type': 's.type',
16
- 'status': 's.status'
17
- };
18
- //# sourceMappingURL=study.constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"study.constants.js","sourceRoot":"","sources":["../../src/constants/study.constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEU,QAAA,uBAAuB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAGzF;;GAEG;AACU,QAAA,qBAAqB,GAAmC;IACjE,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACvB,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Study sorting and filtering constants
3
- * Shared between DAO and API controller to ensure validation consistency
4
- */
5
-
6
- export const VALID_STUDY_SORT_FIELDS = ['created_at', 'name', 'type', 'status'] as const;
7
- export type StudySortField = typeof VALID_STUDY_SORT_FIELDS[number];
8
-
9
- /**
10
- * Maps API sort field names to database column names with table aliases
11
- */
12
- export const STUDY_SORT_COLUMN_MAP: Record<StudySortField, string> = {
13
- 'created_at': 's.created_at',
14
- 'name': 's.name',
15
- 'type': 's.type',
16
- 'status': 's.status'
17
- };