eggi-ai-db-schema-2 12.54.2
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 +655 -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 +689 -0
- package/dist/lib/database-service.d.ts.map +1 -0
- package/dist/lib/database-service.js +1362 -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 +159 -0
- package/dist/utils/introduction-request-operations.d.ts.map +1 -0
- package/dist/utils/introduction-request-operations.js +481 -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 +266 -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 +275 -0
- package/dist/utils/organization-operations.d.ts.map +1 -0
- package/dist/utils/organization-operations.js +993 -0
- package/dist/utils/organization-operations.js.map +1 -0
- package/dist/utils/organization-relationship-operations.d.ts +59 -0
- package/dist/utils/organization-relationship-operations.d.ts.map +1 -0
- package/dist/utils/organization-relationship-operations.js +240 -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 +143 -0
- package/dist/utils/sales-pipeline-operations.d.ts.map +1 -0
- package/dist/utils/sales-pipeline-operations.js +649 -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,689 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* =============================================================================
|
|
3
|
+
* DATABASE SERVICE - Clean Object-Oriented Database Management
|
|
4
|
+
* =============================================================================
|
|
5
|
+
*
|
|
6
|
+
* Provides a singleton database service that accepts connection parameters
|
|
7
|
+
* directly. No environment variables, no AWS dependencies - just clean
|
|
8
|
+
* database operations with provided connection info.
|
|
9
|
+
*
|
|
10
|
+
* @author Eggi.ai Team
|
|
11
|
+
* @version 3.0.0 - Clean architecture with input-based connections
|
|
12
|
+
*/
|
|
13
|
+
import { Pool } from "pg";
|
|
14
|
+
/**
|
|
15
|
+
* Database connection parameters
|
|
16
|
+
*/
|
|
17
|
+
export interface DatabaseConnectionConfig {
|
|
18
|
+
/** Complete database URL (if provided, other params are ignored) */
|
|
19
|
+
databaseUrl?: string;
|
|
20
|
+
/** Individual connection parameters */
|
|
21
|
+
host?: string;
|
|
22
|
+
port?: number;
|
|
23
|
+
database?: string;
|
|
24
|
+
username?: string;
|
|
25
|
+
password?: string;
|
|
26
|
+
/** SSL configuration */
|
|
27
|
+
ssl?: boolean;
|
|
28
|
+
}
|
|
29
|
+
import type { ConnectionPoolConfig } from "./db";
|
|
30
|
+
/**
|
|
31
|
+
* Database service configuration
|
|
32
|
+
*/
|
|
33
|
+
export interface DatabaseServiceConfig {
|
|
34
|
+
/** Database connection configuration (REQUIRED) */
|
|
35
|
+
connection: DatabaseConnectionConfig;
|
|
36
|
+
/** Connection pool configuration */
|
|
37
|
+
poolConfig?: ConnectionPoolConfig;
|
|
38
|
+
}
|
|
39
|
+
import { createMappingJobForLinkedInAccount, startMappingJob, completeMappingJob } from "../utils/mapping-job-operations";
|
|
40
|
+
import { createLlmInferenceJob } from "../utils/llm-inference-job-operations";
|
|
41
|
+
import { createOrganizationAssignmentJob, type OrganizationAssignmentJobMetadata, type UserExportsResult, type ExportAvailabilityResult, type ExportStatusResult } from "../utils/organization-assignment-job-operations";
|
|
42
|
+
import { createOnDemandMappingJob } from "../utils/on-demand-mapping-operations";
|
|
43
|
+
import { createContactInfo, upsertContactInfo, batchCreateContactInfos, batchUpsertContactInfos } from "../utils/contact-operations";
|
|
44
|
+
import { getExistingUnipileAccount } from "../utils/user-operations";
|
|
45
|
+
import { createUnipileAccount, upsertUnipileAccount } from "../utils/unipile-account-operations";
|
|
46
|
+
import { upsertLinkedInAccountRelationshipScore, getLinkedInAccountRelationshipScore, type LinkedinRelationshipWithAccountsAndUsers } from "../utils/linkedin-account-relationship-operations";
|
|
47
|
+
import { getTopClosestConnections } from "../utils/relationship-operations";
|
|
48
|
+
import { getConnectionsForChromeExtension } from "../queries/minimal-connections";
|
|
49
|
+
import { findOrCreateSkill, findOrCreateSkills, addProfileSkills, addWorkExperienceSkills, addEducationSkills } from "../utils/skills-operations";
|
|
50
|
+
import { createIntroductionRequest } from "../utils/introduction-request-operations";
|
|
51
|
+
import { createOnboardingJob } from "../utils/onboarding-operations";
|
|
52
|
+
import { type QuotaCheckResult, type QuotaPeriod, type QuotaSummary } from "../utils/quota-operations";
|
|
53
|
+
/**
|
|
54
|
+
* Singleton Database Service Class
|
|
55
|
+
* Manages database connections and provides type-safe query methods
|
|
56
|
+
*/
|
|
57
|
+
declare class DatabaseService {
|
|
58
|
+
private static instance;
|
|
59
|
+
private dbPromise;
|
|
60
|
+
private isInitialized;
|
|
61
|
+
private constructor();
|
|
62
|
+
/**
|
|
63
|
+
* Get singleton instance of DatabaseService
|
|
64
|
+
*/
|
|
65
|
+
static getInstance(): DatabaseService;
|
|
66
|
+
/**
|
|
67
|
+
* Build database URL from provided connection configuration
|
|
68
|
+
*/
|
|
69
|
+
private buildDatabaseUrl;
|
|
70
|
+
/**
|
|
71
|
+
* Initialize database connection with configuration
|
|
72
|
+
* REQUIRED: Must provide connection configuration
|
|
73
|
+
*/
|
|
74
|
+
initialize(config: DatabaseServiceConfig): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Get database instance
|
|
77
|
+
* Throws error if not initialized
|
|
78
|
+
*/
|
|
79
|
+
getDb(): Promise<Pool>;
|
|
80
|
+
/**
|
|
81
|
+
* Check if database is initialized
|
|
82
|
+
*/
|
|
83
|
+
isReady(): boolean;
|
|
84
|
+
createMappingJobForLinkedInAccount(params: Parameters<typeof createMappingJobForLinkedInAccount>[1]): Promise<{
|
|
85
|
+
mappingJob: import("./schema").MappingJob;
|
|
86
|
+
}>;
|
|
87
|
+
createMappingJobWithLinkedInAccounts(accountsData: Array<{
|
|
88
|
+
linkedinAccountId: number;
|
|
89
|
+
metadata?: Record<string, any>;
|
|
90
|
+
}>): Promise<{
|
|
91
|
+
mappingJobs: import("./schema").MappingJob[];
|
|
92
|
+
}>;
|
|
93
|
+
startMappingJob(mappingJobId: number, metadata?: Parameters<typeof startMappingJob>[2]): Promise<import("./schema").MappingJob>;
|
|
94
|
+
completeMappingJob(mappingJobId: number, metadata?: Parameters<typeof completeMappingJob>[2]): Promise<import("./schema").MappingJob>;
|
|
95
|
+
validateMappingJobCompletion(mappingJobId: number): Promise<{
|
|
96
|
+
isValid: boolean;
|
|
97
|
+
mappingJob?: import("./schema").MappingJob;
|
|
98
|
+
error?: string;
|
|
99
|
+
}>;
|
|
100
|
+
createLlmInferenceJob(params: Parameters<typeof createLlmInferenceJob>[1]): Promise<{
|
|
101
|
+
llmInferenceJob: import("./schema").LlmInferenceJob;
|
|
102
|
+
}>;
|
|
103
|
+
createOrganizationAssignmentJob(params: Parameters<typeof createOrganizationAssignmentJob>[1]): Promise<import("../utils/organization-assignment-job-operations").OrganizationAssignmentJob>;
|
|
104
|
+
completeOrganizationAssignmentJob(organizationAssignmentJobId: number, completionMetadata?: OrganizationAssignmentJobMetadata): Promise<import("../utils/organization-assignment-job-operations").OrganizationAssignmentJob>;
|
|
105
|
+
getOrganizationAssignmentJobById(organizationAssignmentJobId: number): Promise<import("../utils/organization-assignment-job-operations").OrganizationAssignmentJob | null>;
|
|
106
|
+
checkExportAvailability(mappingJobId: number | null, organizationId: number): Promise<ExportAvailabilityResult>;
|
|
107
|
+
checkExportAvailabilityForLinkedInAccount(linkedinAccountId: number, organizationId: number): Promise<ExportAvailabilityResult>;
|
|
108
|
+
getExportStatusByLinkedInIdentifier(linkedinIdentifierAcoa: string, organizationId: number): Promise<ExportStatusResult>;
|
|
109
|
+
/**
|
|
110
|
+
* Get paginated exports for a user (requester)
|
|
111
|
+
* @param requesterLinkedinAccountId - LinkedIn account ID of the requester
|
|
112
|
+
* @param options - Query options (page, pageSize, sort, organizationId, status)
|
|
113
|
+
* @returns Paginated list of exports with profile and organization details
|
|
114
|
+
*/
|
|
115
|
+
getUserExports(requesterLinkedinAccountId: number, options?: {
|
|
116
|
+
page?: number;
|
|
117
|
+
pageSize?: number;
|
|
118
|
+
sort?: "asc" | "desc";
|
|
119
|
+
organizationId?: number;
|
|
120
|
+
status?: "pending" | "completed" | "failed" | "all";
|
|
121
|
+
}): Promise<UserExportsResult>;
|
|
122
|
+
getLatestOrganizationAssignmentJobForUser(userId: number, organizationId: number): Promise<import("../utils/organization-assignment-job-operations").OrganizationAssignmentJob | null>;
|
|
123
|
+
getLatestOrganizationAssignmentJob(mappingJobId: number, organizationId: number): Promise<import("../utils/organization-assignment-job-operations").OrganizationAssignmentJob | null>;
|
|
124
|
+
updateOrganizationAssignmentJobMetadata(organizationAssignmentJobId: number, metadata: OrganizationAssignmentJobMetadata): Promise<import("../utils/organization-assignment-job-operations").OrganizationAssignmentJob>;
|
|
125
|
+
getRelationshipScoresForMappingJob(mappingJobId: number, options?: {
|
|
126
|
+
limit?: number;
|
|
127
|
+
minScore?: number;
|
|
128
|
+
}): Promise<{
|
|
129
|
+
id: number;
|
|
130
|
+
linkedin_account_id_a: number;
|
|
131
|
+
linkedin_account_id_b: number;
|
|
132
|
+
score: number;
|
|
133
|
+
model_version: string;
|
|
134
|
+
analysis_type: string;
|
|
135
|
+
mapping_job_id: number;
|
|
136
|
+
metadata: Record<string, any>;
|
|
137
|
+
created_at: Date;
|
|
138
|
+
}[]>;
|
|
139
|
+
getEnrichedRelationshipScoresForMappingJob(mappingJobId: number, mainLinkedinAccountId: number, options?: {
|
|
140
|
+
limit?: number;
|
|
141
|
+
minScore?: number;
|
|
142
|
+
sortOrder?: "asc" | "desc";
|
|
143
|
+
}): Promise<{
|
|
144
|
+
score: number;
|
|
145
|
+
modelVersion: string;
|
|
146
|
+
analysisType: string;
|
|
147
|
+
mappingJobId: number;
|
|
148
|
+
metadata: Record<string, any>;
|
|
149
|
+
createdAt: Date;
|
|
150
|
+
otherAccount: {
|
|
151
|
+
id: number;
|
|
152
|
+
linkedinIdentifierAcoa: string | null;
|
|
153
|
+
publicIdentifier: string | null;
|
|
154
|
+
firstName: string | null;
|
|
155
|
+
lastName: string | null;
|
|
156
|
+
headline: string | null;
|
|
157
|
+
profilePictureUrl: string | null;
|
|
158
|
+
};
|
|
159
|
+
}[]>;
|
|
160
|
+
getRelationshipScoresForAccount(linkedinAccountId: number, options?: {
|
|
161
|
+
limit?: number;
|
|
162
|
+
minScore?: number;
|
|
163
|
+
modelVersion?: string;
|
|
164
|
+
sortOrder?: "asc" | "desc";
|
|
165
|
+
}): Promise<{
|
|
166
|
+
score: number;
|
|
167
|
+
modelVersion: string;
|
|
168
|
+
analysisType: string;
|
|
169
|
+
mappingJobId: number;
|
|
170
|
+
metadata: Record<string, any>;
|
|
171
|
+
createdAt: Date;
|
|
172
|
+
otherAccount: {
|
|
173
|
+
id: number;
|
|
174
|
+
linkedinIdentifierAcoa: string | null;
|
|
175
|
+
publicIdentifier: string | null;
|
|
176
|
+
firstName: string | null;
|
|
177
|
+
lastName: string | null;
|
|
178
|
+
headline: string | null;
|
|
179
|
+
profilePictureUrl: string | null;
|
|
180
|
+
};
|
|
181
|
+
}[]>;
|
|
182
|
+
getMappingJobWithLinkedInAccount(mappingJobId: number): Promise<{
|
|
183
|
+
mappingJob: import("./schema").MappingJob;
|
|
184
|
+
linkedinAccount: {
|
|
185
|
+
id: number;
|
|
186
|
+
user_id: number | null;
|
|
187
|
+
linkedin_identifier_acoa: string | null;
|
|
188
|
+
public_identifier: string | null;
|
|
189
|
+
forager_id: number;
|
|
190
|
+
first_name: string | null;
|
|
191
|
+
last_name: string | null;
|
|
192
|
+
headline: string | null;
|
|
193
|
+
summary: string | null;
|
|
194
|
+
location: string | null;
|
|
195
|
+
profile_picture_url: string | null;
|
|
196
|
+
profile_image_cloudfront_url: string | null;
|
|
197
|
+
follower_count: number | null;
|
|
198
|
+
connections_count: number | null;
|
|
199
|
+
profiles_updated_at: Date | null;
|
|
200
|
+
created_at: Date;
|
|
201
|
+
};
|
|
202
|
+
user?: {
|
|
203
|
+
id: number;
|
|
204
|
+
given_name: string | null;
|
|
205
|
+
family_name: string | null;
|
|
206
|
+
summary: string | null;
|
|
207
|
+
embedding_summary: string | null;
|
|
208
|
+
embedding: any;
|
|
209
|
+
created_at: Date;
|
|
210
|
+
} | undefined;
|
|
211
|
+
} | null>;
|
|
212
|
+
createOnboardingJob(data: Parameters<typeof createOnboardingJob>[1]): Promise<import("../utils/onboarding-operations").OnboardingJobResult>;
|
|
213
|
+
updateOnboardingJob(onboardingJobId: number, updates: {
|
|
214
|
+
currentStep?: string;
|
|
215
|
+
nextStep?: string | null;
|
|
216
|
+
completedAt?: Date | null;
|
|
217
|
+
metadata?: Record<string, any>;
|
|
218
|
+
}): Promise<import("../utils/onboarding-operations").OnboardingJobResult>;
|
|
219
|
+
updateOnboardingJobStep(onboardingJobId: number, currentStep: string, nextStep?: string, metadata?: Record<string, any>): Promise<import("../utils/onboarding-operations").OnboardingJobResult>;
|
|
220
|
+
completeOnboardingJob(onboardingJobId: number, completionMetadata?: Record<string, any>): Promise<import("../utils/onboarding-operations").OnboardingJobResult>;
|
|
221
|
+
getOnboardingJobByUserId(userId: number): Promise<import("../utils/onboarding-operations").OnboardingJobResult | null>;
|
|
222
|
+
getOnboardingJobById(onboardingJobId: number): Promise<import("../utils/onboarding-operations").OnboardingJobResult | null>;
|
|
223
|
+
createOnDemandMappingJob(data: Parameters<typeof createOnDemandMappingJob>[0]): Promise<import("../utils/on-demand-mapping-operations").OnDemandMappingJob>;
|
|
224
|
+
/**
|
|
225
|
+
* Check and increment quota for a mapping job request
|
|
226
|
+
* Returns whether the operation is allowed based on quota limits
|
|
227
|
+
*/
|
|
228
|
+
checkAndIncrementMappingJobQuota(authenticatedUserId: number, organizationId: number, period?: QuotaPeriod): Promise<QuotaCheckResult>;
|
|
229
|
+
/**
|
|
230
|
+
* Get current quota status without incrementing
|
|
231
|
+
*/
|
|
232
|
+
getMappingJobQuotaStatus(authenticatedUserId: number, organizationId: number, period?: QuotaPeriod): Promise<QuotaCheckResult | null>;
|
|
233
|
+
/**
|
|
234
|
+
* Get all quotas for a user across all organizations
|
|
235
|
+
* Returns quotas for all quota types (currently only mapping_jobs, but extensible)
|
|
236
|
+
*/
|
|
237
|
+
getAllQuotasForUser(authenticatedUserId: number): Promise<QuotaSummary[]>;
|
|
238
|
+
/**
|
|
239
|
+
* Initialize quota records for all organization members when subscription is activated
|
|
240
|
+
* Creates daily and monthly quota records with appropriate limits based on subscription tier
|
|
241
|
+
*/
|
|
242
|
+
initializeQuotasForOrganization(organizationId: number): Promise<number>;
|
|
243
|
+
getAllOnDemandMappingJobsForUserMinimal(requesterLinkedinAccountId: number, limit?: number, offset?: number): Promise<{
|
|
244
|
+
jobs: import("../utils/on-demand-mapping-operations").OnDemandMappingJobMinimal[];
|
|
245
|
+
total_items: number;
|
|
246
|
+
}>;
|
|
247
|
+
checkMappingAvailability(targetLinkedInIdentifier: string): Promise<import("../utils/mapping-job-operations").MappingAvailabilityResult>;
|
|
248
|
+
getOnDemandMappingJobById(jobId: number): Promise<import("../utils/on-demand-mapping-operations").OnDemandMappingJob | null>;
|
|
249
|
+
getMappingJobById(mappingJobId: number): Promise<{
|
|
250
|
+
id: number;
|
|
251
|
+
linkedin_account_id: number;
|
|
252
|
+
completed_at: Date | null;
|
|
253
|
+
} | null>;
|
|
254
|
+
getTargetLinkedInAccountIdForOnDemandJobInOrganization(requesterLinkedinAccountId: number, organizationId: number): Promise<number | null>;
|
|
255
|
+
checkOnDemandMappingJobExists(requesterLinkedInAccountId: number, targetLinkedInIdentifier: string): Promise<import("../utils/on-demand-mapping-operations").OnDemandMappingJob | null>;
|
|
256
|
+
updateOnDemandMappingJobId(requesterLinkedinAccountId: number, internalIdentifierAcoa: string, mappingJobId: number): Promise<import("../utils/on-demand-mapping-operations").OnDemandMappingJob>;
|
|
257
|
+
getLinkedInAccountsForUser(userId: number): Promise<import("./schema").LinkedinAccount[]>;
|
|
258
|
+
getAuthenticatedUserByCognitoId(cognitoUserId: string): Promise<import("./schema").AuthenticatedUser | null>;
|
|
259
|
+
getAuthenticatedUserByUserId(userId: number): Promise<import("./schema").AuthenticatedUser | null>;
|
|
260
|
+
getAuthenticatedUserByEmail(email: string): Promise<{
|
|
261
|
+
auth_user_id: number;
|
|
262
|
+
user_id: number | null;
|
|
263
|
+
email: string;
|
|
264
|
+
} | null>;
|
|
265
|
+
getUserByCognitoId(cognitoUserId: string): Promise<import("./schema").User | null>;
|
|
266
|
+
getExistingUnipileAccount(cognitoUserId: string, platformType: Parameters<typeof getExistingUnipileAccount>[2]): Promise<import("./schema").UnipileAccount | null>;
|
|
267
|
+
findAuthenticatedUserByCognitoId(cognitoUserId: string): Promise<import("./schema").AuthenticatedUser | null>;
|
|
268
|
+
findAuthenticatedUserById(authenticatedUserId: number): Promise<import("./schema").AuthenticatedUser | null>;
|
|
269
|
+
findAuthenticatedUserByUserId(userId: number): Promise<import("./schema").AuthenticatedUser | null>;
|
|
270
|
+
updateAuthenticatedUserAdminStatus(cognitoUserId: string, isAdmin: boolean): Promise<import("./schema").AuthenticatedUser | null>;
|
|
271
|
+
getAllAdminUsers(): Promise<import("./schema").AuthenticatedUser[]>;
|
|
272
|
+
getCachedLinkedinProfiles(acoIdentifiers: string[]): Promise<(import("../utils/linkedin-profile-cache").CachedLinkedInProfile | null)[]>;
|
|
273
|
+
getComprehensiveLinkedinProfile(identifier: string): Promise<import("../utils/linkedin-profile-cache").CachedLinkedInProfile | null>;
|
|
274
|
+
getComprehensiveLinkedinProfileById(linkedinAccountId: number): Promise<import("../utils/linkedin-profile-cache").CachedLinkedInProfile | null>;
|
|
275
|
+
createContactInfo(data: Parameters<typeof createContactInfo>[1]): Promise<import("./schema").ContactInfo>;
|
|
276
|
+
upsertContactInfo(data: Parameters<typeof upsertContactInfo>[1]): Promise<import("./schema").ContactInfo>;
|
|
277
|
+
batchCreateContactInfos(contactInfosData: Parameters<typeof batchCreateContactInfos>[1]): Promise<import("./schema").ContactInfo[]>;
|
|
278
|
+
batchUpsertContactInfos(contactInfosData: Parameters<typeof batchUpsertContactInfos>[1]): Promise<import("./schema").ContactInfo[]>;
|
|
279
|
+
getBatchUserEmails(userIds: number[]): Promise<Map<number, string[]>>;
|
|
280
|
+
createUnipileAccount(data: Parameters<typeof createUnipileAccount>[1]): Promise<import("./schema").UnipileAccount>;
|
|
281
|
+
upsertUnipileAccount(data: Parameters<typeof upsertUnipileAccount>[1]): Promise<import("./schema").UnipileAccount>;
|
|
282
|
+
getUserLinkedAccountStatus(cognitoUserId: string, activeOnly?: boolean): Promise<import("../utils/unipile-account-operations").LinkedAccountStatusMap>;
|
|
283
|
+
batchMarkAccountsAsSynced(accountIds: number[], syncTime?: Date): Promise<number>;
|
|
284
|
+
checkAcoaAlreadyConnectedToDifferentUser(linkedinIdentifierAcoa: string, currentUserId: number): Promise<number | null>;
|
|
285
|
+
upsertLinkedInAccountRelationshipScore(data: Parameters<typeof upsertLinkedInAccountRelationshipScore>[1]): Promise<import("./schema").LinkedinRelationship>;
|
|
286
|
+
getLinkedInAccountRelationshipScore(linkedinAccountIdA: number, linkedinAccountIdB: number, modelVersion: string, analysisType?: Parameters<typeof getLinkedInAccountRelationshipScore>[4]): Promise<import("./schema").LinkedinRelationship | null>;
|
|
287
|
+
getLinkedInRelationshipByIdWithAccountsAndUsers(relationshipId: number): Promise<LinkedinRelationshipWithAccountsAndUsers | null>;
|
|
288
|
+
getTopClosestConnections(cognitoUserId: string, modelVersion?: number, limit?: number, sortOrder?: Parameters<typeof getTopClosestConnections>[4]): Promise<{
|
|
289
|
+
score: number;
|
|
290
|
+
modelVersion: number | null;
|
|
291
|
+
createdAt: Date;
|
|
292
|
+
otherUser: {
|
|
293
|
+
id: number;
|
|
294
|
+
givenName: string | null;
|
|
295
|
+
familyName: string | null;
|
|
296
|
+
linkedinIdentifier: string | null;
|
|
297
|
+
profileImageUrl: string | null;
|
|
298
|
+
};
|
|
299
|
+
}[]>;
|
|
300
|
+
getConnectionsForChromeExtension(identifier: string, identifierType?: Parameters<typeof getConnectionsForChromeExtension>[2]): Promise<{
|
|
301
|
+
results: import("../queries/minimal-connections").ChromeExtensionConnection[];
|
|
302
|
+
pagination: {
|
|
303
|
+
page: number;
|
|
304
|
+
pageSize: number;
|
|
305
|
+
totalItems: number;
|
|
306
|
+
totalPages: number;
|
|
307
|
+
hasNextPage: boolean;
|
|
308
|
+
hasPreviousPage: boolean;
|
|
309
|
+
};
|
|
310
|
+
}>;
|
|
311
|
+
handlePostAuthentication(cognitoUserId: string, userId: number, signupEmail?: string): Promise<import("../utils/authentication-operations").AuthenticationResult>;
|
|
312
|
+
findOrCreateSkill(skillName: string, category?: Parameters<typeof findOrCreateSkill>[2]): Promise<{
|
|
313
|
+
id: number;
|
|
314
|
+
name: string;
|
|
315
|
+
}>;
|
|
316
|
+
findOrCreateSkills(skillInputs: Parameters<typeof findOrCreateSkills>[1]): Promise<{
|
|
317
|
+
id: number;
|
|
318
|
+
name: string;
|
|
319
|
+
}[]>;
|
|
320
|
+
addProfileSkills(profileId: number, skillInputs: Parameters<typeof addProfileSkills>[2]): Promise<{
|
|
321
|
+
added: number;
|
|
322
|
+
errors: string[];
|
|
323
|
+
}>;
|
|
324
|
+
getProfileSkills(profileId: number): Promise<{
|
|
325
|
+
skillId: number;
|
|
326
|
+
skillName: string;
|
|
327
|
+
}[]>;
|
|
328
|
+
addWorkExperienceSkills(workExperienceId: number, skillInputs: Parameters<typeof addWorkExperienceSkills>[2]): Promise<{
|
|
329
|
+
added: number;
|
|
330
|
+
errors: string[];
|
|
331
|
+
}>;
|
|
332
|
+
addEducationSkills(educationId: number, skillInputs: Parameters<typeof addEducationSkills>[2]): Promise<{
|
|
333
|
+
added: number;
|
|
334
|
+
errors: string[];
|
|
335
|
+
}>;
|
|
336
|
+
getEducationSkills(educationId: number): Promise<{
|
|
337
|
+
skill: {
|
|
338
|
+
id: number;
|
|
339
|
+
name: string;
|
|
340
|
+
};
|
|
341
|
+
}[]>;
|
|
342
|
+
getWorkExperienceSkills(workExperienceId: number): Promise<{
|
|
343
|
+
skillId: number;
|
|
344
|
+
skillName: string;
|
|
345
|
+
}[]>;
|
|
346
|
+
getPopularSkills(limit?: number): Promise<{
|
|
347
|
+
skillId: number;
|
|
348
|
+
skillName: string;
|
|
349
|
+
profileCount: number;
|
|
350
|
+
}[]>;
|
|
351
|
+
findLinkedInAccountByForagerId(foragerId: number): Promise<import("../utils/forager-linkedin-operations").LinkedInAccountResult | null>;
|
|
352
|
+
findLinkedInAccountByPublicIdentifier(publicIdentifier: string): Promise<import("../utils/forager-linkedin-operations").LinkedInAccountResult | null>;
|
|
353
|
+
findLinkedInAccountByAnyIdentifier(identifier: string | number): Promise<import("../utils/forager-linkedin-operations").LinkedInAccountResult | null>;
|
|
354
|
+
findLinkedInAccountByAcoa(linkedinIdentifierAcoa: string): Promise<import("../utils/forager-linkedin-operations").LinkedInAccountResult | null>;
|
|
355
|
+
findOrCreateLinkedInAccountByAcoa(linkedinIdentifierAcoa: string, publicIdentifier?: string, userId?: number): Promise<import("./db-types").FindOrCreateResult>;
|
|
356
|
+
findOrCreateLinkedInAccountByForagerId(foragerId: number, publicIdentifier?: string, linkedinIdentifierAcoa?: string, userId?: number): Promise<import("./db-types").FindOrCreateResult>;
|
|
357
|
+
storeCompleteLinkedInProfileByForagerId(foragerId: number, profileData: any, userId?: number, userWasCreated?: boolean): Promise<import("./db-types").CompleteLinkedInProfileResult>;
|
|
358
|
+
/**
|
|
359
|
+
* Store complete LinkedIn profile using ACoA identifier (for Ghost Genius profiles)
|
|
360
|
+
*/
|
|
361
|
+
storeCompleteLinkedInProfileByAcoa(linkedinIdentifierAcoa: string, profileData: any, userId?: number, userWasCreated?: boolean): Promise<import("./db-types").CompleteLinkedInProfileResult>;
|
|
362
|
+
updateLinkedInAccountAcoaIdentifierByForagerId(foragerId: number, linkedinIdentifierAcoa: string): Promise<import("../utils/forager-linkedin-operations").LinkedInAccountResult>;
|
|
363
|
+
updateLinkedInAccountAcoaIdentifierByForagerIdWithChangeDetection(foragerId: number, linkedinIdentifierAcoa: string): Promise<{
|
|
364
|
+
account: import("../utils/forager-linkedin-operations").LinkedInAccountResult;
|
|
365
|
+
wasChanged: boolean;
|
|
366
|
+
oldValue: string | null;
|
|
367
|
+
}>;
|
|
368
|
+
updateLinkedInAccountProfilePictureUrl(linkedinAccountId: number, profilePictureUrl: string, profileImageHash?: string): Promise<any>;
|
|
369
|
+
getLinkedInAccountProfileImageHash(linkedinAccountId: number): Promise<string | null>;
|
|
370
|
+
refreshCompleteLinkedInProfileByForagerId(foragerId: number, profileData: any, userId?: number): Promise<import("./db-types").CompleteLinkedInProfileResult>;
|
|
371
|
+
findAuthenticatedUserByForagerId(foragerId: number): Promise<{
|
|
372
|
+
user_id: number;
|
|
373
|
+
linkedin_account_id: number;
|
|
374
|
+
cognito_user_id: string;
|
|
375
|
+
} | null>;
|
|
376
|
+
findAuthenticatedUserByPublicIdentifier(publicIdentifier: string): Promise<{
|
|
377
|
+
user_id: number;
|
|
378
|
+
linkedin_account_id: number;
|
|
379
|
+
cognito_user_id: string;
|
|
380
|
+
} | null>;
|
|
381
|
+
findAuthenticatedUserByAnyIdentifier(identifier: string | number): Promise<{
|
|
382
|
+
user_id: number;
|
|
383
|
+
linkedin_account_id: number;
|
|
384
|
+
cognito_user_id: string;
|
|
385
|
+
} | null>;
|
|
386
|
+
handleLinkedInProfileFetchByForagerId(foragerId: number, publicIdentifier: string, profileData: any, linkedinIdentifierAcoa?: string, providerAccountId?: string): Promise<import("./db-types").ProfileFetchResult>;
|
|
387
|
+
getMostRecentWorkExperience(linkedinAccountId: number): Promise<any>;
|
|
388
|
+
getOrganizationMembershipsForUser(userId: number): Promise<import("../utils/organization-operations").OrganizationMembershipWithDetails[]>;
|
|
389
|
+
getOrganizationById(organizationId: number): Promise<import("../utils/organization-operations").Organization | null>;
|
|
390
|
+
findOrganizationByLinkedInCompanyId(linkedinCompanyId: number): Promise<import("../utils/organization-operations").Organization | null>;
|
|
391
|
+
findOrganizationByLinkedInPublicIdentifier(linkedinPublicIdentifier: string): Promise<import("../utils/organization-operations").Organization | null>;
|
|
392
|
+
findOrganizationByDedupKey(dedupKey: string): Promise<import("../utils/organization-operations").Organization | null>;
|
|
393
|
+
updateOrganizationLinkedInPublicIdentifier(organizationId: number, linkedinPublicIdentifier: string): Promise<boolean>;
|
|
394
|
+
createCompanyMappingJob(options: {
|
|
395
|
+
sourceType: "forager_api" | "sheet_upload";
|
|
396
|
+
linkedinPublicIdentifier?: string | null;
|
|
397
|
+
metadata?: Record<string, any>;
|
|
398
|
+
}): Promise<import("../utils/company-mapping-job-operations").CompanyMappingJob>;
|
|
399
|
+
updateCompanyMappingJobLinkedInId(companyMappingJobId: number, linkedinCompanyId: number): Promise<import("../utils/company-mapping-job-operations").CompanyMappingJob | null>;
|
|
400
|
+
updateCompanyMappingJobS3Path(companyMappingJobId: number, s3FilePath: string): Promise<import("../utils/company-mapping-job-operations").CompanyMappingJob | null>;
|
|
401
|
+
updateCompanyMappingJobQueued(companyMappingJobId: number, employeesCount?: number): Promise<import("../utils/company-mapping-job-operations").CompanyMappingJob | null>;
|
|
402
|
+
updateCompanyMappingJobStarted(companyMappingJobId: number): Promise<import("../utils/company-mapping-job-operations").CompanyMappingJob | null>;
|
|
403
|
+
updateCompanyMappingJobCompleted(companyMappingJobId: number, employeesCount?: number): Promise<import("../utils/company-mapping-job-operations").CompanyMappingJob | null>;
|
|
404
|
+
getCompanyMappingJobById(companyMappingJobId: number): Promise<import("../utils/company-mapping-job-operations").CompanyMappingJob | null>;
|
|
405
|
+
updateCompanyMappingJobOrganizationId(companyMappingJobId: number, organizationId: number): Promise<import("../utils/company-mapping-job-operations").CompanyMappingJob | null>;
|
|
406
|
+
createRecursiveMappingJob(options: {
|
|
407
|
+
originalMappingJobId: number;
|
|
408
|
+
organizationId?: number | null;
|
|
409
|
+
metadata?: Record<string, any>;
|
|
410
|
+
}): Promise<import("../utils/recursive-mapping-job-operations").RecursiveMappingJob>;
|
|
411
|
+
getRecursiveMappingJobById(recursiveMappingJobId: number): Promise<import("../utils/recursive-mapping-job-operations").RecursiveMappingJob | null>;
|
|
412
|
+
updateRecursiveMappingJobStarted(recursiveMappingJobId: number): Promise<import("../utils/recursive-mapping-job-operations").RecursiveMappingJob>;
|
|
413
|
+
updateRecursiveMappingJobCompleted(recursiveMappingJobId: number, downstreamJobsCount: number): Promise<import("../utils/recursive-mapping-job-operations").RecursiveMappingJob>;
|
|
414
|
+
updateOrganizationSubscriptionTier(organizationId: number, subscriptionTier: "PRO_VERSION" | "WAITING_FOR_SUBSCRIPTION_SELECTION"): Promise<import("../utils/organization-operations").Organization | null>;
|
|
415
|
+
upsertSubscription(subscriptionData: {
|
|
416
|
+
organizationId: number;
|
|
417
|
+
stripeCustomerId: string;
|
|
418
|
+
stripeSubscriptionId: string;
|
|
419
|
+
stripePriceId: string;
|
|
420
|
+
status: string;
|
|
421
|
+
currentPeriodStart: Date;
|
|
422
|
+
currentPeriodEnd: Date;
|
|
423
|
+
trialStart?: Date | null;
|
|
424
|
+
trialEnd?: Date | null;
|
|
425
|
+
canceledAt?: Date | null;
|
|
426
|
+
metadata?: Record<string, any>;
|
|
427
|
+
}): Promise<import("../utils/subscription-operations").Subscription>;
|
|
428
|
+
getSubscriptionByStripeId(stripeSubscriptionId: string): Promise<import("../utils/subscription-operations").Subscription | null>;
|
|
429
|
+
getSubscriptionByOrganizationId(organizationId: number): Promise<import("../utils/subscription-operations").Subscription | null>;
|
|
430
|
+
hasOrganizationUsedFreeTrial(organizationId: number): Promise<boolean>;
|
|
431
|
+
hasUserUsedFreeTrial(userId: number): Promise<boolean>;
|
|
432
|
+
isStripeEventProcessed(stripeEventId: string): Promise<boolean>;
|
|
433
|
+
updateSubscription(stripeSubscriptionId: string, updateData: {
|
|
434
|
+
status?: string;
|
|
435
|
+
currentPeriodStart?: Date;
|
|
436
|
+
currentPeriodEnd?: Date;
|
|
437
|
+
trialStart?: Date | null;
|
|
438
|
+
trialEnd?: Date | null;
|
|
439
|
+
canceledAt?: Date | null;
|
|
440
|
+
metadata?: Record<string, any>;
|
|
441
|
+
}): Promise<import("../utils/subscription-operations").Subscription | null>;
|
|
442
|
+
getOrganizationMembers(organizationId: number): Promise<import("../utils/organization-operations").OrganizationMember[]>;
|
|
443
|
+
getOrganizationContributors(organizationId: number, limit?: number, offset?: number): Promise<import("../utils/organization-operations").OrganizationMember[]>;
|
|
444
|
+
getOrganizationContributorsCount(organizationId: number): Promise<number>;
|
|
445
|
+
getOrganizationMembersCount(organizationId: number, contributionRole?: "CONTRIBUTOR" | "VISITOR"): Promise<number>;
|
|
446
|
+
getOrganizationMembershipForUser(userId: number, organizationId: number): Promise<import("../utils/organization-operations").OrganizationMember | null>;
|
|
447
|
+
getOrganizationContributorByUserId(organizationId: number, userId: number): Promise<import("../utils/organization-operations").OrganizationMember | null>;
|
|
448
|
+
findContributorPage(organizationId: number, userId: number, limit?: number): Promise<number | null>;
|
|
449
|
+
updateOrganizationMemberRole(userId: number, organizationId: number, params: {
|
|
450
|
+
contributionRole?: "VISITOR" | "CONTRIBUTOR";
|
|
451
|
+
permissionsRole?: "REGULAR" | "ADMIN";
|
|
452
|
+
}): Promise<import("../utils/organization-operations").OrganizationMember | null>;
|
|
453
|
+
getOrganizationMemberRelationships(organizationId: number, linkedinAccountId: number, limit?: number): Promise<import("../utils/organization-operations").LinkedinRelationship[]>;
|
|
454
|
+
getOrganizationMemberRelationshipsCount(organizationId: number, linkedinAccountId: number): Promise<number>;
|
|
455
|
+
createOrganization(organizationData: {
|
|
456
|
+
name: string;
|
|
457
|
+
workspaceType: "INDIVIDUALS" | "BUSINESS";
|
|
458
|
+
subscriptionTier: "PRO_VERSION" | "WAITING_FOR_SUBSCRIPTION_SELECTION";
|
|
459
|
+
createdByUserId?: number | null;
|
|
460
|
+
imageUrl?: string | null;
|
|
461
|
+
}): Promise<import("../utils/organization-operations").Organization>;
|
|
462
|
+
findOrCreateOrganizationMember(membershipData: {
|
|
463
|
+
organizationId: number;
|
|
464
|
+
userId: number;
|
|
465
|
+
contributionRole: "VISITOR" | "CONTRIBUTOR";
|
|
466
|
+
permissionsRole: "ADMIN" | "REGULAR";
|
|
467
|
+
}): Promise<import("../utils/organization-operations").OrganizationMember>;
|
|
468
|
+
findPersonalWorkspaceForUser(userId: number): Promise<import("../utils/organization-operations").Organization | null>;
|
|
469
|
+
findOrCreateOrganizationMemberLegacy(params: {
|
|
470
|
+
organizationId: number;
|
|
471
|
+
userId: number;
|
|
472
|
+
contributionRole: "VISITOR" | "CONTRIBUTOR";
|
|
473
|
+
permissionsRole: "REGULAR" | "ADMIN";
|
|
474
|
+
}): Promise<any>;
|
|
475
|
+
createOrganizationUserRelationshipAssignment(params: {
|
|
476
|
+
organizationId: number;
|
|
477
|
+
linkedinRelationshipId: number;
|
|
478
|
+
}): Promise<any>;
|
|
479
|
+
/**
|
|
480
|
+
* Bulk create organization user relationship assignments
|
|
481
|
+
* This is more efficient and atomic than individual inserts
|
|
482
|
+
*
|
|
483
|
+
* @param params - Parameters for bulk creation
|
|
484
|
+
* @returns Object with counts of created and skipped assignments
|
|
485
|
+
*/
|
|
486
|
+
bulkCreateOrganizationUserRelationshipAssignments(params: {
|
|
487
|
+
organizationId: number;
|
|
488
|
+
linkedinRelationshipIds: number[];
|
|
489
|
+
}): Promise<{
|
|
490
|
+
created: number;
|
|
491
|
+
skipped: number;
|
|
492
|
+
}>;
|
|
493
|
+
deleteOrganizationUserRelationshipAssignmentsByLinkedInAccount(params: {
|
|
494
|
+
organizationId: number;
|
|
495
|
+
linkedinAccountId: number;
|
|
496
|
+
}): Promise<number>;
|
|
497
|
+
/**
|
|
498
|
+
* Delete all relationship assignments for an organization member
|
|
499
|
+
* Uses organization_member_id for faster, more accurate lookups
|
|
500
|
+
* @param organizationMemberId - Organization member ID
|
|
501
|
+
* @param client - Optional transaction client (if provided, uses it instead of getting new connection)
|
|
502
|
+
*/
|
|
503
|
+
deleteAssignmentsByOrganizationMember(organizationMemberId: number, client?: any): Promise<number>;
|
|
504
|
+
/**
|
|
505
|
+
* Bulk insert relationship assignments for an organization member
|
|
506
|
+
* Uses organization_member_id for faster, more accurate lookups
|
|
507
|
+
* @param params - Parameters for bulk insert
|
|
508
|
+
* @param client - Optional transaction client (if provided, uses it instead of getting new connection)
|
|
509
|
+
*/
|
|
510
|
+
bulkInsertAssignmentsForOrganizationMember(params: {
|
|
511
|
+
organizationId: number;
|
|
512
|
+
organizationMemberId: number;
|
|
513
|
+
relationshipIds: number[];
|
|
514
|
+
}, client?: any): Promise<{
|
|
515
|
+
created: number;
|
|
516
|
+
skipped: number;
|
|
517
|
+
failed: number;
|
|
518
|
+
failedRelationshipIds: number[];
|
|
519
|
+
failedErrors: string[];
|
|
520
|
+
}>;
|
|
521
|
+
/**
|
|
522
|
+
* Verify relationship assignments for an organization member after commit
|
|
523
|
+
* Uses organization_member_id for faster, more accurate lookups
|
|
524
|
+
*/
|
|
525
|
+
verifyAssignmentsForOrganizationMember(params: {
|
|
526
|
+
organizationId: number;
|
|
527
|
+
organizationMemberId: number;
|
|
528
|
+
mappingJobId: number;
|
|
529
|
+
userLinkedinAccountId: number;
|
|
530
|
+
}): Promise<number>;
|
|
531
|
+
findOrCreatePersonalWorkspace(params: {
|
|
532
|
+
userId: number;
|
|
533
|
+
workspaceName?: string;
|
|
534
|
+
}): Promise<any>;
|
|
535
|
+
/**
|
|
536
|
+
* Get user's personal workspace by finding the organization they are a member of with workspace_type INDIVIDUALS
|
|
537
|
+
* Every authenticated user should have exactly one personal workspace
|
|
538
|
+
* @param userId - The user's ID
|
|
539
|
+
* @returns The personal workspace organization or null if not found
|
|
540
|
+
*/
|
|
541
|
+
getUserPersonalWorkspace(userId: number): Promise<any>;
|
|
542
|
+
getUserById(userId: number): Promise<import("./schema").User | null>;
|
|
543
|
+
getLatestCompletedMappingJobForUser(userId: number): Promise<import("./schema").MappingJob | null>;
|
|
544
|
+
getLatestCompletedMappingJobForLinkedInAccount(linkedinAccountId: number): Promise<import("./schema").MappingJob | null | undefined>;
|
|
545
|
+
getRelationshipsForMappingJob(jobId: number, maxCount?: number): Promise<import("./schema").LinkedinRelationship[]>;
|
|
546
|
+
getAllRelationshipsForMappingJob(jobId: number, maxCount?: number | null): Promise<import("./schema").LinkedinRelationship[]>;
|
|
547
|
+
getRelationshipCountForMappingJob(jobId: number): Promise<number>;
|
|
548
|
+
getLinkedInAccountByUserId(userId: number): Promise<import("./schema").LinkedinAccount | null>;
|
|
549
|
+
getUserByLinkedInAccountId(linkedinAccountId: number): Promise<import("./schema").User | null>;
|
|
550
|
+
getLinkedInAccountWithUserByForagerId(foragerId: number): Promise<import("../utils/forager-linkedin-operations").LinkedInAccountWithUser | null>;
|
|
551
|
+
getLlmInferenceJobStatusForContributor(params: {
|
|
552
|
+
userId: number;
|
|
553
|
+
organizationId: number;
|
|
554
|
+
}): Promise<{
|
|
555
|
+
status: "pending" | "completed" | "not_found";
|
|
556
|
+
llmInferenceJobId: number | null;
|
|
557
|
+
mappingJobId: number | null;
|
|
558
|
+
createdAt: Date | null;
|
|
559
|
+
startedAt: Date | null;
|
|
560
|
+
completedAt: Date | null;
|
|
561
|
+
} | null>;
|
|
562
|
+
getLlmInferenceJobStatusForMappingJob(mappingJobId: number): Promise<{
|
|
563
|
+
status: "pending" | "completed" | "not_found";
|
|
564
|
+
llmInferenceJobId: number | null;
|
|
565
|
+
mappingJobId: number | null;
|
|
566
|
+
createdAt: Date | null;
|
|
567
|
+
startedAt: Date | null;
|
|
568
|
+
completedAt: Date | null;
|
|
569
|
+
} | null>;
|
|
570
|
+
getAllLlmInferenceJobStatusesForOrganization(organizationId: number): Promise<Record<number, {
|
|
571
|
+
status: "pending" | "completed" | "not_found";
|
|
572
|
+
llmInferenceJobId: number | null;
|
|
573
|
+
mappingJobId: number | null;
|
|
574
|
+
createdAt: Date | null;
|
|
575
|
+
startedAt: Date | null;
|
|
576
|
+
completedAt: Date | null;
|
|
577
|
+
}>>;
|
|
578
|
+
getLinkedInAccountById(linkedinAccountId: number): Promise<import("./schema").LinkedinAccount | null>;
|
|
579
|
+
/**
|
|
580
|
+
* Get all industries for a user
|
|
581
|
+
* @param userId - User ID
|
|
582
|
+
* @returns Array of industry names (lowercase)
|
|
583
|
+
*/
|
|
584
|
+
getUserIndustries(userId: number): Promise<string[]>;
|
|
585
|
+
/**
|
|
586
|
+
* Get industries for multiple users (batch query - optimized)
|
|
587
|
+
* @param userIds - Array of user IDs
|
|
588
|
+
* @returns Map of userId -> industry names array
|
|
589
|
+
*/
|
|
590
|
+
getBatchUserIndustries(userIds: number[]): Promise<Map<number, string[]>>;
|
|
591
|
+
/**
|
|
592
|
+
* Find or create an industry by name (always lowercase)
|
|
593
|
+
* @param industryName - Industry name
|
|
594
|
+
* @returns Industry ID
|
|
595
|
+
*/
|
|
596
|
+
findOrCreateIndustry(industryName: string): Promise<number>;
|
|
597
|
+
/**
|
|
598
|
+
* Set industries for a user (replaces existing)
|
|
599
|
+
* @param userId - User ID
|
|
600
|
+
* @param industryNames - Array of industry names
|
|
601
|
+
*/
|
|
602
|
+
setUserIndustries(userId: number, industryNames: string[]): Promise<void>;
|
|
603
|
+
/**
|
|
604
|
+
* Add industries to a user (keeps existing)
|
|
605
|
+
* @param userId - User ID
|
|
606
|
+
* @param industryNames - Array of industry names to add
|
|
607
|
+
*/
|
|
608
|
+
addUserIndustries(userId: number, industryNames: string[]): Promise<void>;
|
|
609
|
+
/**
|
|
610
|
+
* Remove specific industries from a user
|
|
611
|
+
* @param userId - User ID
|
|
612
|
+
* @param industryNames - Array of industry names to remove
|
|
613
|
+
*/
|
|
614
|
+
removeUserIndustries(userId: number, industryNames: string[]): Promise<void>;
|
|
615
|
+
/**
|
|
616
|
+
* Remove all industries from a user
|
|
617
|
+
* @param userId - User ID
|
|
618
|
+
*/
|
|
619
|
+
clearUserIndustries(userId: number): Promise<void>;
|
|
620
|
+
/**
|
|
621
|
+
* Check if a user has a specific industry
|
|
622
|
+
* @param userId - User ID
|
|
623
|
+
* @param industryName - Industry name to check
|
|
624
|
+
* @returns True if user has the industry
|
|
625
|
+
*/
|
|
626
|
+
userHasIndustry(userId: number, industryName: string): Promise<boolean>;
|
|
627
|
+
/**
|
|
628
|
+
* Get all unique industries in the system
|
|
629
|
+
* @param limit - Optional limit (default: 1000)
|
|
630
|
+
* @returns Array of industry names
|
|
631
|
+
*/
|
|
632
|
+
getAllIndustries(limit?: number): Promise<string[]>;
|
|
633
|
+
/**
|
|
634
|
+
* Search industries by partial name match
|
|
635
|
+
* @param searchTerm - Search term (case-insensitive)
|
|
636
|
+
* @param limit - Optional limit (default: 20)
|
|
637
|
+
* @returns Array of matching industry names
|
|
638
|
+
*/
|
|
639
|
+
searchIndustries(searchTerm: string, limit?: number): Promise<string[]>;
|
|
640
|
+
createInvitation(email: string, invitedByUserId: number, shadowUserId: number, organizationId: number, invitationMessage?: string, invitedUserPermissionsRole?: "ADMIN" | "REGULAR", expiresInDays?: number): Promise<import("../utils/invitation-operations").InvitationDetails>;
|
|
641
|
+
validateInvitationToken(token: string): Promise<import("../utils/invitation-operations").ValidateTokenResult>;
|
|
642
|
+
validateInvitationEligibility(email: string): Promise<{
|
|
643
|
+
eligible: boolean;
|
|
644
|
+
reason?: "active_invitation" | "email_registered" | "email_reserved";
|
|
645
|
+
}>;
|
|
646
|
+
markInvitationAsUsed(token: string): Promise<import("../utils/invitation-operations").InvitationDetails | null>;
|
|
647
|
+
revokeInvitation(invitationId: number): Promise<import("../utils/invitation-operations").InvitationDetails | null>;
|
|
648
|
+
getInvitationById(invitationId: number): Promise<import("../utils/invitation-operations").InvitationWithDetails | null>;
|
|
649
|
+
getInvitationsSentByUser(invitedByUserId: number): Promise<import("../utils/invitation-operations").InvitationWithDetails[]>;
|
|
650
|
+
getPendingInvitationsByOrganization(organizationId: number): Promise<import("../utils/invitation-operations").InvitationWithDetails[]>;
|
|
651
|
+
getAllInvitationsByOrganization(organizationId: number): Promise<import("../utils/invitation-operations").InvitationWithDetails[]>;
|
|
652
|
+
hasPendingInvitation(email: string, organizationId: number): Promise<boolean>;
|
|
653
|
+
hasActiveInvitationByEmail(email: string): Promise<boolean>;
|
|
654
|
+
hasActiveInvitationByEmailForOrg(email: string, organizationId: number): Promise<boolean>;
|
|
655
|
+
isEmailUsedByAuthenticatedUser(email: string): Promise<boolean>;
|
|
656
|
+
isEmailReservedByContactInfo(email: string): Promise<boolean>;
|
|
657
|
+
cleanupExpiredInvitations(olderThanDays?: number): Promise<number>;
|
|
658
|
+
createIntroductionRequest(params: Parameters<typeof createIntroductionRequest>[1]): Promise<import("../utils/introduction-request-operations").IntroductionRequest>;
|
|
659
|
+
getIntroductionRequestsByUser(userId: number, limit?: number): Promise<import("../utils/introduction-request-operations").IntroductionRequest[]>;
|
|
660
|
+
getIntroductionRequestById(requestId: number): Promise<import("../utils/introduction-request-operations").IntroductionRequest | null>;
|
|
661
|
+
hasExistingIntroductionRequest(byUserId: number, toRelationshipId: number): Promise<boolean>;
|
|
662
|
+
updateIntroductionRequestStatus(requestId: number, status: "pending" | "approved" | "rejected"): Promise<import("../utils/introduction-request-operations").IntroductionRequest>;
|
|
663
|
+
markIntroductionRequestAsSeen(requestId: number): Promise<import("../utils/introduction-request-operations").IntroductionRequest>;
|
|
664
|
+
getReceivedIntroductionRequests(userId: number, organizationId: number): Promise<import("../utils/introduction-request-operations").DetailedIntroductionRequest[]>;
|
|
665
|
+
getSentIntroductionRequests(userId: number, organizationId: number): Promise<import("../utils/introduction-request-operations").DetailedIntroductionRequest[]>;
|
|
666
|
+
markReceivedIntroductionRequestsAsSeen(userId: number, organizationId: number): Promise<number>;
|
|
667
|
+
createUser(params: {
|
|
668
|
+
givenName: string;
|
|
669
|
+
familyName: string;
|
|
670
|
+
}): Promise<any>;
|
|
671
|
+
createAuthenticatedUser(params: {
|
|
672
|
+
userId?: number;
|
|
673
|
+
cognitoUserId: string;
|
|
674
|
+
contactInfoId?: number;
|
|
675
|
+
authProvider?: string;
|
|
676
|
+
}): Promise<import("./schema").AuthenticatedUser>;
|
|
677
|
+
createCompanySheetUpload(data: {
|
|
678
|
+
s3FilePath: string;
|
|
679
|
+
bucketName: string;
|
|
680
|
+
fileName?: string | null;
|
|
681
|
+
peopleCount?: number | null;
|
|
682
|
+
metadata?: Record<string, any>;
|
|
683
|
+
}): Promise<import("../utils/company-sheet-upload-operations").CompanySheetUpload>;
|
|
684
|
+
getCompanySheetUploadById(sheetUploadId: number): Promise<import("../utils/company-sheet-upload-operations").CompanySheetUpload | null>;
|
|
685
|
+
updateCompanySheetUploadJobId(sheetUploadId: number, companyMappingJobId: number): Promise<import("../utils/company-sheet-upload-operations").CompanySheetUpload | null>;
|
|
686
|
+
}
|
|
687
|
+
export declare const dbService: DatabaseService;
|
|
688
|
+
export { DatabaseService };
|
|
689
|
+
//# sourceMappingURL=database-service.d.ts.map
|