import { normalizeGenealogyPathId } from './genealogy-contract.js' import { normalizeAppGrowthRecord, normalizeAppGrowthRecords, normalizeAppLifeEvent, normalizeAppLifeEvents, normalizeAppMemo, normalizeAppMemos, normalizeAppMeritRecord, normalizeAppMeritRecords, normalizeAppRelativeRecord, normalizeAppRelativeRecords, normalizeGrowthRecordCreatePayload, normalizeLifeEventPayload, normalizeMemoCreatePayload, normalizeMeritRecordCreatePayload, normalizeRelativeRecordCreatePayload } from './life-record-contract.js' import { normalizeResourcePathId } from './request-normalizers.js' import { contentAccessHeader, normalizeContentAccessGrant, normalizeContentPasswordPayload } from './protected-content-contract.js' import { requestStrict } from './request-client.js' const writeLifeRecord = (url, method, data, requestOptions) => { return requestStrict({ url, method, data }, { requestController: requestOptions.requestController ?? null }) } const deleteLifeRecord = async (url, requestOptions) => { await requestStrict({ url, method: 'DELETE' }, { requireData: false, requestController: requestOptions.requestController ?? null }) return null } export const lifeRecordApi = { async createRelativeRecord(genealogyId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) return requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records`, method: 'POST', data: normalizeRelativeRecordCreatePayload(payload) }, { requestController: requestOptions.requestController ?? null }) }, async updateRelativeRecord(genealogyId, relativeId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRelativeId = normalizeResourcePathId(relativeId, '亲友记录标识') const relativeRecord = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records/${normalizedRelativeId}`, method: 'PUT', data: normalizeRelativeRecordCreatePayload(payload) }, { requestController: requestOptions.requestController ?? null }) return normalizeAppRelativeRecord(relativeRecord, normalizedGenealogyId, normalizedRelativeId) }, async deleteRelativeRecord(genealogyId, relativeId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRelativeId = normalizeResourcePathId(relativeId, '亲友记录标识') return deleteLifeRecord( `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records/${normalizedRelativeId}`, requestOptions ) }, async getRelativeRecords(genealogyId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const relativeRecords = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records`, method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeAppRelativeRecords(relativeRecords, normalizedGenealogyId) }, async getRelativeRecordDetail(genealogyId, relativeId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRelativeId = normalizeResourcePathId(relativeId, '亲友记录标识') const relativeRecord = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/relative-records/${normalizedRelativeId}`, method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeAppRelativeRecord(relativeRecord, normalizedGenealogyId, normalizedRelativeId) }, async createGrowthRecord(genealogyId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) return requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records`, method: 'POST', data: normalizeGrowthRecordCreatePayload(payload) }, { requestController: requestOptions.requestController ?? null }) }, async updateGrowthRecord(genealogyId, recordId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识') const growthRecord = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}`, method: 'PUT', data: normalizeGrowthRecordCreatePayload(payload) }, { requestController: requestOptions.requestController ?? null }) return normalizeAppGrowthRecord(growthRecord, normalizedGenealogyId, normalizedRecordId) }, async deleteGrowthRecord(genealogyId, recordId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识') return deleteLifeRecord( `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}`, requestOptions ) }, async getGrowthRecords(genealogyId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const growthRecords = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records`, method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeAppGrowthRecords(growthRecords, normalizedGenealogyId) }, async getGrowthRecordDetail(genealogyId, recordId, accessToken = '', requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识') const growthRecord = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}`, method: 'GET', header: contentAccessHeader(accessToken) }, { requestController: requestOptions.requestController ?? null }) return normalizeAppGrowthRecord(growthRecord, normalizedGenealogyId, normalizedRecordId) }, async setGrowthRecordPassword(genealogyId, recordId, password, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识') const passwordPayload = normalizeContentPasswordPayload(password) await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}/content-protection`, method: 'PUT', data: passwordPayload }, { requireData: false, requestController: requestOptions.requestController ?? null }) return null }, async unlockGrowthRecord(genealogyId, recordId, password, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识') const passwordPayload = normalizeContentPasswordPayload(password) const accessGrant = await writeLifeRecord( `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}/content-unlock`, 'POST', passwordPayload, requestOptions ) return normalizeContentAccessGrant(accessGrant) }, async disableGrowthRecordPassword(genealogyId, recordId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedRecordId = normalizeResourcePathId(recordId, '成长记录标识') return deleteLifeRecord( `/genealogy/app/genealogies/${normalizedGenealogyId}/growth-records/${normalizedRecordId}/content-protection`, requestOptions ) }, async createLifeEvent(genealogyId, lineagePersonId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedLineagePersonId = normalizeResourcePathId(lineagePersonId, '人物标识') const lifeEvent = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/lineage-persons/${normalizedLineagePersonId}/life-events`, method: 'POST', data: normalizeLifeEventPayload(payload) }, { requestController: requestOptions.requestController ?? null }) return normalizeAppLifeEvent(lifeEvent, normalizedGenealogyId, normalizedLineagePersonId) }, async updateLifeEvent(genealogyId, lineagePersonId, eventId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedLineagePersonId = normalizeResourcePathId(lineagePersonId, '人物标识') const normalizedEventId = normalizeResourcePathId(eventId, '人生大事标识') const lifeEventChanges = normalizeLifeEventPayload(payload) const lifeEvent = await writeLifeRecord( `/genealogy/app/genealogies/${normalizedGenealogyId}/lineage-persons/${normalizedLineagePersonId}/life-events/${normalizedEventId}`, 'PUT', lifeEventChanges, requestOptions ) return normalizeAppLifeEvent(lifeEvent, normalizedGenealogyId, normalizedLineagePersonId, normalizedEventId) }, async deleteLifeEvent(genealogyId, lineagePersonId, eventId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedLineagePersonId = normalizeResourcePathId(lineagePersonId, '人物标识') const normalizedEventId = normalizeResourcePathId(eventId, '人生大事标识') return deleteLifeRecord( `/genealogy/app/genealogies/${normalizedGenealogyId}/lineage-persons/${normalizedLineagePersonId}/life-events/${normalizedEventId}`, requestOptions ) }, async getLifeEvents(genealogyId, lineagePersonId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedLineagePersonId = normalizeResourcePathId(lineagePersonId, '人物标识') const lifeEvents = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/lineage-persons/${normalizedLineagePersonId}/life-events`, method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeAppLifeEvents(lifeEvents, normalizedGenealogyId, normalizedLineagePersonId) }, async createMemo(genealogyId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) return requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/memos`, method: 'POST', data: normalizeMemoCreatePayload(payload) }, { requestController: requestOptions.requestController ?? null }) }, async updateMemo(genealogyId, memoId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedMemoId = normalizeResourcePathId(memoId, '备忘标识') const memo = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/memos/${normalizedMemoId}`, method: 'PUT', data: normalizeMemoCreatePayload(payload) }, { requestController: requestOptions.requestController ?? null }) return normalizeAppMemo(memo, normalizedGenealogyId, normalizedMemoId) }, async deleteMemo(genealogyId, memoId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedMemoId = normalizeResourcePathId(memoId, '备忘标识') return deleteLifeRecord(`/genealogy/app/genealogies/${normalizedGenealogyId}/memos/${normalizedMemoId}`, requestOptions) }, async getMemos(genealogyId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const memos = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/memos`, method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeAppMemos(memos, normalizedGenealogyId) }, async getMemoDetail(genealogyId, memoId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedMemoId = normalizeResourcePathId(memoId, '备忘标识') const memo = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/memos/${normalizedMemoId}`, method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeAppMemo(memo, normalizedGenealogyId, normalizedMemoId) }, async createMeritRecord(genealogyId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) return requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records`, method: 'POST', data: normalizeMeritRecordCreatePayload(payload) }, { requestController: requestOptions.requestController ?? null }) }, async updateMeritRecord(genealogyId, meritId, payload, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedMeritId = normalizeResourcePathId(meritId, '功德记录标识') const meritRecord = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records/${normalizedMeritId}`, method: 'PUT', data: normalizeMeritRecordCreatePayload(payload) }, { requestController: requestOptions.requestController ?? null }) return normalizeAppMeritRecord(meritRecord, normalizedGenealogyId, normalizedMeritId) }, async deleteMeritRecord(genealogyId, meritId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedMeritId = normalizeResourcePathId(meritId, '功德记录标识') return deleteLifeRecord(`/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records/${normalizedMeritId}`, requestOptions) }, async getMeritRecords(genealogyId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const meritRecords = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records`, method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeAppMeritRecords(meritRecords, normalizedGenealogyId) }, async getMeritRecordDetail(genealogyId, meritId, requestOptions = {}) { const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId) const normalizedMeritId = normalizeResourcePathId(meritId, '功德记录标识') const meritRecord = await requestStrict({ url: `/genealogy/app/genealogies/${normalizedGenealogyId}/merit-records/${normalizedMeritId}`, method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeAppMeritRecord(meritRecord, normalizedGenealogyId, normalizedMeritId) } }