hazo_ihelp 2.0.9 → 2.1.0

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.
Files changed (79) hide show
  1. package/SETUP_CHECKLIST.md +131 -0
  2. package/config/hazo_ihelp_config.ini.sample +41 -8
  3. package/db_setup_postgres.sql +52 -0
  4. package/db_setup_sqlite.sql +25 -0
  5. package/dist/api/create_config_handler.d.ts +2 -0
  6. package/dist/api/create_config_handler.d.ts.map +1 -1
  7. package/dist/api/create_config_handler.js +117 -81
  8. package/dist/api/create_config_handler.js.map +1 -1
  9. package/dist/api/create_ihelp_handler.d.ts +4 -12
  10. package/dist/api/create_ihelp_handler.d.ts.map +1 -1
  11. package/dist/api/create_ihelp_handler.js +251 -226
  12. package/dist/api/create_ihelp_handler.js.map +1 -1
  13. package/dist/api/image_upload_handler.d.ts.map +1 -1
  14. package/dist/api/image_upload_handler.js +114 -80
  15. package/dist/api/image_upload_handler.js.map +1 -1
  16. package/dist/components/editor/editor_collapsible_section.js +1 -1
  17. package/dist/components/editor/editor_collapsible_section.js.map +1 -1
  18. package/dist/components/editor/editor_form.js +1 -1
  19. package/dist/components/editor/editor_form.js.map +1 -1
  20. package/dist/components/editor/editor_topic_list_item.js +1 -1
  21. package/dist/components/editor/editor_topic_list_item.js.map +1 -1
  22. package/dist/components/hover_help_icon.d.ts +39 -0
  23. package/dist/components/hover_help_icon.d.ts.map +1 -0
  24. package/dist/components/hover_help_icon.js +29 -0
  25. package/dist/components/hover_help_icon.js.map +1 -0
  26. package/dist/components/ihelp_detail_panel.js +1 -1
  27. package/dist/components/ihelp_detail_panel.js.map +1 -1
  28. package/dist/components/ihelp_editor.js +1 -1
  29. package/dist/components/ihelp_editor.js.map +1 -1
  30. package/dist/components/ihelp_icon.js +1 -1
  31. package/dist/components/ihelp_icon.js.map +1 -1
  32. package/dist/components/ihelp_provider.d.ts.map +1 -1
  33. package/dist/components/ihelp_provider.js +6 -1
  34. package/dist/components/ihelp_provider.js.map +1 -1
  35. package/dist/components/ihelp_rich_editor.js +1 -1
  36. package/dist/components/ihelp_rich_editor.js.map +1 -1
  37. package/dist/components/ihelp_search_dialog.js +1 -1
  38. package/dist/components/ihelp_search_dialog.js.map +1 -1
  39. package/dist/components/index.d.ts +1 -0
  40. package/dist/components/index.d.ts.map +1 -1
  41. package/dist/components/index.js +1 -0
  42. package/dist/components/index.js.map +1 -1
  43. package/dist/components/ui/badge.js +1 -1
  44. package/dist/components/ui/badge.js.map +1 -1
  45. package/dist/components/ui/button.js +1 -1
  46. package/dist/components/ui/button.js.map +1 -1
  47. package/dist/components/ui/dialog.js +1 -1
  48. package/dist/components/ui/dialog.js.map +1 -1
  49. package/dist/components/ui/input.js +1 -1
  50. package/dist/components/ui/input.js.map +1 -1
  51. package/dist/components/ui/label.js +1 -1
  52. package/dist/components/ui/label.js.map +1 -1
  53. package/dist/components/ui/popover.js +1 -1
  54. package/dist/components/ui/popover.js.map +1 -1
  55. package/dist/components/ui/select.js +1 -1
  56. package/dist/components/ui/select.js.map +1 -1
  57. package/dist/components/ui/switch.js +1 -1
  58. package/dist/components/ui/switch.js.map +1 -1
  59. package/dist/components/ui/textarea.js +1 -1
  60. package/dist/components/ui/textarea.js.map +1 -1
  61. package/dist/index.client.d.ts +1 -1
  62. package/dist/index.client.d.ts.map +1 -1
  63. package/dist/index.client.js +1 -1
  64. package/dist/index.client.js.map +1 -1
  65. package/dist/lib/config/hazo_ihelp_config.d.ts +106 -0
  66. package/dist/lib/config/hazo_ihelp_config.d.ts.map +1 -0
  67. package/dist/lib/config/hazo_ihelp_config.js +66 -0
  68. package/dist/lib/config/hazo_ihelp_config.js.map +1 -0
  69. package/dist/utils/logger.d.ts +25 -0
  70. package/dist/utils/logger.d.ts.map +1 -0
  71. package/dist/utils/logger.js +42 -0
  72. package/dist/utils/logger.js.map +1 -0
  73. package/package.json +65 -22
  74. package/config/hazo_ihelp_config.ini +0 -9
  75. package/dist/utils/cn.d.ts +0 -3
  76. package/dist/utils/cn.d.ts.map +0 -1
  77. package/dist/utils/cn.js +0 -6
  78. package/dist/utils/cn.js.map +0 -1
  79. package/migrations/001_create_ihelp_tables.sql +0 -109
