@ttctl/core 0.1.0-rc.3 → 0.1.0-rc.4
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/dist/__tests__/fixtures/profile/builders.d.ts.map +1 -1
- package/dist/__tests__/fixtures/profile/builders.js +2 -0
- package/dist/__tests__/fixtures/profile/builders.js.map +1 -1
- package/dist/__tests__/fixtures/profile/data.d.ts.map +1 -1
- package/dist/__tests__/fixtures/profile/data.js +4 -0
- package/dist/__tests__/fixtures/profile/data.js.map +1 -1
- package/dist/services/profile/basic/index.d.ts +113 -27
- package/dist/services/profile/basic/index.d.ts.map +1 -1
- package/dist/services/profile/basic/index.js +176 -66
- package/dist/services/profile/basic/index.js.map +1 -1
- package/dist/services/profile/employment/index.d.ts +175 -3
- package/dist/services/profile/employment/index.d.ts.map +1 -1
- package/dist/services/profile/employment/index.js +265 -14
- package/dist/services/profile/employment/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/profile/employment/index.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,mDAAmD;IACnD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sDAAsD;IACtD,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,8DAA8D;IAC9D,gBAAgB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/profile/employment/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
2
|
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
-
import { ProfileError } from "../basic/index.js";
|
|
3
|
+
import { DRY_RUN_PROFILE_ID_PLACEHOLDER, ProfileError } from "../basic/index.js";
|
|
4
4
|
import { applyUserErrorsAndSuccess, callTalentProfile, ensureNoTopLevelErrors, extractProfileId } from "../shared.js";
|
|
5
|
+
import { buildDryRunPreview } from "../../../transport.js";
|
|
5
6
|
const EMPLOYMENT_FRAGMENT = `fragment Employment on Employment {
|
|
6
7
|
id
|
|
7
8
|
company
|
|
@@ -18,6 +19,8 @@ const EMPLOYMENT_FRAGMENT = `fragment Employment on Employment {
|
|
|
18
19
|
reportingTo
|
|
19
20
|
industries { nodes { id name } }
|
|
20
21
|
primaryGeography { id code name }
|
|
22
|
+
employer { id }
|
|
23
|
+
skills { nodes { id name } }
|
|
21
24
|
}`;
|
|
22
25
|
const GET_WORK_EXPERIENCE_QUERY = `query GET_WORK_EXPERIENCE($profileId: ID!) {
|
|
23
26
|
profile(id: $profileId) {
|
|
@@ -92,6 +95,12 @@ function mapEmploymentNode(node) {
|
|
|
92
95
|
name: typeof geoRaw.name === "string" ? geoRaw.name : null,
|
|
93
96
|
}
|
|
94
97
|
: null;
|
|
98
|
+
const employerRaw = node["employer"];
|
|
99
|
+
const employerId = employerRaw && typeof employerRaw.id === "string" ? employerRaw.id : null;
|
|
100
|
+
const skillsConn = node["skills"];
|
|
101
|
+
const skills = Array.isArray(skillsConn?.nodes)
|
|
102
|
+
? skillsConn.nodes.flatMap((s) => typeof s.id === "string" && typeof s.name === "string" ? [{ id: s.id, name: s.name }] : [])
|
|
103
|
+
: [];
|
|
95
104
|
const rawItems = node["experienceItems"];
|
|
96
105
|
return {
|
|
97
106
|
id: typeof node["id"] === "string" ? node["id"] : "",
|
|
@@ -111,6 +120,8 @@ function mapEmploymentNode(node) {
|
|
|
111
120
|
reportingTo: node["reportingTo"] ?? null,
|
|
112
121
|
industries,
|
|
113
122
|
primaryGeography,
|
|
123
|
+
employerId,
|
|
124
|
+
skills,
|
|
114
125
|
};
|
|
115
126
|
}
|
|
116
127
|
/**
|
|
@@ -151,27 +162,98 @@ export async function show(token, id) {
|
|
|
151
162
|
}
|
|
152
163
|
/**
|
|
153
164
|
* Create a new employment row. Wire format per Pattern 2: `{ profileId,
|
|
154
|
-
* employment: EmploymentInput }`.
|
|
165
|
+
* employment: EmploymentInput }`.
|
|
166
|
+
*
|
|
167
|
+
* **employerId resolution (#395)**: the live `talent_profile/graphql`
|
|
168
|
+
* server requires `employment.employerId` (the catalog identifier),
|
|
169
|
+
* NOT the free-text `company` string. Pre-#395, `add({company, role,
|
|
170
|
+
* …})` sent only the company string and was rejected with
|
|
171
|
+
* `USER_ERROR: employment add rejected (employerId): You can't leave
|
|
172
|
+
* this empty`. The fix:
|
|
173
|
+
*
|
|
174
|
+
* 1. If `fields.employerId` is supplied → use it verbatim. This is
|
|
175
|
+
* the explicit-bypass path (`--employer-id` on CLI,
|
|
176
|
+
* `employerId` on MCP) — useful for replay scripts, the
|
|
177
|
+
* disambiguation fallback, or known-good ids.
|
|
178
|
+
* 2. Otherwise, fire {@link employerAutocomplete} against
|
|
179
|
+
* `fields.company`. Toptal's autocomplete is fuzzy / prefix-
|
|
180
|
+
* search (typing "Anthropic" returns 10 partial matches), so the
|
|
181
|
+
* practical cardinality is on EXACT NAME MATCH (case-insensitive
|
|
182
|
+
* trim):
|
|
183
|
+
* - exactly 1 exact match → use its id transparently
|
|
184
|
+
* - 2+ exact matches (catalog duplicates — e.g. multiple
|
|
185
|
+
* regional subsidiaries with the same display name) →
|
|
186
|
+
* `VALIDATION_ERROR` listing the duplicates + `--employer-id`
|
|
187
|
+
* nudge
|
|
188
|
+
* - 0 exact, 0 fuzzy → `VALIDATION_ERROR` nudging to the
|
|
189
|
+
* autocomplete CLI command or `--employer-id` bypass
|
|
190
|
+
* - 0 exact, ≥1 fuzzy → `VALIDATION_ERROR` listing the top-N
|
|
191
|
+
* closest candidates with `--employer-id` nudge (the user
|
|
192
|
+
* typed a prefix; surface the catalog's actual names)
|
|
193
|
+
*
|
|
194
|
+
* The static defaults at `experienceItems: []`, `skills: []`,
|
|
195
|
+
* `showViaToptal: true` are retained pre-#395 — they were established
|
|
196
|
+
* empirically via the #344 E2E to satisfy "Expected value to not be
|
|
197
|
+
* null" on those required fields. Reviewing them in this PR would
|
|
198
|
+
* be premature without a fresh live capture; they may be revisited in
|
|
199
|
+
* a follow-up that mirrors the basic.set #393 read-merge pattern for
|
|
200
|
+
* employment.add.
|
|
201
|
+
*
|
|
202
|
+
* **Dry-run path (#395)**: when `options.dryRun === true`, the
|
|
203
|
+
* employer resolution still runs (fires `employersAutocomplete` if
|
|
204
|
+
* `employerId` is absent) so the preview's `variables.input.employment`
|
|
205
|
+
* carries the resolved `employerId`, matching the wire shape the live
|
|
206
|
+
* mutation would transmit. The `CreateEmployment` mutation transport
|
|
207
|
+
* is NOT invoked. The placeholder
|
|
208
|
+
* {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} stands in for `profileId`
|
|
209
|
+
* (which the apply-path resolves via `extractProfileId`).
|
|
155
210
|
*/
|
|
156
|
-
export async function add(token, fields) {
|
|
211
|
+
export async function add(token, fields, options = {}) {
|
|
157
212
|
if (!fields.company || !fields.position) {
|
|
158
213
|
throw new ProfileError("VALIDATION_ERROR", "employment add requires --company and --role.");
|
|
159
214
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
//
|
|
166
|
-
//
|
|
167
|
-
//
|
|
168
|
-
//
|
|
215
|
+
// Resolve employerId BEFORE branching on dryRun so the preview's
|
|
216
|
+
// wire shape matches what the live mutation would transmit (#395
|
|
217
|
+
// explicit AC). The autocomplete query is a read, not a mutation —
|
|
218
|
+
// it fires in both dry-run and apply paths.
|
|
219
|
+
const employerId = await resolveEmployerId(token, fields);
|
|
220
|
+
// The wire requires several non-null fields on `CreateEmployment`
|
|
221
|
+
// (live API rejects with "Expected value to not be null" / "You can't
|
|
222
|
+
// leave this empty" otherwise). The defaults below were established
|
|
223
|
+
// empirically through E2E iteration — DO NOT add pre-emptive defaults
|
|
224
|
+
// for fields the server hasn't explicitly demanded, since
|
|
225
|
+
// `CreateEmploymentInput` rejects unknown fields with
|
|
226
|
+
// "Field is not defined on EmploymentInput" (e.g. `toptalRelated`,
|
|
227
|
+
// `highlight` are valid on `UpdateEmploymentInput` but NOT on
|
|
228
|
+
// `CreateEmploymentInput`).
|
|
229
|
+
// - `experienceItems`, `skills`, `showViaToptal` — via the #344 E2E
|
|
230
|
+
// - `publicationPermit` — via the #395 live capture (2026-05-19)
|
|
231
|
+
// Callers may still override.
|
|
169
232
|
const employment = {
|
|
170
233
|
experienceItems: [],
|
|
171
234
|
skills: [],
|
|
172
235
|
showViaToptal: true,
|
|
236
|
+
publicationPermit: false,
|
|
173
237
|
...fields,
|
|
238
|
+
employerId,
|
|
174
239
|
};
|
|
240
|
+
if (options.dryRun === true) {
|
|
241
|
+
return {
|
|
242
|
+
kind: "preview",
|
|
243
|
+
preview: buildDryRunPreview({
|
|
244
|
+
surface: "talent-profile",
|
|
245
|
+
authToken: token,
|
|
246
|
+
body: {
|
|
247
|
+
operationName: "CreateEmployment",
|
|
248
|
+
query: CREATE_EMPLOYMENT_MUTATION,
|
|
249
|
+
variables: { input: { profileId: DRY_RUN_PROFILE_ID_PLACEHOLDER, employment } },
|
|
250
|
+
},
|
|
251
|
+
}),
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
const profileId = await extractProfileId(token);
|
|
255
|
+
const before = await listByProfileId(token, profileId);
|
|
256
|
+
const beforeIds = new Set(before.map((e) => e.id));
|
|
175
257
|
const res = await callTalentProfile(token, "CreateEmployment", CREATE_EMPLOYMENT_MUTATION, { input: { profileId, employment } }, "employment add");
|
|
176
258
|
const payload = unwrapMutation(res, "createEmployment", "employment add");
|
|
177
259
|
const after = payload.profile?.employments.nodes.filter((n) => n !== null).map(mapEmploymentNode) ??
|
|
@@ -180,17 +262,186 @@ export async function add(token, fields) {
|
|
|
180
262
|
if (!created) {
|
|
181
263
|
throw new ProfileError("UNKNOWN", "employment add returned success but no new row was found in the response.");
|
|
182
264
|
}
|
|
183
|
-
return created;
|
|
265
|
+
return { kind: "created", result: created };
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Resolve `fields.employerId` for the create-employment flow (#395).
|
|
269
|
+
*
|
|
270
|
+
* - Explicit `fields.employerId` → returned verbatim (bypass).
|
|
271
|
+
* - Otherwise call {@link employerAutocomplete}; Toptal's autocomplete
|
|
272
|
+
* is fuzzy / prefix-search, so the practical cardinality is on
|
|
273
|
+
* **exact name match** (case-insensitive, trimmed):
|
|
274
|
+
* - 1 exact match → transparent use
|
|
275
|
+
* - 0 exact, 0 fuzzy → "No employer matched" nudge
|
|
276
|
+
* - 0 exact, ≥1 fuzzy → "No exact match; closest candidates"
|
|
277
|
+
* listing + `--employer-id` nudge (the user typed a prefix /
|
|
278
|
+
* substring; we surface the catalog's actual names so they can
|
|
279
|
+
* pick an id)
|
|
280
|
+
* - 2+ exact → disambiguation listing of the duplicates (the
|
|
281
|
+
* catalog has multiple records with the same display name —
|
|
282
|
+
* common for companies with city subsidiaries; the user must
|
|
283
|
+
* pick one)
|
|
284
|
+
*
|
|
285
|
+
* Errors all surface as `VALIDATION_ERROR` with actionable recovery
|
|
286
|
+
* text so the CLI / MCP layer can render them as user-facing
|
|
287
|
+
* messages without further classification.
|
|
288
|
+
*/
|
|
289
|
+
async function resolveEmployerId(token, fields) {
|
|
290
|
+
if (fields.employerId !== undefined && fields.employerId !== "") {
|
|
291
|
+
return fields.employerId;
|
|
292
|
+
}
|
|
293
|
+
// `fields.company` is asserted non-empty by the caller (the add()
|
|
294
|
+
// pre-flight rejects an empty company / position).
|
|
295
|
+
const company = fields.company ?? "";
|
|
296
|
+
const matches = await employerAutocomplete(token, company);
|
|
297
|
+
const norm = company.trim().toLowerCase();
|
|
298
|
+
const exact = matches.filter((m) => m.name.trim().toLowerCase() === norm);
|
|
299
|
+
if (exact.length === 1) {
|
|
300
|
+
const only = exact[0];
|
|
301
|
+
if (only === undefined) {
|
|
302
|
+
// Defensive: exact.length === 1 but indexed read is undefined —
|
|
303
|
+
// a TypeScript noUncheckedIndexedAccess guard. Unreachable at
|
|
304
|
+
// runtime.
|
|
305
|
+
throw new ProfileError("UNKNOWN", "employer-autocomplete returned 1 exact match but indexing it yielded undefined.");
|
|
306
|
+
}
|
|
307
|
+
return only.id;
|
|
308
|
+
}
|
|
309
|
+
if (exact.length >= 2) {
|
|
310
|
+
// Multiple catalog records share the user-supplied exact name
|
|
311
|
+
// (common for global companies with regional subsidiaries listed
|
|
312
|
+
// separately). Surface only the exact-name duplicates — the fuzzy
|
|
313
|
+
// siblings would just add noise.
|
|
314
|
+
const list = exact.map(formatCandidate).join("\n");
|
|
315
|
+
throw new ProfileError("VALIDATION_ERROR", `Multiple employers matched "${company}" exactly (${exact.length.toString()} duplicates in the catalog):\n` +
|
|
316
|
+
`${list}\n` +
|
|
317
|
+
`Pass \`--employer-id <id>\` to disambiguate.`);
|
|
318
|
+
}
|
|
319
|
+
// exact.length === 0
|
|
320
|
+
if (matches.length === 0) {
|
|
321
|
+
throw new ProfileError("VALIDATION_ERROR", `No employer matched "${company}". Use ` +
|
|
322
|
+
`\`ttctl profile employment employer-autocomplete <query>\` to search the catalog, ` +
|
|
323
|
+
`or pass \`--employer-id <id>\` to bypass autocomplete.`);
|
|
324
|
+
}
|
|
325
|
+
// 0 exact, ≥1 fuzzy. Surface the catalog's actual names so the user
|
|
326
|
+
// can refine (or pick an id directly).
|
|
327
|
+
const top = matches.slice(0, 5);
|
|
328
|
+
const list = top.map(formatCandidate).join("\n");
|
|
329
|
+
throw new ProfileError("VALIDATION_ERROR", `No exact match for "${company}" in the employer catalog ` +
|
|
330
|
+
`(${matches.length.toString()} fuzzy match${matches.length === 1 ? "" : "es"}; showing top ${top.length.toString()}):\n` +
|
|
331
|
+
`${list}\n` +
|
|
332
|
+
`Refine the company string to the exact catalog name, or pass \`--employer-id <id>\` to bypass autocomplete.`);
|
|
333
|
+
}
|
|
334
|
+
function formatCandidate(m) {
|
|
335
|
+
const loc = [m.city, m.country].filter((v) => v !== null && v !== "").join(", ");
|
|
336
|
+
return ` - ${m.id} ${m.name}${loc ? ` (${loc})` : ""}`;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Placeholder string substituted into a dry-run `UpdateEmployment`
|
|
340
|
+
* preview's variables payload for fields that the apply-path resolves by
|
|
341
|
+
* reading the current row (`experienceItems`, `skills`, `showViaToptal`,
|
|
342
|
+
* `startDate` — the four required-non-null fields injected by the
|
|
343
|
+
* read-current+merge logic, #394). Surfaced verbatim so MCP consumers can
|
|
344
|
+
* see the structural shape of what will be sent without TTCtl having
|
|
345
|
+
* fired the read transport. Same posture as `basic.set`'s
|
|
346
|
+
* {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} — preserves the zero-transport-
|
|
347
|
+
* in-dry-run invariant (#165 / #379) while honoring #394's AC that the
|
|
348
|
+
* preview shows the full merged shape.
|
|
349
|
+
*/
|
|
350
|
+
export const DRY_RUN_EMPLOYMENT_MERGE_PLACEHOLDER = "<resolved at send-time by reading current state>";
|
|
351
|
+
/**
|
|
352
|
+
* Build the merged `EmploymentInput` to send for an `UpdateEmployment`
|
|
353
|
+
* mutation by reading the current row and overlaying user-supplied fields.
|
|
354
|
+
*
|
|
355
|
+
* The `talent_profile/graphql` server treats four `EmploymentInput` fields
|
|
356
|
+
* as required non-null on `UpdateEmployment` and rejects the whole
|
|
357
|
+
* variables payload with `"Expected value to not be null"` when they are
|
|
358
|
+
* absent (#394 — wire-broke meta-class #392). The four fields are
|
|
359
|
+
* `experienceItems`, `showViaToptal`, `startDate`, and `skills`. This
|
|
360
|
+
* helper injects them from the current state where the EMPLOYMENT_FRAGMENT
|
|
361
|
+
* surfaces them (`experienceItems`, `showViaToptal`, `startDate`) and
|
|
362
|
+
* defaults `skills: []` because the fragment does not currently select the
|
|
363
|
+
* read-side `skills` connection. Other fields are left undefined and
|
|
364
|
+
* omitted from the wire payload — the server keeps the existing value for
|
|
365
|
+
* any field absent from the input (the omission-is-preservation half of
|
|
366
|
+
* the merge contract; only the four required-non-null fields force-echo).
|
|
367
|
+
*
|
|
368
|
+
* **Known limitation (#394)**: `skills` defaults to `[]` because the
|
|
369
|
+
* current read fragment does not surface skills. Calling `update()` on a
|
|
370
|
+
* row that has skills will reset them to empty. A follow-up will extend
|
|
371
|
+
* the fragment to read skills and preserve them through the merge; for
|
|
372
|
+
* the test-account this is acceptable, and the bug fix here is for the
|
|
373
|
+
* minimal `{id, role}` repro that previously failed at the wire layer
|
|
374
|
+
* regardless of skills state.
|
|
375
|
+
*
|
|
376
|
+
* Exported so the MCP layer can build the same merged input for the
|
|
377
|
+
* dry-run preview (AC: "Dry-run preview shows the full merged input").
|
|
378
|
+
*
|
|
379
|
+
* @throws `ProfileError("VALIDATION_ERROR")` when `fields` is empty.
|
|
380
|
+
* @throws `ProfileError("VALIDATION_ERROR")` when `current.startDate` is
|
|
381
|
+
* `null` and the caller did not supply a `startDate` override — the
|
|
382
|
+
* wire requires a non-null `startDate` and we have nothing to send.
|
|
383
|
+
*/
|
|
384
|
+
export function buildUpdateEmploymentInput(current, fields) {
|
|
385
|
+
if (Object.keys(fields).length === 0) {
|
|
386
|
+
throw new ProfileError("VALIDATION_ERROR", "employment update requires at least one field flag.");
|
|
387
|
+
}
|
|
388
|
+
const startDate = fields.startDate ?? current.startDate;
|
|
389
|
+
if (startDate === null) {
|
|
390
|
+
throw new ProfileError("VALIDATION_ERROR", `Cannot update employment "${current.id}": startDate is required and current value is null. Supply --from to set a year.`);
|
|
391
|
+
}
|
|
392
|
+
// Server-side Rails `.blank?` gates (USER_ERROR "You can't leave this
|
|
393
|
+
// empty") — surfaced by the #394 live capture (2026-05-19): when the
|
|
394
|
+
// caller omits these, the wire layer accepts the partial input but
|
|
395
|
+
// the Rails apply path rejects it. Inject from the current row so
|
|
396
|
+
// user-supplied fields can still override. Optional pass-throughs
|
|
397
|
+
// (primaryGeographyId / reportingTo) are only set when the current
|
|
398
|
+
// row has a non-null value — sending an explicit null would change
|
|
399
|
+
// the row's state, which would defeat "merge".
|
|
400
|
+
const merged = {
|
|
401
|
+
// Wire-required non-null (GraphQL `Expected value to not be null`):
|
|
402
|
+
experienceItems: current.experienceItems ?? [],
|
|
403
|
+
// Preserve current row's skills through the merge — server rejects
|
|
404
|
+
// `skills: []` with "is too short (minimum is 1 character)" on
|
|
405
|
+
// update (#394 live-capture finding 2026-05-19). The EMPLOYMENT_FRAGMENT
|
|
406
|
+
// now selects `skills { nodes { id name } }` so `current.skills` is
|
|
407
|
+
// populated; pre-#394 it was always `[]` and update() defaulted to
|
|
408
|
+
// empty, which is what the live wire was rejecting.
|
|
409
|
+
skills: current.skills,
|
|
410
|
+
showViaToptal: current.showViaToptal,
|
|
411
|
+
startDate,
|
|
412
|
+
// Rails `.blank?` gates:
|
|
413
|
+
company: current.company,
|
|
414
|
+
publicationPermit: current.publicationPermit ?? true,
|
|
415
|
+
// industryIds: catalog refs the wire requires present and non-empty
|
|
416
|
+
// on the apply path.
|
|
417
|
+
industryIds: current.industries.map((i) => i.id),
|
|
418
|
+
};
|
|
419
|
+
if (current.employerId !== null) {
|
|
420
|
+
merged.employerId = current.employerId;
|
|
421
|
+
}
|
|
422
|
+
if (current.primaryGeography !== null) {
|
|
423
|
+
merged.primaryGeographyId = current.primaryGeography.id;
|
|
424
|
+
}
|
|
425
|
+
if (current.reportingTo !== null) {
|
|
426
|
+
merged.reportingTo = current.reportingTo;
|
|
427
|
+
}
|
|
428
|
+
return { ...merged, ...fields };
|
|
184
429
|
}
|
|
185
430
|
/**
|
|
186
431
|
* Update an existing employment row. Wire format per Pattern 1:
|
|
187
432
|
* `{ employmentId, employment: EmploymentInput }`.
|
|
433
|
+
*
|
|
434
|
+
* Reads the current row first and merges the four required-non-null
|
|
435
|
+
* fields onto the wire input (see {@link buildUpdateEmploymentInput} for
|
|
436
|
+
* the merge contract and #394 for the originating wire-broke incident).
|
|
188
437
|
*/
|
|
189
438
|
export async function update(token, id, fields) {
|
|
190
439
|
if (Object.keys(fields).length === 0) {
|
|
191
440
|
throw new ProfileError("VALIDATION_ERROR", "employment update requires at least one field flag.");
|
|
192
441
|
}
|
|
193
|
-
const
|
|
442
|
+
const current = await show(token, id);
|
|
443
|
+
const employment = buildUpdateEmploymentInput(current, fields);
|
|
444
|
+
const res = await callTalentProfile(token, "UpdateEmployment", UPDATE_EMPLOYMENT_MUTATION, { input: { employmentId: id, employment } }, "employment update");
|
|
194
445
|
const payload = unwrapMutation(res, "updateEmployment", "employment update");
|
|
195
446
|
const updated = payload.profile?.employments.nodes
|
|
196
447
|
.filter((n) => n !== null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/employment/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/profile/employment/index.ts"],"names":[],"mappings":"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"}
|