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.
- package/CHANGELOG.md +750 -0
- package/README.md +660 -0
- package/dist/config/database.d.ts +28 -0
- package/dist/config/database.d.ts.map +1 -0
- package/dist/config/database.js +72 -0
- package/dist/config/database.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +199 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/database-service.d.ts +714 -0
- package/dist/lib/database-service.d.ts.map +1 -0
- package/dist/lib/database-service.js +1394 -0
- package/dist/lib/database-service.js.map +1 -0
- package/dist/lib/db-types.d.ts +167 -0
- package/dist/lib/db-types.d.ts.map +1 -0
- package/dist/lib/db-types.js +28 -0
- package/dist/lib/db-types.js.map +1 -0
- package/dist/lib/db.d.ts +58 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +292 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/index.d.ts +11 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +26 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/pg-client.d.ts +50 -0
- package/dist/lib/pg-client.d.ts.map +1 -0
- package/dist/lib/pg-client.js +106 -0
- package/dist/lib/pg-client.js.map +1 -0
- package/dist/lib/schema.d.ts +298 -0
- package/dist/lib/schema.d.ts.map +1 -0
- package/dist/lib/schema.js +12 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/migration-manager.d.ts +49 -0
- package/dist/migration-manager.d.ts.map +1 -0
- package/dist/migration-manager.js +282 -0
- package/dist/migration-manager.js.map +1 -0
- package/dist/queries/minimal-connections.d.ts +31 -0
- package/dist/queries/minimal-connections.d.ts.map +1 -0
- package/dist/queries/minimal-connections.js +143 -0
- package/dist/queries/minimal-connections.js.map +1 -0
- package/dist/schema.ts +340 -0
- package/dist/seed.d.ts +8 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +40 -0
- package/dist/seed.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/types.d.ts +77 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +3 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/authenticated-user-operations.d.ts +110 -0
- package/dist/utils/authenticated-user-operations.d.ts.map +1 -0
- package/dist/utils/authenticated-user-operations.js +292 -0
- package/dist/utils/authenticated-user-operations.js.map +1 -0
- package/dist/utils/authentication-operations.d.ts +48 -0
- package/dist/utils/authentication-operations.d.ts.map +1 -0
- package/dist/utils/authentication-operations.js +172 -0
- package/dist/utils/authentication-operations.js.map +1 -0
- package/dist/utils/company-mapping-job-operations.d.ts +103 -0
- package/dist/utils/company-mapping-job-operations.d.ts.map +1 -0
- package/dist/utils/company-mapping-job-operations.js +413 -0
- package/dist/utils/company-mapping-job-operations.js.map +1 -0
- package/dist/utils/company-sheet-upload-operations.d.ts +53 -0
- package/dist/utils/company-sheet-upload-operations.d.ts.map +1 -0
- package/dist/utils/company-sheet-upload-operations.js +135 -0
- package/dist/utils/company-sheet-upload-operations.js.map +1 -0
- package/dist/utils/contact-operations.d.ts +70 -0
- package/dist/utils/contact-operations.d.ts.map +1 -0
- package/dist/utils/contact-operations.js +294 -0
- package/dist/utils/contact-operations.js.map +1 -0
- package/dist/utils/forager-linkedin-operations.d.ts +74 -0
- package/dist/utils/forager-linkedin-operations.d.ts.map +1 -0
- package/dist/utils/forager-linkedin-operations.js +778 -0
- package/dist/utils/forager-linkedin-operations.js.map +1 -0
- package/dist/utils/ghost-genius-linkedin-operations.d.ts +23 -0
- package/dist/utils/ghost-genius-linkedin-operations.d.ts.map +1 -0
- package/dist/utils/ghost-genius-linkedin-operations.js +282 -0
- package/dist/utils/ghost-genius-linkedin-operations.js.map +1 -0
- package/dist/utils/index.d.ts +29 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +77 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/introduction-request-operations.d.ts +160 -0
- package/dist/utils/introduction-request-operations.d.ts.map +1 -0
- package/dist/utils/introduction-request-operations.js +492 -0
- package/dist/utils/introduction-request-operations.js.map +1 -0
- package/dist/utils/invitation-operations.d.ts +141 -0
- package/dist/utils/invitation-operations.d.ts.map +1 -0
- package/dist/utils/invitation-operations.js +749 -0
- package/dist/utils/invitation-operations.js.map +1 -0
- package/dist/utils/linkedin-account-operations.d.ts +45 -0
- package/dist/utils/linkedin-account-operations.d.ts.map +1 -0
- package/dist/utils/linkedin-account-operations.js +279 -0
- package/dist/utils/linkedin-account-operations.js.map +1 -0
- package/dist/utils/linkedin-account-relationship-operations.d.ts +77 -0
- package/dist/utils/linkedin-account-relationship-operations.d.ts.map +1 -0
- package/dist/utils/linkedin-account-relationship-operations.js +274 -0
- package/dist/utils/linkedin-account-relationship-operations.js.map +1 -0
- package/dist/utils/linkedin-data-operations.d.ts +102 -0
- package/dist/utils/linkedin-data-operations.d.ts.map +1 -0
- package/dist/utils/linkedin-data-operations.js +613 -0
- package/dist/utils/linkedin-data-operations.js.map +1 -0
- package/dist/utils/linkedin-identifier-utils.d.ts +31 -0
- package/dist/utils/linkedin-identifier-utils.d.ts.map +1 -0
- package/dist/utils/linkedin-identifier-utils.js +63 -0
- package/dist/utils/linkedin-identifier-utils.js.map +1 -0
- package/dist/utils/linkedin-profile-cache.d.ts +131 -0
- package/dist/utils/linkedin-profile-cache.d.ts.map +1 -0
- package/dist/utils/linkedin-profile-cache.js +418 -0
- package/dist/utils/linkedin-profile-cache.js.map +1 -0
- package/dist/utils/llm-inference-job-operations.d.ts +116 -0
- package/dist/utils/llm-inference-job-operations.d.ts.map +1 -0
- package/dist/utils/llm-inference-job-operations.js +267 -0
- package/dist/utils/llm-inference-job-operations.js.map +1 -0
- package/dist/utils/mapping-job-operations.d.ts +272 -0
- package/dist/utils/mapping-job-operations.d.ts.map +1 -0
- package/dist/utils/mapping-job-operations.js +833 -0
- package/dist/utils/mapping-job-operations.js.map +1 -0
- package/dist/utils/mapping-operations.d.ts +80 -0
- package/dist/utils/mapping-operations.d.ts.map +1 -0
- package/dist/utils/mapping-operations.js +318 -0
- package/dist/utils/mapping-operations.js.map +1 -0
- package/dist/utils/on-demand-mapping-operations.d.ts +199 -0
- package/dist/utils/on-demand-mapping-operations.d.ts.map +1 -0
- package/dist/utils/on-demand-mapping-operations.js +728 -0
- package/dist/utils/on-demand-mapping-operations.js.map +1 -0
- package/dist/utils/onboarding-operations.d.ts +53 -0
- package/dist/utils/onboarding-operations.d.ts.map +1 -0
- package/dist/utils/onboarding-operations.js +223 -0
- package/dist/utils/onboarding-operations.js.map +1 -0
- package/dist/utils/organization-assignment-job-operations.d.ts +258 -0
- package/dist/utils/organization-assignment-job-operations.d.ts.map +1 -0
- package/dist/utils/organization-assignment-job-operations.js +881 -0
- package/dist/utils/organization-assignment-job-operations.js.map +1 -0
- package/dist/utils/organization-assignment-operations.d.ts +59 -0
- package/dist/utils/organization-assignment-operations.d.ts.map +1 -0
- package/dist/utils/organization-assignment-operations.js +130 -0
- package/dist/utils/organization-assignment-operations.js.map +1 -0
- package/dist/utils/organization-operations.d.ts +284 -0
- package/dist/utils/organization-operations.d.ts.map +1 -0
- package/dist/utils/organization-operations.js +1030 -0
- package/dist/utils/organization-operations.js.map +1 -0
- package/dist/utils/organization-relationship-operations.d.ts +79 -0
- package/dist/utils/organization-relationship-operations.d.ts.map +1 -0
- package/dist/utils/organization-relationship-operations.js +294 -0
- package/dist/utils/organization-relationship-operations.js.map +1 -0
- package/dist/utils/quota-operations.d.ts +107 -0
- package/dist/utils/quota-operations.d.ts.map +1 -0
- package/dist/utils/quota-operations.js +692 -0
- package/dist/utils/quota-operations.js.map +1 -0
- package/dist/utils/recursive-mapping-job-operations.d.ts +42 -0
- package/dist/utils/recursive-mapping-job-operations.d.ts.map +1 -0
- package/dist/utils/recursive-mapping-job-operations.js +169 -0
- package/dist/utils/recursive-mapping-job-operations.js.map +1 -0
- package/dist/utils/relationship-operations.d.ts +130 -0
- package/dist/utils/relationship-operations.d.ts.map +1 -0
- package/dist/utils/relationship-operations.js +329 -0
- package/dist/utils/relationship-operations.js.map +1 -0
- package/dist/utils/sales-pipeline-operations.d.ts +163 -0
- package/dist/utils/sales-pipeline-operations.d.ts.map +1 -0
- package/dist/utils/sales-pipeline-operations.js +725 -0
- package/dist/utils/sales-pipeline-operations.js.map +1 -0
- package/dist/utils/skills-operations.d.ts +117 -0
- package/dist/utils/skills-operations.d.ts.map +1 -0
- package/dist/utils/skills-operations.js +487 -0
- package/dist/utils/skills-operations.js.map +1 -0
- package/dist/utils/subscription-operations.d.ts +123 -0
- package/dist/utils/subscription-operations.d.ts.map +1 -0
- package/dist/utils/subscription-operations.js +391 -0
- package/dist/utils/subscription-operations.js.map +1 -0
- package/dist/utils/unipile-account-operations.d.ts +96 -0
- package/dist/utils/unipile-account-operations.d.ts.map +1 -0
- package/dist/utils/unipile-account-operations.js +255 -0
- package/dist/utils/unipile-account-operations.js.map +1 -0
- package/dist/utils/user-industry-operations.d.ts +80 -0
- package/dist/utils/user-industry-operations.d.ts.map +1 -0
- package/dist/utils/user-industry-operations.js +237 -0
- package/dist/utils/user-industry-operations.js.map +1 -0
- package/dist/utils/user-operations.d.ts +87 -0
- package/dist/utils/user-operations.d.ts.map +1 -0
- package/dist/utils/user-operations.js +212 -0
- package/dist/utils/user-operations.js.map +1 -0
- 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":";AAAA;;;;;GAKG;;AA4BH,4DA8DC;AASD,8DA2CC;AAUD,sEAgDC;AArMD,gDAA4D;AAE5D,kCAAgD;AAgBhD;;;;;;GAMG;AACI,KAAK,UAAU,wBAAwB,CAC5C,EAAgC,EAChC,IAMC;IAED,IAAA,wBAAmB,EAAC,QAAQ,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC;IAE7D,MAAM,GAAG,GAAG;;;;;;;;;;;;;GAaX,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAQ,EAU3B,EAAuB,EACvB,GAAG,EACH;QACE,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,QAAQ,IAAI,IAAI;QACrB,IAAI,CAAC,WAAW,IAAI,IAAI;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;KACpC,CACF,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,UAAU,EAAE,MAAM,CAAC,YAAY;QAC/B,UAAU,EAAE,MAAM,CAAC,WAAW;QAC9B,QAAQ,EAAE,MAAM,CAAC,SAAS;QAC1B,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,mBAAmB,EAAE,MAAM,CAAC,sBAAsB;QAClD,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,yBAAyB,CAC7C,EAAgC,EAChC,aAAqB;IAErB,IAAA,wBAAmB,EAAC,QAAQ,EAAE,uBAAuB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IAE1E,MAAM,GAAG,GAAG;;;;;;;;;;;;GAYX,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAQ,EAS1B,EAAuB,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAElD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,UAAU,EAAE,MAAM,CAAC,YAAY;QAC/B,UAAU,EAAE,MAAM,CAAC,WAAW;QAC9B,QAAQ,EAAE,MAAM,CAAC,SAAS;QAC1B,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,mBAAmB,EAAE,MAAM,CAAC,sBAAsB;QAClD,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,6BAA6B,CACjD,EAAgC,EAChC,aAAqB,EACrB,mBAA2B;IAE3B,IAAA,wBAAmB,EAAC,QAAQ,EAAE,uBAAuB,EAAE;QACrD,aAAa;QACb,mBAAmB;KACpB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG;;;;;;;;;;;;;GAaX,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAQ,EAS1B,EAAuB,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;IAEvE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,UAAU,EAAE,MAAM,CAAC,YAAY;QAC/B,UAAU,EAAE,MAAM,CAAC,WAAW;QAC9B,QAAQ,EAAE,MAAM,CAAC,SAAS;QAC1B,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,mBAAmB,EAAE,MAAM,CAAC,sBAAsB;QAClD,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -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
|