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 @@
|
|
|
1
|
+
{"version":3,"file":"sales-pipeline-operations.js","sourceRoot":"","sources":["../../src/utils/sales-pipeline-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* =============================================================================
|
|
3
|
+
* NORMALIZED SKILLS OPERATIONS - CRITICAL UTILITY FUNCTIONS
|
|
4
|
+
* =============================================================================
|
|
5
|
+
*
|
|
6
|
+
* This module provides essential functions for managing the normalized skills
|
|
7
|
+
* architecture with the central skills table and junction tables.
|
|
8
|
+
*
|
|
9
|
+
* ARCHITECTURE:
|
|
10
|
+
* - linkedin.skills: Master skills table (all unique skills)
|
|
11
|
+
* - linkedin.profile_skills: Junction table linking profiles to skills
|
|
12
|
+
* - linkedin.work_experience_skills: Junction table linking jobs to skills
|
|
13
|
+
* - linkedin.education_skills: Junction table linking education to skills
|
|
14
|
+
*
|
|
15
|
+
* All skill names are normalized to lowercase for consistency.
|
|
16
|
+
*/
|
|
17
|
+
import { Pool, PoolClient } from 'pg';
|
|
18
|
+
import type { Database, DatabaseOrTransaction } from "../lib/db";
|
|
19
|
+
export type SkillCategory = "technical" | "soft" | "industry" | "ai_ml" | "data" | "cloud" | "management" | "design" | "marketing" | "sales" | "other";
|
|
20
|
+
export interface SkillInput {
|
|
21
|
+
name: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Maximum allowed length for skill names
|
|
25
|
+
*/
|
|
26
|
+
export declare const MAX_SKILL_NAME_LENGTH = 50;
|
|
27
|
+
/**
|
|
28
|
+
* Validate skill name length and format
|
|
29
|
+
* @param skillName - The skill name to validate
|
|
30
|
+
* @returns Object with isValid boolean and error message if invalid
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateSkillName(skillName: string): {
|
|
33
|
+
isValid: boolean;
|
|
34
|
+
error?: string;
|
|
35
|
+
};
|
|
36
|
+
export interface ProfileSkillInput {
|
|
37
|
+
skillName: string;
|
|
38
|
+
}
|
|
39
|
+
export interface WorkExperienceSkillInput {
|
|
40
|
+
skillName: string;
|
|
41
|
+
}
|
|
42
|
+
export interface EducationSkillInput {
|
|
43
|
+
skillName: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Find or create a skill in the central skills table
|
|
47
|
+
* Normalizes skill name to lowercase for consistency and validates length
|
|
48
|
+
*/
|
|
49
|
+
export declare function findOrCreateSkill(db: Database | Pool | PoolClient, skillName: string, category?: SkillCategory): Promise<{
|
|
50
|
+
id: number;
|
|
51
|
+
name: string;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Batch find or create multiple skills - OPTIMIZED VERSION
|
|
55
|
+
* Uses bulk queries instead of sequential processing for 10x+ performance improvement
|
|
56
|
+
* Validates all skill names before processing
|
|
57
|
+
*/
|
|
58
|
+
export declare function findOrCreateSkills(db: DatabaseOrTransaction | Pool | PoolClient, skillInputs: SkillInput[]): Promise<Array<{
|
|
59
|
+
id: number;
|
|
60
|
+
name: string;
|
|
61
|
+
}>>;
|
|
62
|
+
/**
|
|
63
|
+
* Add skills to a LinkedIn profile - OPTIMIZED BATCH VERSION
|
|
64
|
+
* Uses bulk operations for 10x+ performance improvement
|
|
65
|
+
*/
|
|
66
|
+
export declare function addProfileSkills(db: DatabaseOrTransaction | Pool | PoolClient, linkedinAccountId: number, skillInputs: ProfileSkillInput[]): Promise<{
|
|
67
|
+
added: number;
|
|
68
|
+
errors: string[];
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* Get all skills for a LinkedIn account
|
|
72
|
+
*/
|
|
73
|
+
export declare function getProfileSkills(db: Database | Pool | PoolClient, linkedinAccountId: number): Promise<Array<{
|
|
74
|
+
skillId: number;
|
|
75
|
+
skillName: string;
|
|
76
|
+
}>>;
|
|
77
|
+
/**
|
|
78
|
+
* Add skills to a work experience entry - OPTIMIZED BATCH VERSION
|
|
79
|
+
* Uses bulk operations for 10x+ performance improvement
|
|
80
|
+
*/
|
|
81
|
+
export declare function addWorkExperienceSkills(db: DatabaseOrTransaction | Pool | PoolClient, workExperienceId: number, skillInputs: WorkExperienceSkillInput[]): Promise<{
|
|
82
|
+
added: number;
|
|
83
|
+
errors: string[];
|
|
84
|
+
}>;
|
|
85
|
+
/**
|
|
86
|
+
* Add skills to an education entry (with bulk operations)
|
|
87
|
+
* Uses bulk operations for 10x+ performance improvement
|
|
88
|
+
*/
|
|
89
|
+
export declare function addEducationSkills(db: DatabaseOrTransaction | Pool | PoolClient, educationId: number, skillInputs: EducationSkillInput[]): Promise<{
|
|
90
|
+
added: number;
|
|
91
|
+
errors: string[];
|
|
92
|
+
}>;
|
|
93
|
+
/**
|
|
94
|
+
* Get all skills for an education entry
|
|
95
|
+
*/
|
|
96
|
+
export declare function getEducationSkills(db: Database | Pool | PoolClient, educationId: number): Promise<Array<{
|
|
97
|
+
skill: {
|
|
98
|
+
id: number;
|
|
99
|
+
name: string;
|
|
100
|
+
};
|
|
101
|
+
}>>;
|
|
102
|
+
/**
|
|
103
|
+
* Get all skills for a work experience entry
|
|
104
|
+
*/
|
|
105
|
+
export declare function getWorkExperienceSkills(db: Database | Pool | PoolClient, workExperienceId: number): Promise<Array<{
|
|
106
|
+
skillId: number;
|
|
107
|
+
skillName: string;
|
|
108
|
+
}>>;
|
|
109
|
+
/**
|
|
110
|
+
* Get the most popular skills across all profiles
|
|
111
|
+
*/
|
|
112
|
+
export declare function getPopularSkills(db: Database | Pool | PoolClient, limit?: number): Promise<Array<{
|
|
113
|
+
skillId: number;
|
|
114
|
+
skillName: string;
|
|
115
|
+
profileCount: number;
|
|
116
|
+
}>>;
|
|
117
|
+
//# sourceMappingURL=skills-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-operations.d.ts","sourceRoot":"","sources":["../../src/utils/skills-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEtC,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAOjE,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,MAAM,GACN,UAAU,GACV,OAAO,GACP,MAAM,GACN,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,WAAW,GACX,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;CAEd;AAMD;;GAEG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAezF;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;CAEnB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;CAEnB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;CAEnB;AAMD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDvC;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,UAAU,EAC7C,WAAW,EAAE,UAAU,EAAE,GACxB,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA8I9C;AAMD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,UAAU,EAC7C,iBAAiB,EAAE,MAAM,EACzB,WAAW,EAAE,iBAAiB,EAAE,GAC/B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA4E9C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,iBAAiB,EAAE,MAAM,GACxB,OAAO,CACR,KAAK,CAAC;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CACH,CAmBA;AAMD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,UAAU,EAC7C,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,wBAAwB,EAAE,GACtC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkE9C;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,UAAU,EAC7C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,EAAE,GACjC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkE9C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC,CAqBzD;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,gBAAgB,EAAE,MAAM,GACvB,OAAO,CACR,KAAK,CAAC;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CACH,CAmBA;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,KAAK,GAAE,MAAW,GACjB,OAAO,CACR,KAAK,CAAC;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CACH,CAwBA"}
|
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* =============================================================================
|
|
4
|
+
* NORMALIZED SKILLS OPERATIONS - CRITICAL UTILITY FUNCTIONS
|
|
5
|
+
* =============================================================================
|
|
6
|
+
*
|
|
7
|
+
* This module provides essential functions for managing the normalized skills
|
|
8
|
+
* architecture with the central skills table and junction tables.
|
|
9
|
+
*
|
|
10
|
+
* ARCHITECTURE:
|
|
11
|
+
* - linkedin.skills: Master skills table (all unique skills)
|
|
12
|
+
* - linkedin.profile_skills: Junction table linking profiles to skills
|
|
13
|
+
* - linkedin.work_experience_skills: Junction table linking jobs to skills
|
|
14
|
+
* - linkedin.education_skills: Junction table linking education to skills
|
|
15
|
+
*
|
|
16
|
+
* All skill names are normalized to lowercase for consistency.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.MAX_SKILL_NAME_LENGTH = void 0;
|
|
20
|
+
exports.validateSkillName = validateSkillName;
|
|
21
|
+
exports.findOrCreateSkill = findOrCreateSkill;
|
|
22
|
+
exports.findOrCreateSkills = findOrCreateSkills;
|
|
23
|
+
exports.addProfileSkills = addProfileSkills;
|
|
24
|
+
exports.getProfileSkills = getProfileSkills;
|
|
25
|
+
exports.addWorkExperienceSkills = addWorkExperienceSkills;
|
|
26
|
+
exports.addEducationSkills = addEducationSkills;
|
|
27
|
+
exports.getEducationSkills = getEducationSkills;
|
|
28
|
+
exports.getWorkExperienceSkills = getWorkExperienceSkills;
|
|
29
|
+
exports.getPopularSkills = getPopularSkills;
|
|
30
|
+
const pg_client_1 = require("../lib/pg-client");
|
|
31
|
+
const db_1 = require("../lib/db");
|
|
32
|
+
// =============================================================================
|
|
33
|
+
// VALIDATION
|
|
34
|
+
// =============================================================================
|
|
35
|
+
/**
|
|
36
|
+
* Maximum allowed length for skill names
|
|
37
|
+
*/
|
|
38
|
+
exports.MAX_SKILL_NAME_LENGTH = 50;
|
|
39
|
+
/**
|
|
40
|
+
* Validate skill name length and format
|
|
41
|
+
* @param skillName - The skill name to validate
|
|
42
|
+
* @returns Object with isValid boolean and error message if invalid
|
|
43
|
+
*/
|
|
44
|
+
function validateSkillName(skillName) {
|
|
45
|
+
const trimmedName = skillName.trim();
|
|
46
|
+
if (trimmedName.length === 0) {
|
|
47
|
+
return { isValid: false, error: "Skill name cannot be empty" };
|
|
48
|
+
}
|
|
49
|
+
if (trimmedName.length > exports.MAX_SKILL_NAME_LENGTH) {
|
|
50
|
+
return {
|
|
51
|
+
isValid: false,
|
|
52
|
+
error: `Skill name exceeds maximum length of ${exports.MAX_SKILL_NAME_LENGTH} characters (current: ${trimmedName.length})`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return { isValid: true };
|
|
56
|
+
}
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// CORE SKILL OPERATIONS
|
|
59
|
+
// =============================================================================
|
|
60
|
+
/**
|
|
61
|
+
* Find or create a skill in the central skills table
|
|
62
|
+
* Normalizes skill name to lowercase for consistency and validates length
|
|
63
|
+
*/
|
|
64
|
+
async function findOrCreateSkill(db, skillName, category) {
|
|
65
|
+
// Validate skill name first
|
|
66
|
+
const validation = validateSkillName(skillName);
|
|
67
|
+
if (!validation.isValid) {
|
|
68
|
+
throw new Error(`Invalid skill name: ${validation.error}`);
|
|
69
|
+
}
|
|
70
|
+
const normalizedName = skillName.trim().toLowerCase();
|
|
71
|
+
// Try to find existing skill
|
|
72
|
+
const existingSql = `SELECT id, name FROM linkedin.skills WHERE name = $1 LIMIT 1`;
|
|
73
|
+
const existing = await (0, pg_client_1.queryOne)(db, existingSql, [normalizedName]);
|
|
74
|
+
if (existing) {
|
|
75
|
+
return {
|
|
76
|
+
id: existing.id,
|
|
77
|
+
name: existing.name,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Create new skill
|
|
81
|
+
const skillValues = {
|
|
82
|
+
name: normalizedName,
|
|
83
|
+
};
|
|
84
|
+
(0, db_1.debugLogDbOperation)("insert", "skills", skillValues);
|
|
85
|
+
const insertSql = `
|
|
86
|
+
INSERT INTO linkedin.skills (name, created_at)
|
|
87
|
+
VALUES ($1, NOW())
|
|
88
|
+
RETURNING id, name
|
|
89
|
+
`;
|
|
90
|
+
const newSkill = await (0, pg_client_1.queryOne)(db, insertSql, [normalizedName]);
|
|
91
|
+
if (!newSkill) {
|
|
92
|
+
throw new Error(`Failed to create skill: ${normalizedName}`);
|
|
93
|
+
}
|
|
94
|
+
(0, db_1.debugLogDbOperation)("insert", "skills", skillValues, newSkill);
|
|
95
|
+
return {
|
|
96
|
+
id: newSkill.id,
|
|
97
|
+
name: newSkill.name,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Batch find or create multiple skills - OPTIMIZED VERSION
|
|
102
|
+
* Uses bulk queries instead of sequential processing for 10x+ performance improvement
|
|
103
|
+
* Validates all skill names before processing
|
|
104
|
+
*/
|
|
105
|
+
async function findOrCreateSkills(db, skillInputs) {
|
|
106
|
+
if (skillInputs.length === 0)
|
|
107
|
+
return [];
|
|
108
|
+
// Validate all skill names first
|
|
109
|
+
const validationErrors = [];
|
|
110
|
+
skillInputs.forEach((input, index) => {
|
|
111
|
+
const validation = validateSkillName(input.name);
|
|
112
|
+
if (!validation.isValid) {
|
|
113
|
+
validationErrors.push(`Skill ${index + 1} (${input.name}): ${validation.error}`);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
if (validationErrors.length > 0) {
|
|
117
|
+
throw new Error(`Invalid skill names found:\n${validationErrors.join("\n")}`);
|
|
118
|
+
}
|
|
119
|
+
const normalizedInputs = skillInputs.map(input => ({
|
|
120
|
+
name: input.name.trim().toLowerCase(),
|
|
121
|
+
}));
|
|
122
|
+
// Deduplicate inputs to prevent "ON CONFLICT DO UPDATE command cannot affect row a second time" error
|
|
123
|
+
const uniqueInputsMap = new Map();
|
|
124
|
+
normalizedInputs.forEach(input => {
|
|
125
|
+
if (!uniqueInputsMap.has(input.name)) {
|
|
126
|
+
uniqueInputsMap.set(input.name, input);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const uniqueInputs = Array.from(uniqueInputsMap.values());
|
|
130
|
+
const skillNames = uniqueInputs.map(input => input.name);
|
|
131
|
+
// 1. Batch find existing skills
|
|
132
|
+
const placeholders = skillNames.map((_, i) => `$${i + 1}`).join(', ');
|
|
133
|
+
const selectSql = `SELECT id, name FROM linkedin.skills WHERE name IN (${placeholders})`;
|
|
134
|
+
const existingSkills = await (0, pg_client_1.query)(db, selectSql, skillNames);
|
|
135
|
+
const existingSkillMap = new Map(existingSkills.map(skill => [skill.name, skill]));
|
|
136
|
+
// 2. Identify missing skills
|
|
137
|
+
const missingSkills = uniqueInputs.filter(input => !existingSkillMap.has(input.name));
|
|
138
|
+
// 3. Batch create missing skills with conflict handling
|
|
139
|
+
if (missingSkills.length > 0) {
|
|
140
|
+
try {
|
|
141
|
+
const skillsToInsert = missingSkills.map(skill => ({
|
|
142
|
+
name: skill.name,
|
|
143
|
+
}));
|
|
144
|
+
(0, db_1.debugLogDbOperation)("insert", "skills", skillsToInsert, undefined, {
|
|
145
|
+
operation: "batch_create_skills",
|
|
146
|
+
count: missingSkills.length,
|
|
147
|
+
});
|
|
148
|
+
// Build VALUES clause for batch insert
|
|
149
|
+
const values = [];
|
|
150
|
+
const params = [];
|
|
151
|
+
let paramIndex = 1;
|
|
152
|
+
skillsToInsert.forEach((skill) => {
|
|
153
|
+
values.push(`($${paramIndex}, NOW())`);
|
|
154
|
+
params.push(skill.name);
|
|
155
|
+
paramIndex++;
|
|
156
|
+
});
|
|
157
|
+
const insertSql = `
|
|
158
|
+
INSERT INTO linkedin.skills (name, created_at)
|
|
159
|
+
VALUES ${values.join(', ')}
|
|
160
|
+
ON CONFLICT (name) DO NOTHING
|
|
161
|
+
RETURNING id, name
|
|
162
|
+
`;
|
|
163
|
+
const newSkills = await (0, pg_client_1.query)(db, insertSql, params);
|
|
164
|
+
(0, db_1.debugLogDbOperation)("insert", "skills", skillsToInsert, newSkills, {
|
|
165
|
+
operation: "batch_create_skills",
|
|
166
|
+
count: missingSkills.length,
|
|
167
|
+
inserted_count: newSkills.length,
|
|
168
|
+
});
|
|
169
|
+
// Add new skills to the map
|
|
170
|
+
newSkills.forEach(skill => {
|
|
171
|
+
existingSkillMap.set(skill.name, skill);
|
|
172
|
+
});
|
|
173
|
+
// Re-query for any skills that were created by another concurrent request
|
|
174
|
+
if (newSkills.length < missingSkills.length) {
|
|
175
|
+
const stillMissingNames = missingSkills
|
|
176
|
+
.filter(skill => !existingSkillMap.has(skill.name))
|
|
177
|
+
.map(skill => skill.name);
|
|
178
|
+
if (stillMissingNames.length > 0) {
|
|
179
|
+
const placeholders = stillMissingNames.map((_, i) => `$${i + 1}`).join(', ');
|
|
180
|
+
const requerySql = `SELECT id, name FROM linkedin.skills WHERE name IN (${placeholders})`;
|
|
181
|
+
const concurrentlyCreatedSkills = await (0, pg_client_1.query)(db, requerySql, stillMissingNames);
|
|
182
|
+
concurrentlyCreatedSkills.forEach(skill => {
|
|
183
|
+
existingSkillMap.set(skill.name, skill);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
// If batch insert fails completely, fall back to individual skill lookup
|
|
190
|
+
console.warn("Batch skill insert failed, falling back to individual lookups:", error);
|
|
191
|
+
for (const skill of missingSkills) {
|
|
192
|
+
try {
|
|
193
|
+
const lookupSql = `SELECT id, name FROM linkedin.skills WHERE name = $1 LIMIT 1`;
|
|
194
|
+
const existingSkill = await (0, pg_client_1.queryOne)(db, lookupSql, [skill.name]);
|
|
195
|
+
if (existingSkill) {
|
|
196
|
+
existingSkillMap.set(skill.name, existingSkill);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch (lookupError) {
|
|
200
|
+
console.warn(`Failed to lookup skill ${skill.name}:`, lookupError);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// 4. Return results in the same order as original input (including duplicates)
|
|
206
|
+
return normalizedInputs.map(input => {
|
|
207
|
+
const skill = existingSkillMap.get(input.name);
|
|
208
|
+
return {
|
|
209
|
+
id: skill.id,
|
|
210
|
+
name: skill.name,
|
|
211
|
+
};
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
// =============================================================================
|
|
215
|
+
// PROFILE SKILLS OPERATIONS
|
|
216
|
+
// =============================================================================
|
|
217
|
+
/**
|
|
218
|
+
* Add skills to a LinkedIn profile - OPTIMIZED BATCH VERSION
|
|
219
|
+
* Uses bulk operations for 10x+ performance improvement
|
|
220
|
+
*/
|
|
221
|
+
async function addProfileSkills(db, linkedinAccountId, skillInputs) {
|
|
222
|
+
if (skillInputs.length === 0)
|
|
223
|
+
return { added: 0, errors: [] };
|
|
224
|
+
const errors = [];
|
|
225
|
+
try {
|
|
226
|
+
// Clear existing skills for this LinkedIn account
|
|
227
|
+
const deleteSql = `DELETE FROM linkedin.profile_skills WHERE linkedin_account_id = $1`;
|
|
228
|
+
await (0, pg_client_1.execute)(db, deleteSql, [linkedinAccountId]);
|
|
229
|
+
// Batch find or create all skills
|
|
230
|
+
const skillRecords = await findOrCreateSkills(db, skillInputs.map(input => {
|
|
231
|
+
const skillInput = { name: input.skillName };
|
|
232
|
+
return skillInput;
|
|
233
|
+
}));
|
|
234
|
+
// Create skill ID map for fast lookup
|
|
235
|
+
const skillMap = new Map(skillRecords.map((skill, index) => [
|
|
236
|
+
skillInputs[index].skillName.trim().toLowerCase(),
|
|
237
|
+
skill,
|
|
238
|
+
]));
|
|
239
|
+
// Batch insert profile-skill associations
|
|
240
|
+
const associations = skillInputs
|
|
241
|
+
.map(input => {
|
|
242
|
+
const skill = skillMap.get(input.skillName.trim().toLowerCase());
|
|
243
|
+
if (!skill)
|
|
244
|
+
return null;
|
|
245
|
+
return {
|
|
246
|
+
linkedinAccountId,
|
|
247
|
+
skillId: skill.id,
|
|
248
|
+
};
|
|
249
|
+
})
|
|
250
|
+
.filter((item) => item !== null);
|
|
251
|
+
if (associations.length > 0) {
|
|
252
|
+
(0, db_1.debugLogDbOperation)("insert", "linkedin.profile_skills", associations, undefined, {
|
|
253
|
+
operation: "onConflictDoNothing",
|
|
254
|
+
linkedinAccountId: linkedinAccountId,
|
|
255
|
+
});
|
|
256
|
+
// Build VALUES clause for batch insert
|
|
257
|
+
const values = [];
|
|
258
|
+
const params = [];
|
|
259
|
+
let paramIndex = 1;
|
|
260
|
+
associations.forEach((assoc) => {
|
|
261
|
+
values.push(`($${paramIndex}, $${paramIndex + 1}, NOW())`);
|
|
262
|
+
params.push(assoc.linkedinAccountId, assoc.skillId);
|
|
263
|
+
paramIndex += 2;
|
|
264
|
+
});
|
|
265
|
+
const insertSql = `
|
|
266
|
+
INSERT INTO linkedin.profile_skills (linkedin_account_id, skill_id, created_at)
|
|
267
|
+
VALUES ${values.join(', ')}
|
|
268
|
+
ON CONFLICT (linkedin_account_id, skill_id) DO NOTHING
|
|
269
|
+
`;
|
|
270
|
+
await (0, pg_client_1.execute)(db, insertSql, params);
|
|
271
|
+
(0, db_1.debugLogDbOperation)("insert", "linkedin.profile_skills", associations, undefined, {
|
|
272
|
+
operation: "completed",
|
|
273
|
+
linkedinAccountId: linkedinAccountId,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
return { added: associations.length, errors };
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
errors.push(`Failed to batch process profile skills: ${error}`);
|
|
280
|
+
return { added: 0, errors };
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get all skills for a LinkedIn account
|
|
285
|
+
*/
|
|
286
|
+
async function getProfileSkills(db, linkedinAccountId) {
|
|
287
|
+
const sql = `
|
|
288
|
+
SELECT s.id as skill_id, s.name as skill_name
|
|
289
|
+
FROM linkedin.profile_skills ps
|
|
290
|
+
INNER JOIN linkedin.skills s ON ps.skill_id = s.id
|
|
291
|
+
WHERE ps.linkedin_account_id = $1
|
|
292
|
+
ORDER BY s.name ASC
|
|
293
|
+
`;
|
|
294
|
+
const results = await (0, pg_client_1.query)(db, sql, [linkedinAccountId]);
|
|
295
|
+
return results.map(r => ({
|
|
296
|
+
skillId: r.skill_id,
|
|
297
|
+
skillName: r.skill_name,
|
|
298
|
+
}));
|
|
299
|
+
}
|
|
300
|
+
// =============================================================================
|
|
301
|
+
// WORK EXPERIENCE SKILLS OPERATIONS
|
|
302
|
+
// =============================================================================
|
|
303
|
+
/**
|
|
304
|
+
* Add skills to a work experience entry - OPTIMIZED BATCH VERSION
|
|
305
|
+
* Uses bulk operations for 10x+ performance improvement
|
|
306
|
+
*/
|
|
307
|
+
async function addWorkExperienceSkills(db, workExperienceId, skillInputs) {
|
|
308
|
+
if (skillInputs.length === 0)
|
|
309
|
+
return { added: 0, errors: [] };
|
|
310
|
+
const errors = [];
|
|
311
|
+
try {
|
|
312
|
+
// Clear existing skills for this work experience
|
|
313
|
+
const deleteSql = `DELETE FROM linkedin.work_experience_skills WHERE work_experience_id = $1`;
|
|
314
|
+
await (0, pg_client_1.execute)(db, deleteSql, [workExperienceId]);
|
|
315
|
+
// Batch find or create all skills
|
|
316
|
+
const skillRecords = await findOrCreateSkills(db, skillInputs.map(input => {
|
|
317
|
+
const skillInput = { name: input.skillName };
|
|
318
|
+
return skillInput;
|
|
319
|
+
}));
|
|
320
|
+
// Create skill ID map for fast lookup
|
|
321
|
+
const skillMap = new Map(skillRecords.map((skill, index) => [
|
|
322
|
+
skillInputs[index].skillName.trim().toLowerCase(),
|
|
323
|
+
skill,
|
|
324
|
+
]));
|
|
325
|
+
// Batch insert work-experience-skill associations
|
|
326
|
+
const associations = skillInputs
|
|
327
|
+
.map(input => {
|
|
328
|
+
const skill = skillMap.get(input.skillName.trim().toLowerCase());
|
|
329
|
+
if (!skill)
|
|
330
|
+
return null;
|
|
331
|
+
return {
|
|
332
|
+
workExperienceId,
|
|
333
|
+
skillId: skill.id,
|
|
334
|
+
};
|
|
335
|
+
})
|
|
336
|
+
.filter((item) => item !== null);
|
|
337
|
+
if (associations.length > 0) {
|
|
338
|
+
// Build VALUES clause for batch insert
|
|
339
|
+
const values = [];
|
|
340
|
+
const params = [];
|
|
341
|
+
let paramIndex = 1;
|
|
342
|
+
associations.forEach((assoc) => {
|
|
343
|
+
values.push(`($${paramIndex}, $${paramIndex + 1}, NOW())`);
|
|
344
|
+
params.push(assoc.workExperienceId, assoc.skillId);
|
|
345
|
+
paramIndex += 2;
|
|
346
|
+
});
|
|
347
|
+
const insertSql = `
|
|
348
|
+
INSERT INTO linkedin.work_experience_skills (work_experience_id, skill_id, created_at)
|
|
349
|
+
VALUES ${values.join(', ')}
|
|
350
|
+
ON CONFLICT (work_experience_id, skill_id) DO NOTHING
|
|
351
|
+
`;
|
|
352
|
+
await (0, pg_client_1.execute)(db, insertSql, params);
|
|
353
|
+
}
|
|
354
|
+
return { added: associations.length, errors };
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
errors.push(`Failed to batch process work experience skills: ${error}`);
|
|
358
|
+
return { added: 0, errors };
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Add skills to an education entry (with bulk operations)
|
|
363
|
+
* Uses bulk operations for 10x+ performance improvement
|
|
364
|
+
*/
|
|
365
|
+
async function addEducationSkills(db, educationId, skillInputs) {
|
|
366
|
+
if (skillInputs.length === 0)
|
|
367
|
+
return { added: 0, errors: [] };
|
|
368
|
+
const errors = [];
|
|
369
|
+
try {
|
|
370
|
+
// Clear existing skills for this education
|
|
371
|
+
const deleteSql = `DELETE FROM linkedin.education_skills WHERE education_id = $1`;
|
|
372
|
+
await (0, pg_client_1.execute)(db, deleteSql, [educationId]);
|
|
373
|
+
// Batch find or create all skills
|
|
374
|
+
const skillRecords = await findOrCreateSkills(db, skillInputs.map(input => {
|
|
375
|
+
const skillInput = { name: input.skillName };
|
|
376
|
+
return skillInput;
|
|
377
|
+
}));
|
|
378
|
+
// Create skill ID map for fast lookup
|
|
379
|
+
const skillMap = new Map(skillRecords.map((skill, index) => [
|
|
380
|
+
skillInputs[index].skillName.trim().toLowerCase(),
|
|
381
|
+
skill,
|
|
382
|
+
]));
|
|
383
|
+
// Batch insert education-skill associations
|
|
384
|
+
const associations = skillInputs
|
|
385
|
+
.map(input => {
|
|
386
|
+
const skill = skillMap.get(input.skillName.trim().toLowerCase());
|
|
387
|
+
if (!skill)
|
|
388
|
+
return null;
|
|
389
|
+
return {
|
|
390
|
+
educationId,
|
|
391
|
+
skillId: skill.id,
|
|
392
|
+
};
|
|
393
|
+
})
|
|
394
|
+
.filter((item) => item !== null);
|
|
395
|
+
if (associations.length > 0) {
|
|
396
|
+
// Build VALUES clause for batch insert
|
|
397
|
+
const values = [];
|
|
398
|
+
const params = [];
|
|
399
|
+
let paramIndex = 1;
|
|
400
|
+
associations.forEach((assoc) => {
|
|
401
|
+
values.push(`($${paramIndex}, $${paramIndex + 1}, NOW())`);
|
|
402
|
+
params.push(assoc.educationId, assoc.skillId);
|
|
403
|
+
paramIndex += 2;
|
|
404
|
+
});
|
|
405
|
+
const insertSql = `
|
|
406
|
+
INSERT INTO linkedin.education_skills (education_id, skill_id, created_at)
|
|
407
|
+
VALUES ${values.join(', ')}
|
|
408
|
+
ON CONFLICT (education_id, skill_id) DO NOTHING
|
|
409
|
+
`;
|
|
410
|
+
await (0, pg_client_1.execute)(db, insertSql, params);
|
|
411
|
+
}
|
|
412
|
+
return { added: associations.length, errors };
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
errors.push(`Failed to batch process education skills: ${error}`);
|
|
416
|
+
return { added: 0, errors };
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Get all skills for an education entry
|
|
421
|
+
*/
|
|
422
|
+
async function getEducationSkills(db, educationId) {
|
|
423
|
+
const sql = `
|
|
424
|
+
SELECT s.id, s.name
|
|
425
|
+
FROM linkedin.education_skills es
|
|
426
|
+
INNER JOIN linkedin.skills s ON es.skill_id = s.id
|
|
427
|
+
WHERE es.education_id = $1
|
|
428
|
+
ORDER BY s.name ASC
|
|
429
|
+
`;
|
|
430
|
+
const results = await (0, pg_client_1.query)(db, sql, [educationId]);
|
|
431
|
+
return results.map(r => ({
|
|
432
|
+
skill: {
|
|
433
|
+
id: r.id,
|
|
434
|
+
name: r.name,
|
|
435
|
+
},
|
|
436
|
+
}));
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Get all skills for a work experience entry
|
|
440
|
+
*/
|
|
441
|
+
async function getWorkExperienceSkills(db, workExperienceId) {
|
|
442
|
+
const sql = `
|
|
443
|
+
SELECT s.id as skill_id, s.name as skill_name
|
|
444
|
+
FROM linkedin.work_experience_skills wes
|
|
445
|
+
INNER JOIN linkedin.skills s ON wes.skill_id = s.id
|
|
446
|
+
WHERE wes.work_experience_id = $1
|
|
447
|
+
ORDER BY s.name ASC
|
|
448
|
+
`;
|
|
449
|
+
const results = await (0, pg_client_1.query)(db, sql, [workExperienceId]);
|
|
450
|
+
return results.map(r => ({
|
|
451
|
+
skillId: r.skill_id,
|
|
452
|
+
skillName: r.skill_name,
|
|
453
|
+
}));
|
|
454
|
+
}
|
|
455
|
+
// =============================================================================
|
|
456
|
+
// ANALYTICS & INSIGHTS
|
|
457
|
+
// =============================================================================
|
|
458
|
+
/**
|
|
459
|
+
* Get the most popular skills across all profiles
|
|
460
|
+
*/
|
|
461
|
+
async function getPopularSkills(db, limit = 50) {
|
|
462
|
+
const sql = `
|
|
463
|
+
SELECT
|
|
464
|
+
s.id as skill_id,
|
|
465
|
+
s.name as skill_name,
|
|
466
|
+
COUNT(DISTINCT ps.linkedin_account_id) as profile_count
|
|
467
|
+
FROM linkedin.skills s
|
|
468
|
+
INNER JOIN linkedin.profile_skills ps ON s.id = ps.skill_id
|
|
469
|
+
GROUP BY s.id, s.name
|
|
470
|
+
ORDER BY COUNT(DISTINCT ps.linkedin_account_id) DESC
|
|
471
|
+
LIMIT $1
|
|
472
|
+
`;
|
|
473
|
+
const results = await (0, pg_client_1.query)(db, sql, [limit]);
|
|
474
|
+
return results.map(r => ({
|
|
475
|
+
skillId: r.skill_id,
|
|
476
|
+
skillName: r.skill_name,
|
|
477
|
+
profileCount: parseInt(r.profile_count),
|
|
478
|
+
}));
|
|
479
|
+
}
|
|
480
|
+
// =============================================================================
|
|
481
|
+
// DEPRECATED EXPORTS - CLEANED UP
|
|
482
|
+
// =============================================================================
|
|
483
|
+
// findSimilarProfiles - REMOVED (unused complex maintenance function)
|
|
484
|
+
// getAllSkillsWithStats - REMOVED (unused maintenance function)
|
|
485
|
+
// cleanupUnusedSkills - REMOVED (unused maintenance function)
|
|
486
|
+
// getSkillsByCategory - REMOVED (unused maintenance function)
|
|
487
|
+
//# sourceMappingURL=skills-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-operations.js","sourceRoot":"","sources":["../../src/utils/skills-operations.ts"],"names":[],"mappings":"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"}
|