getAskQuestionRender used to hardcode the card title and option labels
for pending_channel_approvals and pending_sender_approvals in the
DB-access layer, duplicating wording that already lived in the approval
modules. That caused a visible drift between the initial card title —
picked per event in channel-approval.ts ("📣 Bot mentioned in new chat"
vs. "💬 New direct message") — and the post-click render, which
always showed the constant "📣 Channel registration".
Mirror the pattern already used by pending_approvals: add title /
options_json columns on both pending_*_approvals tables via migration
013, have the approval modules write them at creation time, and let
getAskQuestionRender just SELECT.
- Migration 013 ALTERs the two tables to add title + options_json.
- PendingChannelApproval / PendingSenderApproval types and their
create functions grow the two fields.
- channel-approval.ts / sender-approval.ts normalize options once
and pass both title and options_json into the insert.
- getAskQuestionRender drops the hardcoded render objects and reads
the stored values.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
28 lines
1.3 KiB
TypeScript
28 lines
1.3 KiB
TypeScript
/**
|
|
* Persist ask_question render metadata (title + options_json) on
|
|
* `pending_channel_approvals` and `pending_sender_approvals`, mirroring the
|
|
* columns migration 003 / module-approvals-title-options added to
|
|
* `pending_approvals`.
|
|
*
|
|
* Before this, `getAskQuestionRender` hardcoded the title + option labels
|
|
* for these two tables in the DB-access layer — duplicating wording that
|
|
* also lived in the approval modules and causing a visible drift between
|
|
* the initial card title ("📣 Bot mentioned in new chat" / "💬 New direct
|
|
* message", chosen per event) and the post-click render ("📣 Channel
|
|
* registration", constant). Storing the render metadata alongside the row
|
|
* lets both sides read from the same source.
|
|
*/
|
|
import type Database from 'better-sqlite3';
|
|
import type { Migration } from './index.js';
|
|
|
|
export const migration013: Migration = {
|
|
version: 13,
|
|
name: 'approval-render-metadata',
|
|
up(db: Database.Database) {
|
|
db.exec(`ALTER TABLE pending_channel_approvals ADD COLUMN title TEXT NOT NULL DEFAULT ''`);
|
|
db.exec(`ALTER TABLE pending_channel_approvals ADD COLUMN options_json TEXT NOT NULL DEFAULT '[]'`);
|
|
db.exec(`ALTER TABLE pending_sender_approvals ADD COLUMN title TEXT NOT NULL DEFAULT ''`);
|
|
db.exec(`ALTER TABLE pending_sender_approvals ADD COLUMN options_json TEXT NOT NULL DEFAULT '[]'`);
|
|
},
|
|
};
|