@@ -5,6 +5,10 @@
5
5
  * Tags and context mappings are stored as JSON columns directly on the
6
6
  * topics table — no separate join tables required.
7
7
  *
8
+ * Every handler wraps its body with hazo_core's `withContext` so the
9
+ * correlation ID flows through every nested log call and downstream
10
+ * `fetchWithRequestId` outbound request.
11
+ *
8
12
  * @example
9
13
  * ```typescript
10
14
  * // app/api/ihelp/topics/route.ts
@@ -18,44 +22,38 @@
18
22
  * });
19
23
  *
20
24
  * export { GET, POST };
21
- *
22
- * // app/api/ihelp/topics/[id]/route.ts
23
- * import { createIhelpHandler } from 'hazo_ihelp/api';
24
- * import { getHazoConnectSingleton } from 'hazo_connect/nextjs/setup';
25
- *
26
- * export const dynamic = 'force-dynamic';
27
- *
28
- * const { PATCH, DELETE } = createIhelpHandler({
29
- * getHazoConnect: () => getHazoConnectSingleton(),
30
- * });
31
- *
32
- * export { PATCH, DELETE };
33
25
  * ```
34
26
  */
35
27
  import { NextResponse } from 'next/server';
36
28
  import { createCrudService } from 'hazo_connect/server';
29
+ import { HazoError, HazoValidationError, HazoNotFoundError, generateRequestId, getCorrelationId, withContext, } from 'hazo_core';
30
+ import { get_logger, set_logger } from '../utils/logger.js';
37
31
  // ============================================================================
38
32
  // Helper Functions
39
33
  // ============================================================================
40
- /** Generate a UUID v4 */
34
+ /** Generate a UUID for DB primary keys. Strips the req_ prefix from generateRequestId(). */
41
35
  function generateUUID() {
42
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
43
- const r = (Math.random() * 16) | 0;
44
- const v = c === 'x' ? r : (r & 0x3) | 0x8;
45
- return v.toString(16);
46
- });
36
+ return generateRequestId().slice(4);
47
37
  }
48
- /** No-op logger */
49
- const noopLogger = {
50
- error: () => { },
51
- warn: () => { },
52
- info: () => { },
53
- debug: () => { },
54
- };
55
38
  /** Create a standardized error response */
56
39
  function createErrorResponse(error, status) {
57
40
  return NextResponse.json({ success: false, error }, { status });
58
41
  }
42
+ /** Wrap an error caught in a handler — log appropriately and return a response. */
43
+ function handleError(logger, event, error) {
44
+ if (HazoError.is(error)) {
45
+ const status = error.httpStatus ?? 500;
46
+ if (status >= 500) {
47
+ logger.error(event, { code: error.code, message: error.message, context: error.context });
48
+ }
49
+ else {
50
+ logger.warn(event, { code: error.code, message: error.message });
51
+ }
52
+ return createErrorResponse(error.message, status);
53
+ }
54
+ logger.error(event, { error: error instanceof Error ? error.message : String(error) });
55
+ return createErrorResponse('Internal server error', 500);
56
+ }
59
57
  /** Parse a JSON column value that may be a string or already parsed */
