eggi-ai-db-schema-2 0.1.1

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 (188) hide show
  1. package/CHANGELOG.md +750 -0
  2. package/README.md +660 -0
  3. package/dist/config/database.d.ts +28 -0
  4. package/dist/config/database.d.ts.map +1 -0
  5. package/dist/config/database.js +72 -0
  6. package/dist/config/database.js.map +1 -0
  7. package/dist/index.d.ts +28 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +199 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/lib/database-service.d.ts +714 -0
  12. package/dist/lib/database-service.d.ts.map +1 -0
  13. package/dist/lib/database-service.js +1394 -0
  14. package/dist/lib/database-service.js.map +1 -0
  15. package/dist/lib/db-types.d.ts +167 -0
  16. package/dist/lib/db-types.d.ts.map +1 -0
  17. package/dist/lib/db-types.js +28 -0
  18. package/dist/lib/db-types.js.map +1 -0
  19. package/dist/lib/db.d.ts +58 -0
  20. package/dist/lib/db.d.ts.map +1 -0
  21. package/dist/lib/db.js +292 -0
  22. package/dist/lib/db.js.map +1 -0
  23. package/dist/lib/index.d.ts +11 -0
  24. package/dist/lib/index.d.ts.map +1 -0
  25. package/dist/lib/index.js +26 -0
  26. package/dist/lib/index.js.map +1 -0
  27. package/dist/lib/pg-client.d.ts +50 -0
  28. package/dist/lib/pg-client.d.ts.map +1 -0
  29. package/dist/lib/pg-client.js +106 -0
  30. package/dist/lib/pg-client.js.map +1 -0
  31. package/dist/lib/schema.d.ts +298 -0
  32. package/dist/lib/schema.d.ts.map +1 -0
  33. package/dist/lib/schema.js +12 -0
  34. package/dist/lib/schema.js.map +1 -0
  35. package/dist/migration-manager.d.ts +49 -0
  36. package/dist/migration-manager.d.ts.map +1 -0
  37. package/dist/migration-manager.js +282 -0
  38. package/dist/migration-manager.js.map +1 -0
  39. package/dist/queries/minimal-connections.d.ts +31 -0
  40. package/dist/queries/minimal-connections.d.ts.map +1 -0
  41. package/dist/queries/minimal-connections.js +143 -0
  42. package/dist/queries/minimal-connections.js.map +1 -0
  43. package/dist/schema.ts +340 -0
  44. package/dist/seed.d.ts +8 -0
  45. package/dist/seed.d.ts.map +1 -0
  46. package/dist/seed.js +40 -0
  47. package/dist/seed.js.map +1 -0
  48. package/dist/types/index.d.ts +7 -0
  49. package/dist/types/index.d.ts.map +1 -0
  50. package/dist/types/index.js +23 -0
  51. package/dist/types/index.js.map +1 -0
  52. package/dist/types/types.d.ts +77 -0
  53. package/dist/types/types.d.ts.map +1 -0
  54. package/dist/types/types.js +3 -0
  55. package/dist/types/types.js.map +1 -0
  56. package/dist/utils/authenticated-user-operations.d.ts +110 -0
  57. package/dist/utils/authenticated-user-operations.d.ts.map +1 -0
  58. package/dist/utils/authenticated-user-operations.js +292 -0
  59. package/dist/utils/authenticated-user-operations.js.map +1 -0
  60. package/dist/utils/authentication-operations.d.ts +48 -0
  61. package/dist/utils/authentication-operations.d.ts.map +1 -0
  62. package/dist/utils/authentication-operations.js +172 -0
  63. package/dist/utils/authentication-operations.js.map +1 -0
  64. package/dist/utils/company-mapping-job-operations.d.ts +103 -0
  65. package/dist/utils/company-mapping-job-operations.d.ts.map +1 -0
  66. package/dist/utils/company-mapping-job-operations.js +413 -0
  67. package/dist/utils/company-mapping-job-operations.js.map +1 -0
  68. package/dist/utils/company-sheet-upload-operations.d.ts +53 -0
  69. package/dist/utils/company-sheet-upload-operations.d.ts.map +1 -0
  70. package/dist/utils/company-sheet-upload-operations.js +135 -0
  71. package/dist/utils/company-sheet-upload-operations.js.map +1 -0
  72. package/dist/utils/contact-operations.d.ts +70 -0
  73. package/dist/utils/contact-operations.d.ts.map +1 -0
  74. package/dist/utils/contact-operations.js +294 -0
  75. package/dist/utils/contact-operations.js.map +1 -0
  76. package/dist/utils/forager-linkedin-operations.d.ts +74 -0
  77. package/dist/utils/forager-linkedin-operations.d.ts.map +1 -0
  78. package/dist/utils/forager-linkedin-operations.js +778 -0
  79. package/dist/utils/forager-linkedin-operations.js.map +1 -0
  80. package/dist/utils/ghost-genius-linkedin-operations.d.ts +23 -0
  81. package/dist/utils/ghost-genius-linkedin-operations.d.ts.map +1 -0
  82. package/dist/utils/ghost-genius-linkedin-operations.js +282 -0
  83. package/dist/utils/ghost-genius-linkedin-operations.js.map +1 -0
  84. package/dist/utils/index.d.ts +29 -0
  85. package/dist/utils/index.d.ts.map +1 -0
  86. package/dist/utils/index.js +77 -0
  87. package/dist/utils/index.js.map +1 -0
  88. package/dist/utils/introduction-request-operations.d.ts +160 -0
  89. package/dist/utils/introduction-request-operations.d.ts.map +1 -0
  90. package/dist/utils/introduction-request-operations.js +492 -0
  91. package/dist/utils/introduction-request-operations.js.map +1 -0
  92. package/dist/utils/invitation-operations.d.ts +141 -0
  93. package/dist/utils/invitation-operations.d.ts.map +1 -0
  94. package/dist/utils/invitation-operations.js +749 -0
  95. package/dist/utils/invitation-operations.js.map +1 -0
  96. package/dist/utils/linkedin-account-operations.d.ts +45 -0
  97. package/dist/utils/linkedin-account-operations.d.ts.map +1 -0
  98. package/dist/utils/linkedin-account-operations.js +279 -0
  99. package/dist/utils/linkedin-account-operations.js.map +1 -0
  100. package/dist/utils/linkedin-account-relationship-operations.d.ts +77 -0
  101. package/dist/utils/linkedin-account-relationship-operations.d.ts.map +1 -0
  102. package/dist/utils/linkedin-account-relationship-operations.js +274 -0
  103. package/dist/utils/linkedin-account-relationship-operations.js.map +1 -0
  104. package/dist/utils/linkedin-data-operations.d.ts +102 -0
  105. package/dist/utils/linkedin-data-operations.d.ts.map +1 -0
  106. package/dist/utils/linkedin-data-operations.js +613 -0
  107. package/dist/utils/linkedin-data-operations.js.map +1 -0
  108. package/dist/utils/linkedin-identifier-utils.d.ts +31 -0
  109. package/dist/utils/linkedin-identifier-utils.d.ts.map +1 -0
  110. package/dist/utils/linkedin-identifier-utils.js +63 -0
  111. package/dist/utils/linkedin-identifier-utils.js.map +1 -0
  112. package/dist/utils/linkedin-profile-cache.d.ts +131 -0
  113. package/dist/utils/linkedin-profile-cache.d.ts.map +1 -0
  114. package/dist/utils/linkedin-profile-cache.js +418 -0
  115. package/dist/utils/linkedin-profile-cache.js.map +1 -0
  116. package/dist/utils/llm-inference-job-operations.d.ts +116 -0
  117. package/dist/utils/llm-inference-job-operations.d.ts.map +1 -0
  118. package/dist/utils/llm-inference-job-operations.js +267 -0
  119. package/dist/utils/llm-inference-job-operations.js.map +1 -0
  120. package/dist/utils/mapping-job-operations.d.ts +272 -0
  121. package/dist/utils/mapping-job-operations.d.ts.map +1 -0
  122. package/dist/utils/mapping-job-operations.js +833 -0
  123. package/dist/utils/mapping-job-operations.js.map +1 -0
  124. package/dist/utils/mapping-operations.d.ts +80 -0
  125. package/dist/utils/mapping-operations.d.ts.map +1 -0
  126. package/dist/utils/mapping-operations.js +318 -0
  127. package/dist/utils/mapping-operations.js.map +1 -0
  128. package/dist/utils/on-demand-mapping-operations.d.ts +199 -0
  129. package/dist/utils/on-demand-mapping-operations.d.ts.map +1 -0
  130. package/dist/utils/on-demand-mapping-operations.js +728 -0
  131. package/dist/utils/on-demand-mapping-operations.js.map +1 -0
  132. package/dist/utils/onboarding-operations.d.ts +53 -0
  133. package/dist/utils/onboarding-operations.d.ts.map +1 -0
  134. package/dist/utils/onboarding-operations.js +223 -0
  135. package/dist/utils/onboarding-operations.js.map +1 -0
  136. package/dist/utils/organization-assignment-job-operations.d.ts +258 -0
  137. package/dist/utils/organization-assignment-job-operations.d.ts.map +1 -0
  138. package/dist/utils/organization-assignment-job-operations.js +881 -0
  139. package/dist/utils/organization-assignment-job-operations.js.map +1 -0
  140. package/dist/utils/organization-assignment-operations.d.ts +59 -0
  141. package/dist/utils/organization-assignment-operations.d.ts.map +1 -0
  142. package/dist/utils/organization-assignment-operations.js +130 -0
  143. package/dist/utils/organization-assignment-operations.js.map +1 -0
  144. package/dist/utils/organization-operations.d.ts +284 -0
  145. package/dist/utils/organization-operations.d.ts.map +1 -0
  146. package/dist/utils/organization-operations.js +1030 -0
  147. package/dist/utils/organization-operations.js.map +1 -0
  148. package/dist/utils/organization-relationship-operations.d.ts +79 -0
  149. package/dist/utils/organization-relationship-operations.d.ts.map +1 -0
  150. package/dist/utils/organization-relationship-operations.js +294 -0
  151. package/dist/utils/organization-relationship-operations.js.map +1 -0
  152. package/dist/utils/quota-operations.d.ts +107 -0
  153. package/dist/utils/quota-operations.d.ts.map +1 -0
  154. package/dist/utils/quota-operations.js +692 -0
  155. package/dist/utils/quota-operations.js.map +1 -0
  156. package/dist/utils/recursive-mapping-job-operations.d.ts +42 -0
  157. package/dist/utils/recursive-mapping-job-operations.d.ts.map +1 -0
  158. package/dist/utils/recursive-mapping-job-operations.js +169 -0
  159. package/dist/utils/recursive-mapping-job-operations.js.map +1 -0
  160. package/dist/utils/relationship-operations.d.ts +130 -0
  161. package/dist/utils/relationship-operations.d.ts.map +1 -0
  162. package/dist/utils/relationship-operations.js +329 -0
  163. package/dist/utils/relationship-operations.js.map +1 -0
  164. package/dist/utils/sales-pipeline-operations.d.ts +163 -0
  165. package/dist/utils/sales-pipeline-operations.d.ts.map +1 -0
  166. package/dist/utils/sales-pipeline-operations.js +725 -0
  167. package/dist/utils/sales-pipeline-operations.js.map +1 -0
  168. package/dist/utils/skills-operations.d.ts +117 -0
  169. package/dist/utils/skills-operations.d.ts.map +1 -0
  170. package/dist/utils/skills-operations.js +487 -0
  171. package/dist/utils/skills-operations.js.map +1 -0
  172. package/dist/utils/subscription-operations.d.ts +123 -0
  173. package/dist/utils/subscription-operations.d.ts.map +1 -0
  174. package/dist/utils/subscription-operations.js +391 -0
  175. package/dist/utils/subscription-operations.js.map +1 -0
  176. package/dist/utils/unipile-account-operations.d.ts +96 -0
  177. package/dist/utils/unipile-account-operations.d.ts.map +1 -0
  178. package/dist/utils/unipile-account-operations.js +255 -0
  179. package/dist/utils/unipile-account-operations.js.map +1 -0
  180. package/dist/utils/user-industry-operations.d.ts +80 -0
  181. package/dist/utils/user-industry-operations.d.ts.map +1 -0
  182. package/dist/utils/user-industry-operations.js +237 -0
  183. package/dist/utils/user-industry-operations.js.map +1 -0
  184. package/dist/utils/user-operations.d.ts +87 -0
  185. package/dist/utils/user-operations.d.ts.map +1 -0
  186. package/dist/utils/user-operations.js +212 -0
  187. package/dist/utils/user-operations.js.map +1 -0
  188. package/package.json +98 -0
