|
| 1 | +import { selectMessageForId } from './queries/selectMessageById'; |
| 2 | + |
| 3 | +import { mapStorableToDraft } from '../mappers/mapStorableToDraft'; |
| 4 | +import { createSelectQuery } from '../sqlite-utils/createSelectQuery'; |
| 5 | +import { SqliteClient } from '../SqliteClient'; |
| 6 | +import { TableRow } from '../types'; |
| 7 | + |
| 8 | +export const getDraft = async ({ |
| 9 | + cid, |
| 10 | + currentUserId, |
| 11 | + parent_id, |
| 12 | +}: { |
| 13 | + cid: string; |
| 14 | + currentUserId: string; |
| 15 | + parent_id?: string; |
| 16 | +}) => { |
| 17 | + SqliteClient.logger?.('info', 'getDraft', { cid, parent_id }); |
| 18 | + |
| 19 | + const query = createSelectQuery('draft', ['*'], { cid, parentId: parent_id }); |
| 20 | + |
| 21 | + const rows = await SqliteClient.executeSql.apply(null, query); |
| 22 | + |
| 23 | + if (!rows.length) return null; |
| 24 | + |
| 25 | + const draftRow = rows[0]; |
| 26 | + |
| 27 | + const draftMessageQuery = createSelectQuery('draftMessage', ['*'], { |
| 28 | + id: draftRow.draftMessageId, |
| 29 | + }); |
| 30 | + const draftMessageRows = await SqliteClient.executeSql.apply(null, draftMessageQuery); |
| 31 | + |
| 32 | + const channelQuery = createSelectQuery('channels', ['*'], { cid }); |
| 33 | + const channelRows = await SqliteClient.executeSql.apply(null, channelQuery); |
| 34 | + |
| 35 | + const quotedMessageRows = await selectMessageForId(draftRow.quotedMessageId); |
| 36 | + |
| 37 | + const polls = (await SqliteClient.executeSql.apply( |
| 38 | + null, |
| 39 | + createSelectQuery('poll', ['*'], { |
| 40 | + id: quotedMessageRows?.poll_id, |
| 41 | + }), |
| 42 | + )) as unknown as TableRow<'poll'>[]; |
| 43 | + |
| 44 | + return mapStorableToDraft({ |
| 45 | + channelRow: channelRows[0] as unknown as TableRow<'channels'>, |
| 46 | + currentUserId, |
| 47 | + draftMessageRow: draftMessageRows[0] as unknown as TableRow<'draftMessage'>, |
| 48 | + draftRow: draftRow[0] as unknown as TableRow<'draft'>, |
| 49 | + pollRow: polls[0], |
| 50 | + quotedMessageRow: quotedMessageRows, |
| 51 | + }); |
| 52 | +}; |
0 commit comments