60
58
  function parseJsonColumn(value) {
61
59
  if (typeof value === 'string') {
@@ -79,7 +77,11 @@ function parseJsonColumn(value) {
79
77
  */
80
78
  export function createIhelpHandler(options) {
81
79
  const { getHazoConnect, getLogger } = options;
82
- const logger = getLogger?.() || noopLogger;
80
+ if (getLogger) {
81
+ // Consumer override — wire through the package-level logger.
82
+ set_logger(getLogger());
83
+ }
84
+ const logger = get_logger();
83
85
  // ---------------------------------------------------------------------------
84
86
  // Internal helper: normalise a DB row into a full IhelpTopic
85
87
  // ---------------------------------------------------------------------------
@@ -107,28 +109,55 @@ export function createIhelpHandler(options) {
107
109
  * - search — ilike filter on title and description
108
110
  */
109
111
  async function GET(request) {
110
- try {
111
- const searchParams = request.nextUrl.searchParams;
112
- const id = searchParams.get('id');
113
- const context_key = searchParams.get('context_key');
114
- const scope_id = searchParams.get('scope_id');
115
- const category = searchParams.get('category');
116
- const search = searchParams.get('search');
117
- logger.debug('[hazo_ihelp] GET request', { id, context_key, scope_id, category, search });
118
- const adapter = await getHazoConnect();
119
- const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
120
- // ---- Single topic fetch ----
121
- if (id) {
122
- const topic = await topicsService.findById(id);
123
- if (!topic) {
124
- return createErrorResponse('Topic not found', 404);
112
+ return withContext({ correlationId: getCorrelationId() ?? generateRequestId() }, async () => {
113
+ try {
114
+ const searchParams = request.nextUrl.searchParams;
115
+ const id = searchParams.get('id');
116
+ const context_key = searchParams.get('context_key');
117
+ const scope_id = searchParams.get('scope_id');
118
+ const category = searchParams.get('category');
119
+ const search = searchParams.get('search');
120
+ logger.debug('topic.list.request', { id, context_key, scope_id, category, search });
121
+ const adapter = await getHazoConnect();
122
+ const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
123
+ // ---- Single topic fetch ----
124
+ if (id) {
125
+ const topic = await topicsService.findById(id);
126
+ if (!topic) {
127
+ throw new HazoNotFoundError({
128
+ code: 'HAZO_IHELP_TOPIC_NOT_FOUND',
129
+ pkg: 'hazo_ihelp',
130
+ message: 'Topic not found',
131
+ context: { id },
132
+ });
133
+ }
134
+ return NextResponse.json({ success: true, data: normaliseTopic(topic) });
125
135
  }
126
- return NextResponse.json({ success: true, data: normaliseTopic(topic) });
127
- }
128
- // ---- Context key lookup ----
129
- if (context_key) {
130
- // Fetch all topics, filter by context key in application code
131
- // (works with both SQLite TEXT and PostgreSQL JSONB)
136
+ // ---- Context key lookup ----
137
+ if (context_key) {
138
+ // Fetch all topics, filter by context key in application code
139
+ // (works with both SQLite TEXT and PostgreSQL JSONB)
140
+ const rows = await topicsService.list((qb) => {
141
+ let q = qb;
142
+ if (scope_id) {
143
+ q = q.whereOr([
144
+ { field: 'scope_id', operator: 'is', value: null },
145
+ { field: 'scope_id', operator: 'eq', value: scope_id },
146
+ ]);
147
+ }
148
+ return q;
149
+ });
150
+ const matched = rows
151
+ .map(normaliseTopic)
152
+ .filter((t) => t.contexts.some((c) => c.key === context_key))
153
+ .sort((a, b) => {
154
+ const pa = a.contexts.find((c) => c.key === context_key)?.priority ?? 0;
155
+ const pb = b.contexts.find((c) => c.key === context_key)?.priority ?? 0;
156
+ return pa - pb;
157
+ });
158
+ return NextResponse.json({ success: true, data: matched });
159
+ }
160
+ // ---- List with optional filters ----
132
161
  const rows = await topicsService.list((qb) => {
133
162
  let q = qb;
134
163
  if (scope_id) {
@@ -137,47 +166,24 @@ export function createIhelpHandler(options) {
137
166
  { field: 'scope_id', operator: 'eq', value: scope_id },
138
167
  ]);
139
168
  }
169
+ if (category) {
170
+ q = q.where('category', 'eq', category);
171
+ }
172
+ if (search) {
173
+ q = q.whereOr([
174
+ { field: 'title', operator: 'ilike', value: `%${search}%` },
175
+ { field: 'description', operator: 'ilike', value: `%${search}%` },
176
+ ]);
177
+ }
140
178
  return q;
141
179
  });
142
- const matched = rows
143
- .map(normaliseTopic)
144
- .filter((t) => t.contexts.some((c) => c.key === context_key))
145
- .sort((a, b) => {
146
- const pa = a.contexts.find((c) => c.key === context_key)?.priority ?? 0;
147
- const pb = b.contexts.find((c) => c.key === context_key)?.priority ?? 0;
148
- return pa - pb;
149
- });
150
- return NextResponse.json({ success: true, data: matched });
180
+ const assembled = rows.map(normaliseTopic);
181
+ return NextResponse.json({ success: true, data: assembled });
151
182
  }
152
- // ---- List with optional filters ----
153
- const rows = await topicsService.list((qb) => {
154
- let q = qb;
155
- if (scope_id) {
156
- q = q.whereOr([
157
- { field: 'scope_id', operator: 'is', value: null },
158
- { field: 'scope_id', operator: 'eq', value: scope_id },
159
- ]);
160
- }
161
- if (category) {
162
- q = q.where('category', 'eq', category);
163
- }
164
- if (search) {
165
- q = q.whereOr([
166
- { field: 'title', operator: 'ilike', value: `%${search}%` },
167
- { field: 'description', operator: 'ilike', value: `%${search}%` },
168
- ]);
169
- }
170
- return q;
171
- });
172
- const assembled = rows.map(normaliseTopic);
173
- return NextResponse.json({ success: true, data: assembled });
174
- }
175
- catch (error) {
176
- logger.error('[hazo_ihelp] GET error', {
177
- error: error instanceof Error ? error.message : String(error),
178
- });
179
- return createErrorResponse('Failed to fetch topics', 500);
180
- }
183
+ catch (error) {
184
+ return handleError(logger, 'topic.list.failed', error);
185
+ }
186
+ });
181
187
  }
182
188
  // ---------------------------------------------------------------------------
183
189
  // POST handler — create a new topic
@@ -188,64 +194,69 @@ export function createIhelpHandler(options) {
188
194
  * Body: IhelpTopicInput
189
195
  */
190
196
  async function POST(request) {
191
- try {
192
- const body = (await request.json());
193
- if (!body.title) {
194
- return createErrorResponse('title is required', 400);
195
- }
196
- logger.debug('[hazo_ihelp] POST request', { title: body.title });
197
- const adapter = await getHazoConnect();
198
- const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
199
- const topicId = generateUUID();
200
- const now = new Date().toISOString();
201
- // Build tags array
202
- const tags = (body.tags ?? []).map((t) => ({
203
- label: t.label,
204
- variant: t.variant ?? 'default',
205
- icon: t.icon ?? null,
206
- }));
207
- // Build contexts array — prefer explicit contexts, fall back to context_keys shorthand
208
- let contexts;
209
- if (body.contexts) {
210
- contexts = body.contexts.map((c) => ({
211
- key: c.key,
212
- priority: c.priority ?? 0,
213
- }));
214
- }
215
- else if (body.context_keys) {
216
- contexts = body.context_keys.map((key, i) => ({
217
- key,
218
- priority: i,
197
+ return withContext({ correlationId: getCorrelationId() ?? generateRequestId() }, async () => {
198
+ try {
199
+ const body = (await request.json());
200
+ if (!body.title) {
201
+ throw new HazoValidationError({
202
+ code: 'HAZO_IHELP_VALIDATION_ERROR',
203
+ pkg: 'hazo_ihelp',
204
+ message: 'title is required',
205
+ });
206
+ }
207
+ logger.debug('topic.create.request', { title: body.title });
208
+ const adapter = await getHazoConnect();
209
+ const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
210
+ const topicId = generateUUID();
211
+ const now = new Date().toISOString();
212
+ // Build tags array
213
+ const tags = (body.tags ?? []).map((t) => ({
214
+ label: t.label,
215
+ variant: t.variant ?? 'default',
216
+ icon: t.icon ?? null,
219
217
  }));
218
+ // Build contexts array — prefer explicit contexts, fall back to context_keys shorthand
219
+ let contexts;
220
+ if (body.contexts) {
221
+ contexts = body.contexts.map((c) => ({
222
+ key: c.key,
223
+ priority: c.priority ?? 0,
224
+ }));
225
+ }
226
+ else if (body.context_keys) {
227
+ contexts = body.context_keys.map((key, i) => ({
228
+ key,
229
+ priority: i,
230
+ }));
231
+ }
232
+ else {
233
+ contexts = [];
234
+ }
235
+ const inserted = await topicsService.insert({
236
+ id: topicId,
237
+ parent_id: body.parent_id ?? null,
238
+ scope_id: body.scope_id ?? null,
239
+ category: body.category ?? '',
240
+ title: body.title,
241
+ description: body.description ?? null,
242
+ content: body.content ?? null,
243
+ icon: body.icon ?? null,
244
+ sort_order: body.sort_order ?? 0,
245
+ is_published: body.is_published ?? false,
246
+ tags: JSON.stringify(tags),
247
+ contexts: JSON.stringify(contexts),
248
+ created_at: now,
249
+ changed_at: null,
250
+ });
251
+ const topicRow = Array.isArray(inserted) ? inserted[0] : inserted;
252
+ const topic = normaliseTopic(topicRow);
253
+ logger.info('topic.created', { topic_id: topic.id, scope_id: topic.scope_id ?? null });
254
+ return NextResponse.json({ success: true, data: topic }, { status: 201 });
220
255
  }
221
- else {
222
- contexts = [];
256
+ catch (error) {
257
+ return handleError(logger, 'topic.create.failed', error);
223
258
  }
224
- const inserted = await topicsService.insert({
225
- id: topicId,
226
- parent_id: body.parent_id ?? null,
227
- scope_id: body.scope_id ?? null,
228
- category: body.category ?? '',
229
- title: body.title,
230
- description: body.description ?? null,
231
- content: body.content ?? null,
232
- icon: body.icon ?? null,
233
- sort_order: body.sort_order ?? 0,
234
- is_published: body.is_published ?? false,
235
- tags: JSON.stringify(tags),
236
- contexts: JSON.stringify(contexts),
237
- created_at: now,
238
- changed_at: null,
239
- });
240
- const topicRow = Array.isArray(inserted) ? inserted[0] : inserted;
241
- return NextResponse.json({ success: true, data: normaliseTopic(topicRow) }, { status: 201 });
242
- }
243
- catch (error) {
244
- logger.error('[hazo_ihelp] POST error', {
245
- error: error instanceof Error ? error.message : String(error),
246
- });
247
- return createErrorResponse('Failed to create topic', 500);
248
- }
259
+ });
249
260
  }
250
261
  // ---------------------------------------------------------------------------
251
262
  // PATCH handler — update an existing topic
@@ -257,75 +268,85 @@ export function createIhelpHandler(options) {
257
268
  * Body: Partial<IhelpTopicInput>
258
269
  */
259
270
  async function PATCH(request, context) {
260
- try {
261
- const { id: paramId } = await context.params;
262
- let id = paramId;
263
- if (!id) {
264
- id = request.nextUrl.searchParams.get('id') ?? undefined;
265
- }
266
- if (!id) {
267
- return createErrorResponse('id is required', 400);
268
- }
269
- const body = (await request.json());
270
- logger.debug('[hazo_ihelp] PATCH request', { id });
271
- const adapter = await getHazoConnect();
272
- const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
273
- // Build the patch payload
274
- const patch = { changed_at: new Date().toISOString() };
275
- if (body.parent_id !== undefined)
276
- patch.parent_id = body.parent_id;
277
- if (body.scope_id !== undefined)
278
- patch.scope_id = body.scope_id;
279
- if (body.category !== undefined)
280
- patch.category = body.category;
281
- if (body.title !== undefined)
282
- patch.title = body.title;
283
- if (body.description !== undefined)
284
- patch.description = body.description;
285
- if (body.content !== undefined)
286
- patch.content = body.content;
287
- if (body.icon !== undefined)
288
- patch.icon = body.icon;
289
- if (body.sort_order !== undefined)
290
- patch.sort_order = body.sort_order;
291
- if (body.is_published !== undefined)
292
- patch.is_published = body.is_published;
293
- // Replace tags if provided
294
- if (body.tags !== undefined) {
295
- const tags = body.tags.map((t) => ({
296
- label: t.label,
297
- variant: t.variant ?? 'default',
298
- icon: t.icon ?? null,
299
- }));
300
- patch.tags = JSON.stringify(tags);
301
- }
302
- // Replace contexts if provided
303
- if (body.contexts !== undefined) {
304
- const contexts = body.contexts.map((c) => ({
305
- key: c.key,
306
- priority: c.priority ?? 0,
307
- }));
308
- patch.contexts = JSON.stringify(contexts);
309
- }
310
- else if (body.context_keys !== undefined) {
311
- const contexts = body.context_keys.map((key, i) => ({
312
- key,
313
- priority: i,
314
- }));
315
- patch.contexts = JSON.stringify(contexts);
271
+ return withContext({ correlationId: getCorrelationId() ?? generateRequestId() }, async () => {
272
+ try {
273
+ const { id: paramId } = await context.params;
274
+ let id = paramId;
275
+ if (!id) {
276
+ id = request.nextUrl.searchParams.get('id') ?? undefined;
277
+ }
278
+ if (!id) {
279
+ throw new HazoValidationError({
280
+ code: 'HAZO_IHELP_VALIDATION_ERROR',
281
+ pkg: 'hazo_ihelp',
282
+ message: 'id is required',
283
+ });
284
+ }
285
+ const body = (await request.json());
286
+ logger.debug('topic.update.request', { id });
287
+ const adapter = await getHazoConnect();
288
+ const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
289
+ // Build the patch payload
290
+ const patch = { changed_at: new Date().toISOString() };
291
+ if (body.parent_id !== undefined)
292
+ patch.parent_id = body.parent_id;
293
+ if (body.scope_id !== undefined)
294
+ patch.scope_id = body.scope_id;
295
+ if (body.category !== undefined)
296
+ patch.category = body.category;
297
+ if (body.title !== undefined)
298
+ patch.title = body.title;
299
+ if (body.description !== undefined)
300
+ patch.description = body.description;
301
+ if (body.content !== undefined)
302
+ patch.content = body.content;
303
+ if (body.icon !== undefined)
304
+ patch.icon = body.icon;
305
+ if (body.sort_order !== undefined)
306
+ patch.sort_order = body.sort_order;
307
+ if (body.is_published !== undefined)
308
+ patch.is_published = body.is_published;
309
+ // Replace tags if provided
310
+ if (body.tags !== undefined) {
311
+ const tags = body.tags.map((t) => ({
312
+ label: t.label,
313
+ variant: t.variant ?? 'default',
314
+ icon: t.icon ?? null,
315
+ }));
316
+ patch.tags = JSON.stringify(tags);
317
+ }
318
+ // Replace contexts if provided
319
+ if (body.contexts !== undefined) {
320
+ const contexts = body.contexts.map((c) => ({
321
+ key: c.key,
322
+ priority: c.priority ?? 0,
323
+ }));
324
+ patch.contexts = JSON.stringify(contexts);
325
+ }
326
+ else if (body.context_keys !== undefined) {
327
+ const contexts = body.context_keys.map((key, i) => ({
328
+ key,
329
+ priority: i,
330
+ }));
331
+ patch.contexts = JSON.stringify(contexts);
332
+ }
333
+ const updated = await topicsService.updateById(id, patch);
334
+ if (!updated || updated.length === 0) {
335
+ throw new HazoNotFoundError({
336
+ code: 'HAZO_IHELP_TOPIC_NOT_FOUND',
337
+ pkg: 'hazo_ihelp',
338
+ message: 'Topic not found',
339
+ context: { id },
340
+ });
341
+ }
342
+ const topic = normaliseTopic(updated[0]);
343
+ logger.info('topic.updated', { topic_id: id });
344
+ return NextResponse.json({ success: true, data: topic });
316
345
  }
317
- const updated = await topicsService.updateById(id, patch);
318
- if (!updated || updated.length === 0) {
319
- return createErrorResponse('Topic not found', 404);
346
+ catch (error) {
347
+ return handleError(logger, 'topic.update.failed', error);
320
348
  }
321
- return NextResponse.json({ success: true, data: normaliseTopic(updated[0]) });
322
- }
323
- catch (error) {
324
- logger.error('[hazo_ihelp] PATCH error', {
325
- error: error instanceof Error ? error.message : String(error),
326
- });
327
- return createErrorResponse('Failed to update topic', 500);
328
- }
349
+ });
329
350
  }
330
351
  // ---------------------------------------------------------------------------
331
352
  // DELETE handler — remove a topic
@@ -336,27 +357,31 @@ export function createIhelpHandler(options) {
336
357
  * Expects `id` as a URL search param or route segment param.
337
358
  */
338
359
  async function DELETE(request, context) {
339
- try {
340
- const { id: paramId } = await context.params;
341
- let id = paramId;
342
- if (!id) {
343
- id = request.nextUrl.searchParams.get('id') ?? undefined;
360
+ return withContext({ correlationId: getCorrelationId() ?? generateRequestId() }, async () => {
361
+ try {
362
+ const { id: paramId } = await context.params;
363
+ let id = paramId;
364
+ if (!id) {
365
+ id = request.nextUrl.searchParams.get('id') ?? undefined;
366
+ }
367
+ if (!id) {
368
+ throw new HazoValidationError({
369
+ code: 'HAZO_IHELP_VALIDATION_ERROR',
370
+ pkg: 'hazo_ihelp',
371
+ message: 'id is required',
372
+ });
373
+ }
374
+ logger.debug('topic.delete.request', { id });
375
+ const adapter = await getHazoConnect();
376
+ const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
377
+ await topicsService.deleteById(id);
378
+ logger.info('topic.deleted', { topic_id: id });
379
+ return NextResponse.json({ success: true, data: null });
344
380
  }
345
- if (!id) {
346
- return createErrorResponse('id is required', 400);
381
+ catch (error) {
382
+ return handleError(logger, 'topic.delete.failed', error);
347
383
  }
348
- logger.debug('[hazo_ihelp] DELETE request', { id });
349
- const adapter = await getHazoConnect();
350
- const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
351
- await topicsService.deleteById(id);
352
- return NextResponse.json({ success: true, data: null });
353
- }
354
- catch (error) {
355
- logger.error('[hazo_ihelp] DELETE error', {
356
- error: error instanceof Error ? error.message : String(error),
357
- });
358
- return createErrorResponse('Failed to delete topic', 500);
359
- }
384
+ });
360
385
  }
361
386
  return { GET, POST, PATCH, DELETE };
362
387
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create_ihelp_handler.js","sourceRoot":"","sources":["../../src/api/create_ihelp_handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create_ihelp_handler.js","sourceRoot":"","sources":["../../src/api/create_ihelp_handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"image_upload_handler.d.ts","sourceRoot":"","sources":["../../src/api/image_upload_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgDxD,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG;IAAE,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CAAE,CA8G5D"}
1
+ {"version":3,"file":"image_upload_handler.d.ts","sourceRoot":"","sources":["../../src/api/image_upload_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoExD,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG;IAAE,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CAAE,CA2H5D"}