@@ -0,0 +1,413 @@
1
+ "use strict";
2
+ /**
3
+ * Company Mapping Job Operations
4
+ *
5
+ * Database operations for company_mapping_jobs table.
6
+ * Tracks the lifecycle of company onboarding from Forager.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createCompanyMappingJob = createCompanyMappingJob;
10
+ exports.updateCompanyMappingJobLinkedInId = updateCompanyMappingJobLinkedInId;
11
+ exports.updateCompanyMappingJobQueued = updateCompanyMappingJobQueued;
12
+ exports.updateCompanyMappingJobS3Path = updateCompanyMappingJobS3Path;
13
+ exports.updateCompanyMappingJobStarted = updateCompanyMappingJobStarted;
14
+ exports.updateCompanyMappingJobCompleted = updateCompanyMappingJobCompleted;
15
+ exports.getCompanyMappingJobById = getCompanyMappingJobById;
16
+ exports.updateCompanyMappingJobOrganizationId = updateCompanyMappingJobOrganizationId;
17
+ const pg_client_1 = require("../lib/pg-client");
18
+ const db_1 = require("../lib/db");
19
+ /**
20
+ * Create a new company mapping job
21
+ *
22
+ * @param db - Database instance
23
+ * @param options - Job creation options
24
+ * @param options.sourceType - Source type: 'forager_api' or 'sheet_upload'
25
+ * @param options.linkedinPublicIdentifier - LinkedIn public identifier (required for forager_api, optional for sheet_upload)
26
+ * @param options.metadata - Optional metadata for the job
27
+ * @returns Created company mapping job
28
+ */
29
+ async function createCompanyMappingJob(db, options) {
30
+ const { sourceType, linkedinPublicIdentifier, metadata = {} } = options;
31
+ // Validate: forager_api requires linkedin_public_identifier
32
+ if (sourceType === "forager_api" && !linkedinPublicIdentifier) {
33
+ throw new Error("linkedin_public_identifier is required for forager_api source type");
34
+ }
35
+ (0, db_1.debugLogDbOperation)("insert", "company_mapping_jobs", {
36
+ sourceType,
37
+ linkedinPublicIdentifier,
38
+ metadata,
39
+ });
40
+ const sql = `
41
+ INSERT INTO monitoring.company_mapping_jobs
42
+ (source_type, linkedin_public_identifier, metadata)
43
+ VALUES ($1, $2, $3)
44
+ RETURNING
45
+ id,
46
+ source_type,
47
+ linkedin_public_identifier,
48
+ linkedin_company_id,
49
+ organization_id,
50
+ s3_file_path,
51
+ employees_count,
52
+ created_at,
53
+ queued_at,
54
+ started_at,
55
+ completed_at,
56
+ metadata
57
+ `;
58
+ const result = await (0, pg_client_1.queryOne)(db, sql, [
59
+ sourceType,
60
+ linkedinPublicIdentifier || null,
61
+ JSON.stringify(metadata),
62
+ ]);
63
+ if (!result) {
64
+ throw new Error("Failed to create company mapping job");
65
+ }
66
+ return {
67
+ id: result.id,
68
+ sourceType: result.source_type,
69
+ linkedinPublicIdentifier: result.linkedin_public_identifier,
70
+ linkedinCompanyId: result.linkedin_company_id,
71
+ organizationId: result.organization_id,
72
+ s3FilePath: result.s3_file_path,
73
+ employeesCount: result.employees_count,
74
+ createdAt: result.created_at,
75
+ queuedAt: result.queued_at,
76
+ startedAt: result.started_at,
77
+ completedAt: result.completed_at,
78
+ metadata: result.metadata,
79
+ };
80
+ }
81
+ /**
82
+ * Update linkedin_company_id in company_mapping_jobs table
83
+ *
84
+ * @param db - Database instance
85
+ * @param companyMappingJobId - Company mapping job ID
86
+ * @param linkedinCompanyId - LinkedIn company ID to set
87
+ * @returns Updated company mapping job or null if not found
88
+ */
89
+ async function updateCompanyMappingJobLinkedInId(db, companyMappingJobId, linkedinCompanyId) {
90
+ (0, db_1.debugLogDbOperation)("update", "company_mapping_jobs", { companyMappingJobId, linkedinCompanyId });
91
+ const sql = `
92
+ UPDATE monitoring.company_mapping_jobs
93
+ SET linkedin_company_id = $1
94
+ WHERE id = $2
95
+ RETURNING
96
+ id,
97
+ source_type,
98
+ linkedin_public_identifier,
99
+ linkedin_company_id,
100
+ organization_id,
101
+ s3_file_path,
102
+ employees_count,
103
+ created_at,
104
+ queued_at,
105
+ started_at,
106
+ completed_at,
107
+ metadata
108
+ `;
109
+ const result = await (0, pg_client_1.queryOne)(db, sql, [linkedinCompanyId, companyMappingJobId]);
110
+ if (!result)
111
+ return null;
112
+ return {
113
+ id: result.id,
114
+ sourceType: result.source_type,
115
+ linkedinPublicIdentifier: result.linkedin_public_identifier,
116
+ linkedinCompanyId: result.linkedin_company_id,
117
+ organizationId: result.organization_id,
118
+ s3FilePath: result.s3_file_path,
119
+ employeesCount: result.employees_count,
120
+ createdAt: result.created_at,
121
+ queuedAt: result.queued_at,
122
+ startedAt: result.started_at,
123
+ completedAt: result.completed_at,
124
+ metadata: result.metadata,
125
+ };
126
+ }
127
+ /**
128
+ * Mark company mapping job as queued (preparation handler completed)
129
+ *
130
+ * @param db - Database instance
131
+ * @param companyMappingJobId - Company mapping job ID
132
+ * @param employeesCount - Number of employees found/paginated (optional)
133
+ * @returns Updated company mapping job or null if not found
134
+ */
135
+ async function updateCompanyMappingJobQueued(db, companyMappingJobId, employeesCount) {
136
+ (0, db_1.debugLogDbOperation)("update", "company_mapping_jobs", {
137
+ companyMappingJobId,
138
+ queued: true,
139
+ employeesCount,
140
+ });
141
+ const sql = `
142
+ UPDATE monitoring.company_mapping_jobs
143
+ SET queued_at = NOW(),
144
+ employees_count = COALESCE($2, employees_count)
145
+ WHERE id = $1
146
+ RETURNING
147
+ id,
148
+ source_type,
149
+ linkedin_public_identifier,
150
+ linkedin_company_id,
151
+ organization_id,
152
+ s3_file_path,
153
+ employees_count,
154
+ created_at,
155
+ queued_at,
156
+ started_at,
157
+ completed_at,
158
+ metadata
159
+ `;
160
+ const result = await (0, pg_client_1.queryOne)(db, sql, [companyMappingJobId, employeesCount ?? null]);
161
+ if (!result)
162
+ return null;
163
+ return {
164
+ id: result.id,
165
+ sourceType: result.source_type,
166
+ linkedinPublicIdentifier: result.linkedin_public_identifier,
167
+ linkedinCompanyId: result.linkedin_company_id,
168
+ organizationId: result.organization_id,
169
+ s3FilePath: result.s3_file_path,
170
+ employeesCount: result.employees_count,
171
+ createdAt: result.created_at,
172
+ queuedAt: result.queued_at,
173
+ startedAt: result.started_at,
174
+ completedAt: result.completed_at,
175
+ metadata: result.metadata,
176
+ };
177
+ }
178
+ /**
179
+ * Update s3_file_path in company_mapping_jobs table
180
+ *
181
+ * @param db - Database instance
182
+ * @param companyMappingJobId - Company mapping job ID
183
+ * @param s3FilePath - S3 file path to set
184
+ * @returns Updated company mapping job or null if not found
185
+ */
186
+ async function updateCompanyMappingJobS3Path(db, companyMappingJobId, s3FilePath) {
187
+ (0, db_1.debugLogDbOperation)("update", "company_mapping_jobs", { companyMappingJobId, s3FilePath });
188
+ const sql = `
189
+ UPDATE monitoring.company_mapping_jobs
190
+ SET s3_file_path = $1
191
+ WHERE id = $2
192
+ RETURNING
193
+ id,
194
+ source_type,
195
+ linkedin_public_identifier,
196
+ linkedin_company_id,
197
+ organization_id,
198
+ s3_file_path,
199
+ employees_count,
200
+ created_at,
201
+ queued_at,
202
+ started_at,
203
+ completed_at,
204
+ metadata
205
+ `;
206
+ const result = await (0, pg_client_1.queryOne)(db, sql, [s3FilePath, companyMappingJobId]);
207
+ if (!result)
208
+ return null;
209
+ return {
210
+ id: result.id,
211
+ sourceType: result.source_type,
212
+ linkedinPublicIdentifier: result.linkedin_public_identifier,
213
+ linkedinCompanyId: result.linkedin_company_id,
214
+ organizationId: result.organization_id,
215
+ s3FilePath: result.s3_file_path,
216
+ employeesCount: result.employees_count,
217
+ createdAt: result.created_at,
218
+ queuedAt: result.queued_at,
219
+ startedAt: result.started_at,
220
+ completedAt: result.completed_at,
221
+ metadata: result.metadata,
222
+ };
223
+ }
224
+ /**
225
+ * Mark company mapping job as started (both conditions met: queued_at + organization_id)
226
+ *
227
+ * @param db - Database instance
228
+ * @param companyMappingJobId - Company mapping job ID
229
+ * @returns Updated company mapping job or null if not found
230
+ */
231
+ async function updateCompanyMappingJobStarted(db, companyMappingJobId) {
232
+ (0, db_1.debugLogDbOperation)("update", "company_mapping_jobs", {
233
+ companyMappingJobId,
234
+ started: true,
235
+ });
236
+ const sql = `
237
+ UPDATE monitoring.company_mapping_jobs
238
+ SET started_at = NOW()
239
+ WHERE id = $1 AND started_at IS NULL
240
+ RETURNING
241
+ id,
242
+ source_type,
243
+ linkedin_public_identifier,
244
+ linkedin_company_id,
245
+ organization_id,
246
+ s3_file_path,
247
+ employees_count,
248
+ created_at,
249
+ queued_at,
250
+ started_at,
251
+ completed_at,
252
+ metadata
253
+ `;
254
+ const result = await (0, pg_client_1.queryOne)(db, sql, [companyMappingJobId]);
255
+ if (!result)
256
+ return null;
257
+ return {
258
+ id: result.id,
259
+ sourceType: result.source_type,
260
+ linkedinPublicIdentifier: result.linkedin_public_identifier,
261
+ linkedinCompanyId: result.linkedin_company_id,
262
+ organizationId: result.organization_id,
263
+ s3FilePath: result.s3_file_path,
264
+ employeesCount: result.employees_count,
265
+ createdAt: result.created_at,
266
+ queuedAt: result.queued_at,
267
+ startedAt: result.started_at,
268
+ completedAt: result.completed_at,
269
+ metadata: result.metadata,
270
+ };
271
+ }
272
+ /**
273
+ * Mark company mapping job as completed
274
+ *
275
+ * @param db - Database instance
276
+ * @param companyMappingJobId - Company mapping job ID
277
+ * @param employeesCount - Number of employees found/paginated (optional)
278
+ * @returns Updated company mapping job or null if not found
279
+ */
280
+ async function updateCompanyMappingJobCompleted(db, companyMappingJobId, employeesCount) {
281
+ (0, db_1.debugLogDbOperation)("update", "company_mapping_jobs", {
282
+ companyMappingJobId,
283
+ completed: true,
284
+ employeesCount,
285
+ });
286
+ const sql = `
287
+ UPDATE monitoring.company_mapping_jobs
288
+ SET completed_at = NOW(),
289
+ employees_count = COALESCE($2, employees_count)
290
+ WHERE id = $1
291
+ RETURNING
292
+ id,
293
+ source_type,
294
+ linkedin_public_identifier,
295
+ linkedin_company_id,
296
+ organization_id,
297
+ s3_file_path,
298
+ employees_count,
299
+ created_at,
300
+ queued_at,
301
+ started_at,
302
+ completed_at,
303
+ metadata
304
+ `;
305
+ const result = await (0, pg_client_1.queryOne)(db, sql, [companyMappingJobId, employeesCount ?? null]);
306
+ if (!result)
307
+ return null;
308
+ return {
309
+ id: result.id,
310
+ sourceType: result.source_type,
311
+ linkedinPublicIdentifier: result.linkedin_public_identifier,
312
+ linkedinCompanyId: result.linkedin_company_id,
313
+ organizationId: result.organization_id,
314
+ s3FilePath: result.s3_file_path,
315
+ employeesCount: result.employees_count,
316
+ createdAt: result.created_at,
317
+ queuedAt: result.queued_at,
318
+ startedAt: result.started_at,
319
+ completedAt: result.completed_at,
320
+ metadata: result.metadata,
321
+ };
322
+ }
323
+ /**
324
+ * Get company mapping job by ID
325
+ *
326
+ * @param db - Database instance
327
+ * @param companyMappingJobId - Company mapping job ID
328
+ * @returns Company mapping job or null if not found
329
+ */
330
+ async function getCompanyMappingJobById(db, companyMappingJobId) {
331
+ (0, db_1.debugLogDbOperation)("select", "company_mapping_jobs", { companyMappingJobId });
332
+ const sql = `
333
+ SELECT
334
+ id,
335
+ source_type,
336
+ linkedin_public_identifier,
337
+ linkedin_company_id,
338
+ organization_id,
339
+ s3_file_path,
340
+ employees_count,
341
+ created_at,
342
+ queued_at,
343
+ started_at,
344
+ completed_at,
345
+ metadata
346
+ FROM monitoring.company_mapping_jobs
347
+ WHERE id = $1
348
+ `;
349
+ const result = await (0, pg_client_1.queryOne)(db, sql, [companyMappingJobId]);
350
+ if (!result)
351
+ return null;
352
+ return {
353
+ id: result.id,
354
+ sourceType: result.source_type,
355
+ linkedinPublicIdentifier: result.linkedin_public_identifier,
356
+ linkedinCompanyId: result.linkedin_company_id,
357
+ organizationId: result.organization_id,
358
+ s3FilePath: result.s3_file_path,
359
+ employeesCount: result.employees_count,
360
+ createdAt: result.created_at,
361
+ queuedAt: result.queued_at,
362
+ startedAt: result.started_at,
363
+ completedAt: result.completed_at,
364
+ metadata: result.metadata,
365
+ };
366
+ }
367
+ /**
368
+ * Update organization_id in company_mapping_jobs table
369
+ *
370
+ * @param db - Database instance
371
+ * @param companyMappingJobId - Company mapping job ID
372
+ * @param organizationId - Organization ID to set
373
+ * @returns Updated company mapping job or null if not found
374
+ */
375
+ async function updateCompanyMappingJobOrganizationId(db, companyMappingJobId, organizationId) {
376
+ (0, db_1.debugLogDbOperation)("update", "company_mapping_jobs", { companyMappingJobId, organizationId });
377
+ const sql = `
378
+ UPDATE monitoring.company_mapping_jobs
379
+ SET organization_id = $1
380
+ WHERE id = $2
381
+ RETURNING
382
+ id,
383
+ source_type,
384
+ linkedin_public_identifier,
385
+ linkedin_company_id,
386
+ organization_id,
387
+ s3_file_path,
388
+ employees_count,
389
+ created_at,
390
+ queued_at,
391
+ started_at,
392
+ completed_at,
393
+ metadata
394
+ `;
395
+ const result = await (0, pg_client_1.queryOne)(db, sql, [organizationId, companyMappingJobId]);
396
+ if (!result)
397
+ return null;
398
+ return {
399
+ id: result.id,
400
+ sourceType: result.source_type,
401
+ linkedinPublicIdentifier: result.linkedin_public_identifier,
402
+ linkedinCompanyId: result.linkedin_company_id,
403
+ organizationId: result.organization_id,
404
+ s3FilePath: result.s3_file_path,
405
+ employeesCount: result.employees_count,
406
+ createdAt: result.created_at,
407
+ queuedAt: result.queued_at,
408
+ startedAt: result.started_at,
409
+ completedAt: result.completed_at,
410
+ metadata: result.metadata,
411
+ };
412
+ }
413
+ //# sourceMappingURL=company-mapping-job-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company-mapping-job-operations.js","sourceRoot":"","sources":["../../src/utils/company-mapping-job-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Company Sheet Upload Operations
3
+ *
4
+ * Database operations for company_sheet_uploads table.
5
+ * Tracks sheet uploads for manual company onboarding.
6
+ */
7
+ import { Pool, PoolClient } from "pg";
8
+ import type { Database } from "../lib/db";
9
+ /**
10
+ * Company Sheet Upload interface
11
+ */
12
+ export interface CompanySheetUpload {
13
+ id: number;
14
+ s3FilePath: string;
15
+ bucketName: string;
16
+ fileName: string | null;
17
+ peopleCount: number | null;
18
+ companyMappingJobId: number | null;
19
+ createdAt: Date;
20
+ metadata: Record<string, any>;
21
+ }
22
+ /**
23
+ * Create a new company sheet upload record
24
+ *
25
+ * @param db - Database instance
26
+ * @param data - Sheet upload data
27
+ * @returns Created company sheet upload
28
+ */
29
+ export declare function createCompanySheetUpload(db: Database | Pool | PoolClient, data: {
30
+ s3FilePath: string;
31
+ bucketName: string;
32
+ fileName?: string | null;
33
+ peopleCount?: number | null;
34
+ metadata?: Record<string, any>;
35
+ }): Promise<CompanySheetUpload>;
36
+ /**
37
+ * Get company sheet upload by ID
38
+ *
39
+ * @param db - Database instance
40
+ * @param sheetUploadId - Sheet upload ID
41
+ * @returns Company sheet upload or null if not found
42
+ */
43
+ export declare function getCompanySheetUploadById(db: Database | Pool | PoolClient, sheetUploadId: number): Promise<CompanySheetUpload | null>;
44
+ /**
45
+ * Update company sheet upload with company mapping job ID
46
+ *
47
+ * @param db - Database instance
48
+ * @param sheetUploadId - Sheet upload ID
49
+ * @param companyMappingJobId - Company mapping job ID to set
50
+ * @returns Updated company sheet upload or null if not found
51
+ */
52
+ export declare function updateCompanySheetUploadJobId(db: Database | Pool | PoolClient, sheetUploadId: number, companyMappingJobId: number): Promise<CompanySheetUpload | null>;
53
+ //# sourceMappingURL=company-sheet-upload-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company-sheet-upload-operations.d.ts","sourceRoot":"","sources":["../../src/utils/company-sheet-upload-operations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,IAAI,EAAE;IACJ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC,GACA,OAAO,CAAC,kBAAkB,CAAC,CAqD7B;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAwCpC;AAED;;;;;;;GAOG;AACH,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA4CpC"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ /**
3
+ * Company Sheet Upload Operations
4
+ *
5
+ * Database operations for company_sheet_uploads table.
6
+ * Tracks sheet uploads for manual company onboarding.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createCompanySheetUpload = createCompanySheetUpload;
10
+ exports.getCompanySheetUploadById = getCompanySheetUploadById;
11
+ exports.updateCompanySheetUploadJobId = updateCompanySheetUploadJobId;
12
+ const pg_client_1 = require("../lib/pg-client");
13
+ const db_1 = require("../lib/db");
14
+ /**
15
+ * Create a new company sheet upload record
16
+ *
17
+ * @param db - Database instance
18
+ * @param data - Sheet upload data
19
+ * @returns Created company sheet upload
20
+ */
21
+ async function createCompanySheetUpload(db, data) {
22
+ (0, db_1.debugLogDbOperation)("insert", "company_sheet_uploads", data);
23
+ const sql = `
24
+ INSERT INTO monitoring.company_sheet_uploads
25
+ (s3_file_path, bucket_name, file_name, people_count, metadata)
26
+ VALUES ($1, $2, $3, $4, $5)
27
+ RETURNING
28
+ id,
29
+ s3_file_path,
30
+ bucket_name,
31
+ file_name,
32
+ people_count,
33
+ company_mapping_job_id,
34
+ created_at,
35
+ metadata
36
+ `;
37
+ const result = await (0, pg_client_1.queryOne)(db, sql, [
38
+ data.s3FilePath,
39
+ data.bucketName,
40
+ data.fileName || null,
41
+ data.peopleCount || null,
42
+ JSON.stringify(data.metadata || {}),
43
+ ]);
44
+ if (!result) {
45
+ throw new Error("Failed to create company sheet upload");
46
+ }
47
+ return {
48
+ id: result.id,
49
+ s3FilePath: result.s3_file_path,
50
+ bucketName: result.bucket_name,
51
+ fileName: result.file_name,
52
+ peopleCount: result.people_count,
53
+ companyMappingJobId: result.company_mapping_job_id,
54
+ createdAt: result.created_at,
55
+ metadata: result.metadata,
56
+ };
57
+ }
58
+ /**
59
+ * Get company sheet upload by ID
60
+ *
61
+ * @param db - Database instance
62
+ * @param sheetUploadId - Sheet upload ID
63
+ * @returns Company sheet upload or null if not found
64
+ */
65
+ async function getCompanySheetUploadById(db, sheetUploadId) {
66
+ (0, db_1.debugLogDbOperation)("select", "company_sheet_uploads", { sheetUploadId });
67
+ const sql = `
68
+ SELECT
69
+ id,
70
+ s3_file_path,
71
+ bucket_name,
72
+ file_name,
73
+ people_count,
74
+ company_mapping_job_id,
75
+ created_at,
76
+ metadata
77
+ FROM monitoring.company_sheet_uploads
78
+ WHERE id = $1
79
+ `;
80
+ const result = await (0, pg_client_1.queryOne)(db, sql, [sheetUploadId]);
81
+ if (!result)
82
+ return null;
83
+ return {
84
+ id: result.id,
85
+ s3FilePath: result.s3_file_path,
86
+ bucketName: result.bucket_name,
87
+ fileName: result.file_name,
88
+ peopleCount: result.people_count,
89
+ companyMappingJobId: result.company_mapping_job_id,
90
+ createdAt: result.created_at,
91
+ metadata: result.metadata,
92
+ };
93
+ }
94
+ /**
95
+ * Update company sheet upload with company mapping job ID
96
+ *
97
+ * @param db - Database instance
98
+ * @param sheetUploadId - Sheet upload ID
99
+ * @param companyMappingJobId - Company mapping job ID to set
100
+ * @returns Updated company sheet upload or null if not found
101
+ */
102
+ async function updateCompanySheetUploadJobId(db, sheetUploadId, companyMappingJobId) {
103
+ (0, db_1.debugLogDbOperation)("update", "company_sheet_uploads", {
104
+ sheetUploadId,
105
+ companyMappingJobId,
106
+ });
107
+ const sql = `
108
+ UPDATE monitoring.company_sheet_uploads
109
+ SET company_mapping_job_id = $1
110
+ WHERE id = $2
111
+ RETURNING
112
+ id,
113
+ s3_file_path,
114
+ bucket_name,
115
+ file_name,
116
+ people_count,
117
+ company_mapping_job_id,
118
+ created_at,
119
+ metadata
120
+ `;
121
+ const result = await (0, pg_client_1.queryOne)(db, sql, [companyMappingJobId, sheetUploadId]);
122
+ if (!result)
123
+ return null;
124
+ return {
125
+ id: result.id,
126
+ s3FilePath: result.s3_file_path,
127
+ bucketName: result.bucket_name,
128
+ fileName: result.file_name,
129
+ peopleCount: result.people_count,
130
+ companyMappingJobId: result.company_mapping_job_id,
131
+ createdAt: result.created_at,
132
+ metadata: result.metadata,
133
+ };
134
+ }
135
+ //# sourceMappingURL=company-sheet-upload-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company-sheet-upload-operations.js","sourceRoot":"","sources":["../../src/utils/company-sheet-upload-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * =============================================================================
3
+ * CONTACT OPERATIONS UTILITIES
4
+ * =============================================================================
5
+ * Utility functions for creating and managing user contact information
6
+ */
7
+ import { Pool, PoolClient } from "pg";
8
+ import type { Database } from "../lib/db";
9
+ import { type ContactInfo, type ContactInfoType, type ContactInfoSource, type User } from "../lib/schema";
10
+ export interface ContactInfoWithUser extends ContactInfo {
11
+ user: User;
12
+ }
13
+ export interface CreateContactInfoData {
14
+ userId: number;
15
+ type: ContactInfoType;
16
+ value: string;
17
+ source?: ContactInfoSource;
18
+ metadata?: Record<string, any>;
19
+ }
20
+ export interface UpdateContactInfoData {
21
+ value?: string;
22
+ metadata?: Record<string, any>;
23
+ }
24
+ export interface UserWithContacts extends User {
25
+ contactInfos: ContactInfo[];
26
+ }
27
+ export interface ContactSearchCriteria {
28
+ types?: ContactInfoType[];
29
+ values?: string[];
30
+ userIds?: number[];
31
+ metadata?: Record<string, any>;
32
+ }
33
+ /**
34
+ * Creates a new contact info record for a user
35
+ *
36
+ * @param data - Contact info creation data
37
+ * @returns Promise resolving to the created contact info
38
+ */
39
+ export declare function createContactInfo(db: Database | Pool | PoolClient, data: CreateContactInfoData): Promise<ContactInfo>;
40
+ /**
41
+ * Creates or updates a contact info record (upsert)
42
+ *
43
+ * @param data - Contact info data
44
+ * @returns Promise resolving to the created or updated contact info
45
+ */
46
+ export declare function upsertContactInfo(db: Database | any, data: CreateContactInfoData): Promise<ContactInfo>;
47
+ /**
48
+ * Batch creates contact infos for multiple users
49
+ *
50
+ * @param contactInfosData - Array of contact info creation data
51
+ * @returns Promise resolving to array of created contact infos
52
+ */
53
+ export declare function batchCreateContactInfos(db: Database | Pool | PoolClient, contactInfosData: CreateContactInfoData[]): Promise<ContactInfo[]>;
54
+ /**
55
+ * Batch upserts contact infos (create or update)
56
+ *
57
+ * @param contactInfosData - Array of contact info data
58
+ * @returns Promise resolving to array of upserted contact infos
59
+ */
60
+ export declare function batchUpsertContactInfos(db: Database | Pool | PoolClient, contactInfosData: CreateContactInfoData[]): Promise<ContactInfo[]>;
61
+ /**
62
+ * Batch fetch email addresses for multiple users
63
+ * Returns a Map of userId -> array of email addresses
64
+ *
65
+ * @param db - Database connection
66
+ * @param userIds - Array of user IDs to fetch emails for
67
+ * @returns Map<userId, emails[]>
68
+ */
69
+ export declare function getBatchUserEmails(db: Database | Pool | PoolClient, userIds: number[]): Promise<Map<number, string[]>>;
70
+ //# sourceMappingURL=contact-operations.d.ts.map