@jbctechsolutions/mcp-office365 2.5.1
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/LICENSE +21 -0
- package/README.md +667 -0
- package/dist/applescript/account-repository.d.ts +30 -0
- package/dist/applescript/account-repository.d.ts.map +1 -0
- package/dist/applescript/account-repository.js +38 -0
- package/dist/applescript/account-repository.js.map +1 -0
- package/dist/applescript/account-scripts.d.ts +21 -0
- package/dist/applescript/account-scripts.d.ts.map +1 -0
- package/dist/applescript/account-scripts.js +180 -0
- package/dist/applescript/account-scripts.js.map +1 -0
- package/dist/applescript/calendar-manager.d.ts +44 -0
- package/dist/applescript/calendar-manager.d.ts.map +1 -0
- package/dist/applescript/calendar-manager.js +92 -0
- package/dist/applescript/calendar-manager.js.map +1 -0
- package/dist/applescript/calendar-writer.d.ts +36 -0
- package/dist/applescript/calendar-writer.d.ts.map +1 -0
- package/dist/applescript/calendar-writer.js +94 -0
- package/dist/applescript/calendar-writer.js.map +1 -0
- package/dist/applescript/content-readers.d.ts +114 -0
- package/dist/applescript/content-readers.d.ts.map +1 -0
- package/dist/applescript/content-readers.js +328 -0
- package/dist/applescript/content-readers.js.map +1 -0
- package/dist/applescript/executor.d.ts +60 -0
- package/dist/applescript/executor.d.ts.map +1 -0
- package/dist/applescript/executor.js +173 -0
- package/dist/applescript/executor.js.map +1 -0
- package/dist/applescript/index.d.ts +20 -0
- package/dist/applescript/index.d.ts.map +1 -0
- package/dist/applescript/index.js +29 -0
- package/dist/applescript/index.js.map +1 -0
- package/dist/applescript/mail-sender.d.ts +38 -0
- package/dist/applescript/mail-sender.d.ts.map +1 -0
- package/dist/applescript/mail-sender.js +67 -0
- package/dist/applescript/mail-sender.js.map +1 -0
- package/dist/applescript/parser.d.ts +235 -0
- package/dist/applescript/parser.d.ts.map +1 -0
- package/dist/applescript/parser.js +496 -0
- package/dist/applescript/parser.js.map +1 -0
- package/dist/applescript/repository.d.ts +64 -0
- package/dist/applescript/repository.d.ts.map +1 -0
- package/dist/applescript/repository.js +444 -0
- package/dist/applescript/repository.js.map +1 -0
- package/dist/applescript/scripts.d.ts +265 -0
- package/dist/applescript/scripts.d.ts.map +1 -0
- package/dist/applescript/scripts.js +1483 -0
- package/dist/applescript/scripts.js.map +1 -0
- package/dist/approval/hash.d.ts +87 -0
- package/dist/approval/hash.d.ts.map +1 -0
- package/dist/approval/hash.js +102 -0
- package/dist/approval/hash.js.map +1 -0
- package/dist/approval/index.d.ts +13 -0
- package/dist/approval/index.d.ts.map +1 -0
- package/dist/approval/index.js +7 -0
- package/dist/approval/index.js.map +1 -0
- package/dist/approval/token-manager.d.ts +51 -0
- package/dist/approval/token-manager.d.ts.map +1 -0
- package/dist/approval/token-manager.js +111 -0
- package/dist/approval/token-manager.js.map +1 -0
- package/dist/approval/types.d.ts +44 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +6 -0
- package/dist/approval/types.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +143 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +27 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +42 -0
- package/dist/config.js.map +1 -0
- package/dist/database/connection.d.ts +77 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +130 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/index.d.ts +11 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +11 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/queries.d.ts +93 -0
- package/dist/database/queries.d.ts.map +1 -0
- package/dist/database/queries.js +430 -0
- package/dist/database/queries.js.map +1 -0
- package/dist/database/repository.d.ts +198 -0
- package/dist/database/repository.d.ts.map +1 -0
- package/dist/database/repository.js +199 -0
- package/dist/database/repository.js.map +1 -0
- package/dist/graph/attachments.d.ts +72 -0
- package/dist/graph/attachments.d.ts.map +1 -0
- package/dist/graph/attachments.js +207 -0
- package/dist/graph/attachments.js.map +1 -0
- package/dist/graph/auth/config.d.ts +34 -0
- package/dist/graph/auth/config.d.ts.map +1 -0
- package/dist/graph/auth/config.js +78 -0
- package/dist/graph/auth/config.js.map +1 -0
- package/dist/graph/auth/device-code-flow.d.ts +55 -0
- package/dist/graph/auth/device-code-flow.d.ts.map +1 -0
- package/dist/graph/auth/device-code-flow.js +180 -0
- package/dist/graph/auth/device-code-flow.js.map +1 -0
- package/dist/graph/auth/index.d.ts +13 -0
- package/dist/graph/auth/index.d.ts.map +1 -0
- package/dist/graph/auth/index.js +13 -0
- package/dist/graph/auth/index.js.map +1 -0
- package/dist/graph/auth/token-cache.d.ts +41 -0
- package/dist/graph/auth/token-cache.d.ts.map +1 -0
- package/dist/graph/auth/token-cache.js +105 -0
- package/dist/graph/auth/token-cache.js.map +1 -0
- package/dist/graph/client/batch.d.ts +38 -0
- package/dist/graph/client/batch.d.ts.map +1 -0
- package/dist/graph/client/batch.js +33 -0
- package/dist/graph/client/batch.js.map +1 -0
- package/dist/graph/client/cache.d.ts +64 -0
- package/dist/graph/client/cache.d.ts.map +1 -0
- package/dist/graph/client/cache.js +108 -0
- package/dist/graph/client/cache.js.map +1 -0
- package/dist/graph/client/graph-client.d.ts +630 -0
- package/dist/graph/client/graph-client.d.ts.map +1 -0
- package/dist/graph/client/graph-client.js +1771 -0
- package/dist/graph/client/graph-client.js.map +1 -0
- package/dist/graph/client/index.d.ts +12 -0
- package/dist/graph/client/index.d.ts.map +1 -0
- package/dist/graph/client/index.js +12 -0
- package/dist/graph/client/index.js.map +1 -0
- package/dist/graph/content-readers.d.ts +106 -0
- package/dist/graph/content-readers.d.ts.map +1 -0
- package/dist/graph/content-readers.js +321 -0
- package/dist/graph/content-readers.js.map +1 -0
- package/dist/graph/index.d.ts +18 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +23 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/mailbox-adapter.d.ts +30 -0
- package/dist/graph/mailbox-adapter.d.ts.map +1 -0
- package/dist/graph/mailbox-adapter.js +59 -0
- package/dist/graph/mailbox-adapter.js.map +1 -0
- package/dist/graph/mappers/contact-mapper.d.ts +14 -0
- package/dist/graph/mappers/contact-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/contact-mapper.js +20 -0
- package/dist/graph/mappers/contact-mapper.js.map +1 -0
- package/dist/graph/mappers/email-mapper.d.ts +14 -0
- package/dist/graph/mappers/email-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/email-mapper.js +44 -0
- package/dist/graph/mappers/email-mapper.js.map +1 -0
- package/dist/graph/mappers/event-mapper.d.ts +14 -0
- package/dist/graph/mappers/event-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/event-mapper.js +31 -0
- package/dist/graph/mappers/event-mapper.js.map +1 -0
- package/dist/graph/mappers/folder-mapper.d.ts +22 -0
- package/dist/graph/mappers/folder-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/folder-mapper.js +51 -0
- package/dist/graph/mappers/folder-mapper.js.map +1 -0
- package/dist/graph/mappers/index.d.ts +16 -0
- package/dist/graph/mappers/index.d.ts.map +1 -0
- package/dist/graph/mappers/index.js +16 -0
- package/dist/graph/mappers/index.js.map +1 -0
- package/dist/graph/mappers/task-mapper.d.ts +20 -0
- package/dist/graph/mappers/task-mapper.d.ts.map +1 -0
- package/dist/graph/mappers/task-mapper.js +27 -0
- package/dist/graph/mappers/task-mapper.js.map +1 -0
- package/dist/graph/mappers/utils.d.ts +97 -0
- package/dist/graph/mappers/utils.d.ts.map +1 -0
- package/dist/graph/mappers/utils.js +186 -0
- package/dist/graph/mappers/utils.js.map +1 -0
- package/dist/graph/repository.d.ts +1104 -0
- package/dist/graph/repository.d.ts.map +1 -0
- package/dist/graph/repository.js +2999 -0
- package/dist/graph/repository.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6052 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/html-stripper.d.ts +41 -0
- package/dist/parsers/html-stripper.d.ts.map +1 -0
- package/dist/parsers/html-stripper.js +179 -0
- package/dist/parsers/html-stripper.js.map +1 -0
- package/dist/parsers/index.d.ts +12 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +12 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/olk15.d.ts +87 -0
- package/dist/parsers/olk15.d.ts.map +1 -0
- package/dist/parsers/olk15.js +368 -0
- package/dist/parsers/olk15.js.map +1 -0
- package/dist/signature.d.ts +22 -0
- package/dist/signature.d.ts.map +1 -0
- package/dist/signature.js +89 -0
- package/dist/signature.js.map +1 -0
- package/dist/tools/calendar-permissions.d.ts +79 -0
- package/dist/tools/calendar-permissions.d.ts.map +1 -0
- package/dist/tools/calendar-permissions.js +121 -0
- package/dist/tools/calendar-permissions.js.map +1 -0
- package/dist/tools/calendar.d.ts +208 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +247 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/categories.d.ts +94 -0
- package/dist/tools/categories.d.ts.map +1 -0
- package/dist/tools/categories.js +117 -0
- package/dist/tools/categories.js.map +1 -0
- package/dist/tools/checklist-items.d.ts +89 -0
- package/dist/tools/checklist-items.d.ts.map +1 -0
- package/dist/tools/checklist-items.js +140 -0
- package/dist/tools/checklist-items.js.map +1 -0
- package/dist/tools/contacts.d.ts +94 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +134 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/excel.d.ts +96 -0
- package/dist/tools/excel.d.ts.map +1 -0
- package/dist/tools/excel.js +165 -0
- package/dist/tools/excel.js.map +1 -0
- package/dist/tools/focused-overrides.d.ts +70 -0
- package/dist/tools/focused-overrides.d.ts.map +1 -0
- package/dist/tools/focused-overrides.js +117 -0
- package/dist/tools/focused-overrides.js.map +1 -0
- package/dist/tools/index.d.ts +22 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +34 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/linked-resources.d.ts +74 -0
- package/dist/tools/linked-resources.d.ts.map +1 -0
- package/dist/tools/linked-resources.js +122 -0
- package/dist/tools/linked-resources.js.map +1 -0
- package/dist/tools/mail-rules.d.ts +98 -0
- package/dist/tools/mail-rules.d.ts.map +1 -0
- package/dist/tools/mail-rules.js +169 -0
- package/dist/tools/mail-rules.js.map +1 -0
- package/dist/tools/mail-send.d.ts +314 -0
- package/dist/tools/mail-send.d.ts.map +1 -0
- package/dist/tools/mail-send.js +555 -0
- package/dist/tools/mail-send.js.map +1 -0
- package/dist/tools/mail.d.ts +127 -0
- package/dist/tools/mail.d.ts.map +1 -0
- package/dist/tools/mail.js +311 -0
- package/dist/tools/mail.js.map +1 -0
- package/dist/tools/mailbox-organization.d.ts +301 -0
- package/dist/tools/mailbox-organization.d.ts.map +1 -0
- package/dist/tools/mailbox-organization.js +541 -0
- package/dist/tools/mailbox-organization.js.map +1 -0
- package/dist/tools/meetings.d.ts +114 -0
- package/dist/tools/meetings.d.ts.map +1 -0
- package/dist/tools/meetings.js +110 -0
- package/dist/tools/meetings.js.map +1 -0
- package/dist/tools/notes.d.ts +74 -0
- package/dist/tools/notes.d.ts.map +1 -0
- package/dist/tools/notes.js +136 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/onedrive.d.ts +194 -0
- package/dist/tools/onedrive.d.ts.map +1 -0
- package/dist/tools/onedrive.js +257 -0
- package/dist/tools/onedrive.js.map +1 -0
- package/dist/tools/people.d.ts +129 -0
- package/dist/tools/people.d.ts.map +1 -0
- package/dist/tools/people.js +195 -0
- package/dist/tools/people.js.map +1 -0
- package/dist/tools/planner-visualization.d.ts +91 -0
- package/dist/tools/planner-visualization.d.ts.map +1 -0
- package/dist/tools/planner-visualization.js +192 -0
- package/dist/tools/planner-visualization.js.map +1 -0
- package/dist/tools/planner.d.ts +288 -0
- package/dist/tools/planner.d.ts.map +1 -0
- package/dist/tools/planner.js +368 -0
- package/dist/tools/planner.js.map +1 -0
- package/dist/tools/scheduling.d.ts +49 -0
- package/dist/tools/scheduling.d.ts.map +1 -0
- package/dist/tools/scheduling.js +115 -0
- package/dist/tools/scheduling.js.map +1 -0
- package/dist/tools/sharepoint.d.ts +115 -0
- package/dist/tools/sharepoint.d.ts.map +1 -0
- package/dist/tools/sharepoint.js +99 -0
- package/dist/tools/sharepoint.js.map +1 -0
- package/dist/tools/task-attachments.d.ts +74 -0
- package/dist/tools/task-attachments.d.ts.map +1 -0
- package/dist/tools/task-attachments.js +122 -0
- package/dist/tools/task-attachments.js.map +1 -0
- package/dist/tools/tasks.d.ts +74 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +126 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/teams.d.ts +389 -0
- package/dist/tools/teams.d.ts.map +1 -0
- package/dist/tools/teams.js +546 -0
- package/dist/tools/teams.js.map +1 -0
- package/dist/types/calendar.d.ts +60 -0
- package/dist/types/calendar.d.ts.map +1 -0
- package/dist/types/calendar.js +15 -0
- package/dist/types/calendar.js.map +1 -0
- package/dist/types/contacts.d.ts +96 -0
- package/dist/types/contacts.d.ts.map +1 -0
- package/dist/types/contacts.js +41 -0
- package/dist/types/contacts.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mail.d.ts +108 -0
- package/dist/types/mail.d.ts.map +1 -0
- package/dist/types/mail.js +40 -0
- package/dist/types/mail.js.map +1 -0
- package/dist/types/notes.d.ts +26 -0
- package/dist/types/notes.d.ts.map +1 -0
- package/dist/types/notes.js +6 -0
- package/dist/types/notes.js.map +1 -0
- package/dist/types/tasks.d.ts +31 -0
- package/dist/types/tasks.d.ts.map +1 -0
- package/dist/types/tasks.js +6 -0
- package/dist/types/tasks.js.map +1 -0
- package/dist/utils/dates.d.ts +66 -0
- package/dist/utils/dates.d.ts.map +1 -0
- package/dist/utils/dates.js +94 -0
- package/dist/utils/dates.js.map +1 -0
- package/dist/utils/errors.d.ts +218 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +306 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/visualization/html.d.ts +26 -0
- package/dist/visualization/html.d.ts.map +1 -0
- package/dist/visualization/html.js +306 -0
- package/dist/visualization/html.js.map +1 -0
- package/dist/visualization/markdown.d.ts +25 -0
- package/dist/visualization/markdown.d.ts.map +1 -0
- package/dist/visualization/markdown.js +186 -0
- package/dist/visualization/markdown.js.map +1 -0
- package/dist/visualization/mermaid.d.ts +25 -0
- package/dist/visualization/mermaid.d.ts.map +1 -0
- package/dist/visualization/mermaid.js +158 -0
- package/dist/visualization/mermaid.js.map +1 -0
- package/dist/visualization/svg.d.ts +25 -0
- package/dist/visualization/svg.d.ts.map +1 -0
- package/dist/visualization/svg.js +282 -0
- package/dist/visualization/svg.js.map +1 -0
- package/dist/visualization/types.d.ts +43 -0
- package/dist/visualization/types.d.ts.map +1 -0
- package/dist/visualization/types.js +34 -0
- package/dist/visualization/types.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 JBC Tech Solutions, LLC
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* SQL query definitions for Outlook database.
|
|
7
|
+
*
|
|
8
|
+
* All queries are read-only SELECT statements.
|
|
9
|
+
*/
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Folder Queries
|
|
12
|
+
// =============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Lists all mail folders with message and unread counts.
|
|
15
|
+
*/
|
|
16
|
+
export const LIST_FOLDERS = `
|
|
17
|
+
SELECT
|
|
18
|
+
f.Record_RecordID as id,
|
|
19
|
+
f.Folder_Name as name,
|
|
20
|
+
f.Folder_ParentID as parentId,
|
|
21
|
+
f.Folder_SpecialFolderType as specialType,
|
|
22
|
+
f.Folder_FolderType as folderType,
|
|
23
|
+
f.Record_AccountUID as accountId,
|
|
24
|
+
(SELECT COUNT(*) FROM Mail m WHERE m.Record_FolderID = f.Record_RecordID) as messageCount,
|
|
25
|
+
(SELECT COUNT(*) FROM Mail m WHERE m.Record_FolderID = f.Record_RecordID AND m.Message_ReadFlag = 0) as unreadCount
|
|
26
|
+
FROM Folders f
|
|
27
|
+
WHERE f.Folder_FolderClass = 0
|
|
28
|
+
ORDER BY f.Folder_FolderOrder, f.Folder_Name
|
|
29
|
+
`;
|
|
30
|
+
/**
|
|
31
|
+
* Gets a single folder by ID.
|
|
32
|
+
*/
|
|
33
|
+
export const GET_FOLDER = `
|
|
34
|
+
SELECT
|
|
35
|
+
f.Record_RecordID as id,
|
|
36
|
+
f.Folder_Name as name,
|
|
37
|
+
f.Folder_ParentID as parentId,
|
|
38
|
+
f.Folder_SpecialFolderType as specialType,
|
|
39
|
+
f.Folder_FolderType as folderType,
|
|
40
|
+
f.Record_AccountUID as accountId,
|
|
41
|
+
(SELECT COUNT(*) FROM Mail m WHERE m.Record_FolderID = f.Record_RecordID) as messageCount,
|
|
42
|
+
(SELECT COUNT(*) FROM Mail m WHERE m.Record_FolderID = f.Record_RecordID AND m.Message_ReadFlag = 0) as unreadCount
|
|
43
|
+
FROM Folders f
|
|
44
|
+
WHERE f.Record_RecordID = ?
|
|
45
|
+
`;
|
|
46
|
+
// =============================================================================
|
|
47
|
+
// Mail Queries
|
|
48
|
+
// =============================================================================
|
|
49
|
+
/**
|
|
50
|
+
* Lists emails in a folder with pagination.
|
|
51
|
+
*/
|
|
52
|
+
export const LIST_EMAILS = `
|
|
53
|
+
SELECT
|
|
54
|
+
Record_RecordID as id,
|
|
55
|
+
Record_FolderID as folderId,
|
|
56
|
+
Message_NormalizedSubject as subject,
|
|
57
|
+
Message_SenderList as sender,
|
|
58
|
+
Message_SenderAddressList as senderAddress,
|
|
59
|
+
Message_RecipientList as recipients,
|
|
60
|
+
Message_DisplayTo as displayTo,
|
|
61
|
+
Message_ToRecipientAddressList as toAddresses,
|
|
62
|
+
Message_CCRecipientAddressList as ccAddresses,
|
|
63
|
+
Message_Preview as preview,
|
|
64
|
+
Message_ReadFlag as isRead,
|
|
65
|
+
Message_TimeReceived as timeReceived,
|
|
66
|
+
Message_TimeSent as timeSent,
|
|
67
|
+
Message_HasAttachment as hasAttachment,
|
|
68
|
+
Message_Size as size,
|
|
69
|
+
Record_Priority as priority,
|
|
70
|
+
Record_FlagStatus as flagStatus,
|
|
71
|
+
PathToDataFile as dataFilePath
|
|
72
|
+
FROM Mail
|
|
73
|
+
WHERE Record_FolderID = ?
|
|
74
|
+
ORDER BY Message_TimeReceived DESC
|
|
75
|
+
LIMIT ? OFFSET ?
|
|
76
|
+
`;
|
|
77
|
+
/**
|
|
78
|
+
* Lists unread emails in a folder with pagination.
|
|
79
|
+
*/
|
|
80
|
+
export const LIST_UNREAD_EMAILS = `
|
|
81
|
+
SELECT
|
|
82
|
+
Record_RecordID as id,
|
|
83
|
+
Record_FolderID as folderId,
|
|
84
|
+
Message_NormalizedSubject as subject,
|
|
85
|
+
Message_SenderList as sender,
|
|
86
|
+
Message_SenderAddressList as senderAddress,
|
|
87
|
+
Message_RecipientList as recipients,
|
|
88
|
+
Message_DisplayTo as displayTo,
|
|
89
|
+
Message_Preview as preview,
|
|
90
|
+
Message_ReadFlag as isRead,
|
|
91
|
+
Message_TimeReceived as timeReceived,
|
|
92
|
+
Message_TimeSent as timeSent,
|
|
93
|
+
Message_HasAttachment as hasAttachment,
|
|
94
|
+
Message_Size as size,
|
|
95
|
+
Record_Priority as priority,
|
|
96
|
+
Record_FlagStatus as flagStatus,
|
|
97
|
+
PathToDataFile as dataFilePath
|
|
98
|
+
FROM Mail
|
|
99
|
+
WHERE Record_FolderID = ? AND Message_ReadFlag = 0
|
|
100
|
+
ORDER BY Message_TimeReceived DESC
|
|
101
|
+
LIMIT ? OFFSET ?
|
|
102
|
+
`;
|
|
103
|
+
/**
|
|
104
|
+
* Searches emails by subject, sender, or preview.
|
|
105
|
+
*/
|
|
106
|
+
export const SEARCH_EMAILS = `
|
|
107
|
+
SELECT
|
|
108
|
+
Record_RecordID as id,
|
|
109
|
+
Record_FolderID as folderId,
|
|
110
|
+
Message_NormalizedSubject as subject,
|
|
111
|
+
Message_SenderList as sender,
|
|
112
|
+
Message_SenderAddressList as senderAddress,
|
|
113
|
+
Message_RecipientList as recipients,
|
|
114
|
+
Message_Preview as preview,
|
|
115
|
+
Message_ReadFlag as isRead,
|
|
116
|
+
Message_TimeReceived as timeReceived,
|
|
117
|
+
Message_HasAttachment as hasAttachment,
|
|
118
|
+
PathToDataFile as dataFilePath
|
|
119
|
+
FROM Mail
|
|
120
|
+
WHERE (
|
|
121
|
+
Message_NormalizedSubject LIKE ?
|
|
122
|
+
OR Message_SenderList LIKE ?
|
|
123
|
+
OR Message_Preview LIKE ?
|
|
124
|
+
)
|
|
125
|
+
ORDER BY Message_TimeReceived DESC
|
|
126
|
+
LIMIT ?
|
|
127
|
+
`;
|
|
128
|
+
/**
|
|
129
|
+
* Searches emails within a specific folder.
|
|
130
|
+
*/
|
|
131
|
+
export const SEARCH_EMAILS_IN_FOLDER = `
|
|
132
|
+
SELECT
|
|
133
|
+
Record_RecordID as id,
|
|
134
|
+
Record_FolderID as folderId,
|
|
135
|
+
Message_NormalizedSubject as subject,
|
|
136
|
+
Message_SenderList as sender,
|
|
137
|
+
Message_SenderAddressList as senderAddress,
|
|
138
|
+
Message_RecipientList as recipients,
|
|
139
|
+
Message_Preview as preview,
|
|
140
|
+
Message_ReadFlag as isRead,
|
|
141
|
+
Message_TimeReceived as timeReceived,
|
|
142
|
+
Message_HasAttachment as hasAttachment,
|
|
143
|
+
PathToDataFile as dataFilePath
|
|
144
|
+
FROM Mail
|
|
145
|
+
WHERE Record_FolderID = ? AND (
|
|
146
|
+
Message_NormalizedSubject LIKE ?
|
|
147
|
+
OR Message_SenderList LIKE ?
|
|
148
|
+
OR Message_Preview LIKE ?
|
|
149
|
+
)
|
|
150
|
+
ORDER BY Message_TimeReceived DESC
|
|
151
|
+
LIMIT ?
|
|
152
|
+
`;
|
|
153
|
+
/**
|
|
154
|
+
* Gets a single email by ID.
|
|
155
|
+
*/
|
|
156
|
+
export const GET_EMAIL = `
|
|
157
|
+
SELECT
|
|
158
|
+
Record_RecordID as id,
|
|
159
|
+
Record_FolderID as folderId,
|
|
160
|
+
Message_NormalizedSubject as subject,
|
|
161
|
+
Message_SenderList as sender,
|
|
162
|
+
Message_SenderAddressList as senderAddress,
|
|
163
|
+
Message_RecipientList as recipients,
|
|
164
|
+
Message_DisplayTo as displayTo,
|
|
165
|
+
Message_ToRecipientAddressList as toAddresses,
|
|
166
|
+
Message_CCRecipientAddressList as ccAddresses,
|
|
167
|
+
Message_Preview as preview,
|
|
168
|
+
Message_ReadFlag as isRead,
|
|
169
|
+
Message_TimeReceived as timeReceived,
|
|
170
|
+
Message_TimeSent as timeSent,
|
|
171
|
+
Message_HasAttachment as hasAttachment,
|
|
172
|
+
Message_Size as size,
|
|
173
|
+
Record_Priority as priority,
|
|
174
|
+
Record_FlagStatus as flagStatus,
|
|
175
|
+
Record_Categories as categories,
|
|
176
|
+
Message_MessageID as messageId,
|
|
177
|
+
Conversation_ConversationID as conversationId,
|
|
178
|
+
PathToDataFile as dataFilePath
|
|
179
|
+
FROM Mail
|
|
180
|
+
WHERE Record_RecordID = ?
|
|
181
|
+
`;
|
|
182
|
+
/**
|
|
183
|
+
* Gets unread count for all folders or a specific folder.
|
|
184
|
+
*/
|
|
185
|
+
export const GET_UNREAD_COUNT = `
|
|
186
|
+
SELECT COUNT(*) as count
|
|
187
|
+
FROM Mail
|
|
188
|
+
WHERE Message_ReadFlag = 0
|
|
189
|
+
`;
|
|
190
|
+
export const GET_UNREAD_COUNT_BY_FOLDER = `
|
|
191
|
+
SELECT COUNT(*) as count
|
|
192
|
+
FROM Mail
|
|
193
|
+
WHERE Message_ReadFlag = 0 AND Record_FolderID = ?
|
|
194
|
+
`;
|
|
195
|
+
// =============================================================================
|
|
196
|
+
// Calendar Queries
|
|
197
|
+
// =============================================================================
|
|
198
|
+
/**
|
|
199
|
+
* Lists calendar folders.
|
|
200
|
+
*/
|
|
201
|
+
export const LIST_CALENDARS = `
|
|
202
|
+
SELECT
|
|
203
|
+
f.Record_RecordID as id,
|
|
204
|
+
f.Folder_Name as name,
|
|
205
|
+
f.Record_AccountUID as accountId
|
|
206
|
+
FROM Folders f
|
|
207
|
+
WHERE f.Folder_SpecialFolderType = 4
|
|
208
|
+
ORDER BY f.Folder_Name
|
|
209
|
+
`;
|
|
210
|
+
/**
|
|
211
|
+
* Lists events with optional date range and folder filter.
|
|
212
|
+
*/
|
|
213
|
+
export const LIST_EVENTS = `
|
|
214
|
+
SELECT
|
|
215
|
+
Record_RecordID as id,
|
|
216
|
+
Record_FolderID as folderId,
|
|
217
|
+
NULL as subject,
|
|
218
|
+
Calendar_StartDateUTC as startDate,
|
|
219
|
+
Calendar_EndDateUTC as endDate,
|
|
220
|
+
Calendar_IsRecurring as isRecurring,
|
|
221
|
+
Calendar_HasReminder as hasReminder,
|
|
222
|
+
Calendar_AttendeeCount as attendeeCount,
|
|
223
|
+
Calendar_UID as uid,
|
|
224
|
+
PathToDataFile as dataFilePath
|
|
225
|
+
FROM CalendarEvents
|
|
226
|
+
ORDER BY Calendar_StartDateUTC
|
|
227
|
+
LIMIT ?
|
|
228
|
+
`;
|
|
229
|
+
export const LIST_EVENTS_BY_FOLDER = `
|
|
230
|
+
SELECT
|
|
231
|
+
Record_RecordID as id,
|
|
232
|
+
Record_FolderID as folderId,
|
|
233
|
+
NULL as subject,
|
|
234
|
+
Calendar_StartDateUTC as startDate,
|
|
235
|
+
Calendar_EndDateUTC as endDate,
|
|
236
|
+
Calendar_IsRecurring as isRecurring,
|
|
237
|
+
Calendar_HasReminder as hasReminder,
|
|
238
|
+
Calendar_AttendeeCount as attendeeCount,
|
|
239
|
+
Calendar_UID as uid,
|
|
240
|
+
PathToDataFile as dataFilePath
|
|
241
|
+
FROM CalendarEvents
|
|
242
|
+
WHERE Record_FolderID = ?
|
|
243
|
+
ORDER BY Calendar_StartDateUTC
|
|
244
|
+
LIMIT ?
|
|
245
|
+
`;
|
|
246
|
+
export const LIST_EVENTS_BY_DATE_RANGE = `
|
|
247
|
+
SELECT
|
|
248
|
+
Record_RecordID as id,
|
|
249
|
+
Record_FolderID as folderId,
|
|
250
|
+
NULL as subject,
|
|
251
|
+
Calendar_StartDateUTC as startDate,
|
|
252
|
+
Calendar_EndDateUTC as endDate,
|
|
253
|
+
Calendar_IsRecurring as isRecurring,
|
|
254
|
+
Calendar_HasReminder as hasReminder,
|
|
255
|
+
Calendar_AttendeeCount as attendeeCount,
|
|
256
|
+
Calendar_UID as uid,
|
|
257
|
+
PathToDataFile as dataFilePath
|
|
258
|
+
FROM CalendarEvents
|
|
259
|
+
WHERE Calendar_StartDateUTC >= ? AND Calendar_EndDateUTC <= ?
|
|
260
|
+
ORDER BY Calendar_StartDateUTC
|
|
261
|
+
LIMIT ?
|
|
262
|
+
`;
|
|
263
|
+
/**
|
|
264
|
+
* Gets a single event by ID.
|
|
265
|
+
*/
|
|
266
|
+
export const GET_EVENT = `
|
|
267
|
+
SELECT
|
|
268
|
+
Record_RecordID as id,
|
|
269
|
+
Record_FolderID as folderId,
|
|
270
|
+
NULL as subject,
|
|
271
|
+
Calendar_StartDateUTC as startDate,
|
|
272
|
+
Calendar_EndDateUTC as endDate,
|
|
273
|
+
Calendar_IsRecurring as isRecurring,
|
|
274
|
+
Calendar_HasReminder as hasReminder,
|
|
275
|
+
Calendar_AttendeeCount as attendeeCount,
|
|
276
|
+
Calendar_UID as uid,
|
|
277
|
+
Calendar_MasterRecordID as masterRecordId,
|
|
278
|
+
Calendar_RecurrenceID as recurrenceId,
|
|
279
|
+
PathToDataFile as dataFilePath
|
|
280
|
+
FROM CalendarEvents
|
|
281
|
+
WHERE Record_RecordID = ?
|
|
282
|
+
`;
|
|
283
|
+
// =============================================================================
|
|
284
|
+
// Contact Queries
|
|
285
|
+
// =============================================================================
|
|
286
|
+
/**
|
|
287
|
+
* Lists contacts with pagination.
|
|
288
|
+
*/
|
|
289
|
+
export const LIST_CONTACTS = `
|
|
290
|
+
SELECT
|
|
291
|
+
Record_RecordID as id,
|
|
292
|
+
Record_FolderID as folderId,
|
|
293
|
+
Contact_DisplayName as displayName,
|
|
294
|
+
Contact_DisplayNameSort as sortName,
|
|
295
|
+
Contact_ContactRecType as contactType,
|
|
296
|
+
PathToDataFile as dataFilePath
|
|
297
|
+
FROM Contacts
|
|
298
|
+
ORDER BY Contact_DisplayNameSort
|
|
299
|
+
LIMIT ? OFFSET ?
|
|
300
|
+
`;
|
|
301
|
+
/**
|
|
302
|
+
* Searches contacts by name.
|
|
303
|
+
*/
|
|
304
|
+
export const SEARCH_CONTACTS = `
|
|
305
|
+
SELECT
|
|
306
|
+
Record_RecordID as id,
|
|
307
|
+
Record_FolderID as folderId,
|
|
308
|
+
Contact_DisplayName as displayName,
|
|
309
|
+
Contact_DisplayNameSort as sortName,
|
|
310
|
+
PathToDataFile as dataFilePath
|
|
311
|
+
FROM Contacts
|
|
312
|
+
WHERE Contact_DisplayName LIKE ? OR Contact_DisplayNameSort LIKE ?
|
|
313
|
+
ORDER BY Contact_DisplayNameSort
|
|
314
|
+
LIMIT ?
|
|
315
|
+
`;
|
|
316
|
+
/**
|
|
317
|
+
* Gets a single contact by ID.
|
|
318
|
+
*/
|
|
319
|
+
export const GET_CONTACT = `
|
|
320
|
+
SELECT
|
|
321
|
+
Record_RecordID as id,
|
|
322
|
+
Record_FolderID as folderId,
|
|
323
|
+
Contact_DisplayName as displayName,
|
|
324
|
+
Contact_DisplayNameSort as sortName,
|
|
325
|
+
Contact_ContactRecType as contactType,
|
|
326
|
+
PathToDataFile as dataFilePath
|
|
327
|
+
FROM Contacts
|
|
328
|
+
WHERE Record_RecordID = ?
|
|
329
|
+
`;
|
|
330
|
+
// =============================================================================
|
|
331
|
+
// Task Queries
|
|
332
|
+
// =============================================================================
|
|
333
|
+
/**
|
|
334
|
+
* Lists tasks with pagination.
|
|
335
|
+
*/
|
|
336
|
+
export const LIST_TASKS = `
|
|
337
|
+
SELECT
|
|
338
|
+
Record_RecordID as id,
|
|
339
|
+
Record_FolderID as folderId,
|
|
340
|
+
Task_Name as name,
|
|
341
|
+
Task_Completed as isCompleted,
|
|
342
|
+
Record_DueDate as dueDate,
|
|
343
|
+
Record_StartDate as startDate,
|
|
344
|
+
Record_Priority as priority,
|
|
345
|
+
PathToDataFile as dataFilePath
|
|
346
|
+
FROM Tasks
|
|
347
|
+
ORDER BY Record_DueDate, Task_Name
|
|
348
|
+
LIMIT ? OFFSET ?
|
|
349
|
+
`;
|
|
350
|
+
/**
|
|
351
|
+
* Lists incomplete tasks only.
|
|
352
|
+
*/
|
|
353
|
+
export const LIST_INCOMPLETE_TASKS = `
|
|
354
|
+
SELECT
|
|
355
|
+
Record_RecordID as id,
|
|
356
|
+
Record_FolderID as folderId,
|
|
357
|
+
Task_Name as name,
|
|
358
|
+
Task_Completed as isCompleted,
|
|
359
|
+
Record_DueDate as dueDate,
|
|
360
|
+
Record_StartDate as startDate,
|
|
361
|
+
Record_Priority as priority,
|
|
362
|
+
PathToDataFile as dataFilePath
|
|
363
|
+
FROM Tasks
|
|
364
|
+
WHERE Task_Completed = 0
|
|
365
|
+
ORDER BY Record_DueDate, Task_Name
|
|
366
|
+
LIMIT ? OFFSET ?
|
|
367
|
+
`;
|
|
368
|
+
/**
|
|
369
|
+
* Searches tasks by name.
|
|
370
|
+
*/
|
|
371
|
+
export const SEARCH_TASKS = `
|
|
372
|
+
SELECT
|
|
373
|
+
Record_RecordID as id,
|
|
374
|
+
Record_FolderID as folderId,
|
|
375
|
+
Task_Name as name,
|
|
376
|
+
Task_Completed as isCompleted,
|
|
377
|
+
Record_DueDate as dueDate,
|
|
378
|
+
Record_Priority as priority,
|
|
379
|
+
PathToDataFile as dataFilePath
|
|
380
|
+
FROM Tasks
|
|
381
|
+
WHERE Task_Name LIKE ?
|
|
382
|
+
ORDER BY Record_DueDate, Task_Name
|
|
383
|
+
LIMIT ?
|
|
384
|
+
`;
|
|
385
|
+
/**
|
|
386
|
+
* Gets a single task by ID.
|
|
387
|
+
*/
|
|
388
|
+
export const GET_TASK = `
|
|
389
|
+
SELECT
|
|
390
|
+
Record_RecordID as id,
|
|
391
|
+
Record_FolderID as folderId,
|
|
392
|
+
Task_Name as name,
|
|
393
|
+
Task_Completed as isCompleted,
|
|
394
|
+
Record_DueDate as dueDate,
|
|
395
|
+
Record_StartDate as startDate,
|
|
396
|
+
Record_Priority as priority,
|
|
397
|
+
Record_HasReminder as hasReminder,
|
|
398
|
+
PathToDataFile as dataFilePath
|
|
399
|
+
FROM Tasks
|
|
400
|
+
WHERE Record_RecordID = ?
|
|
401
|
+
`;
|
|
402
|
+
// =============================================================================
|
|
403
|
+
// Note Queries
|
|
404
|
+
// =============================================================================
|
|
405
|
+
/**
|
|
406
|
+
* Lists notes with pagination.
|
|
407
|
+
*/
|
|
408
|
+
export const LIST_NOTES = `
|
|
409
|
+
SELECT
|
|
410
|
+
Record_RecordID as id,
|
|
411
|
+
Record_FolderID as folderId,
|
|
412
|
+
Record_ModDate as modifiedDate,
|
|
413
|
+
PathToDataFile as dataFilePath
|
|
414
|
+
FROM Notes
|
|
415
|
+
ORDER BY Record_ModDate DESC
|
|
416
|
+
LIMIT ? OFFSET ?
|
|
417
|
+
`;
|
|
418
|
+
/**
|
|
419
|
+
* Gets a single note by ID.
|
|
420
|
+
*/
|
|
421
|
+
export const GET_NOTE = `
|
|
422
|
+
SELECT
|
|
423
|
+
Record_RecordID as id,
|
|
424
|
+
Record_FolderID as folderId,
|
|
425
|
+
Record_ModDate as modifiedDate,
|
|
426
|
+
PathToDataFile as dataFilePath
|
|
427
|
+
FROM Notes
|
|
428
|
+
WHERE Record_RecordID = ?
|
|
429
|
+
`;
|
|
430
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/database/queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;CAa3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;CAYzB,CAAC;AAEF,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBtC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;CAI/B,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;CAIzC,CAAC;AAEF,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;CAQ7B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;CAe1B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;CAgBpC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;CAgBxC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;CAgBxB,CAAC;AAEF,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;CAW5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;CAW9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;CAU1B,CAAC;AAEF,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;CAazB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;CAcpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;CAa3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;CAavB,CAAC;AAEF,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;CASzB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;CAQvB,CAAC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 JBC Tech Solutions, LLC
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Repository for accessing Outlook data.
|
|
7
|
+
*
|
|
8
|
+
* Provides a data access layer over the SQLite database.
|
|
9
|
+
*/
|
|
10
|
+
import type { IConnection } from './connection.js';
|
|
11
|
+
export interface FolderRow {
|
|
12
|
+
readonly id: number;
|
|
13
|
+
readonly name: string | null;
|
|
14
|
+
readonly parentId: number | null;
|
|
15
|
+
readonly specialType: number;
|
|
16
|
+
readonly folderType: number;
|
|
17
|
+
readonly accountId: number;
|
|
18
|
+
readonly messageCount: number;
|
|
19
|
+
readonly unreadCount: number;
|
|
20
|
+
}
|
|
21
|
+
export interface EmailRow {
|
|
22
|
+
readonly id: number;
|
|
23
|
+
readonly folderId: number;
|
|
24
|
+
readonly subject: string | null;
|
|
25
|
+
readonly sender: string | null;
|
|
26
|
+
readonly senderAddress: string | null;
|
|
27
|
+
readonly recipients: string | null;
|
|
28
|
+
readonly displayTo: string | null;
|
|
29
|
+
readonly toAddresses: string | null;
|
|
30
|
+
readonly ccAddresses: string | null;
|
|
31
|
+
readonly preview: string | null;
|
|
32
|
+
readonly isRead: number;
|
|
33
|
+
readonly timeReceived: number | null;
|
|
34
|
+
readonly timeSent: number | null;
|
|
35
|
+
readonly hasAttachment: number;
|
|
36
|
+
readonly size: number;
|
|
37
|
+
readonly priority: number;
|
|
38
|
+
readonly flagStatus: number;
|
|
39
|
+
readonly categories: Buffer | null;
|
|
40
|
+
readonly messageId: string | null;
|
|
41
|
+
readonly conversationId: number | null;
|
|
42
|
+
readonly dataFilePath: string | null;
|
|
43
|
+
}
|
|
44
|
+
export interface EventRow {
|
|
45
|
+
readonly id: number;
|
|
46
|
+
readonly folderId: number;
|
|
47
|
+
readonly subject: string | null;
|
|
48
|
+
readonly startDate: number | null;
|
|
49
|
+
readonly endDate: number | null;
|
|
50
|
+
readonly isRecurring: number;
|
|
51
|
+
readonly hasReminder: number;
|
|
52
|
+
readonly attendeeCount: number;
|
|
53
|
+
readonly uid: string | null;
|
|
54
|
+
readonly masterRecordId: number | null;
|
|
55
|
+
readonly recurrenceId: number | null;
|
|
56
|
+
readonly dataFilePath: string | null;
|
|
57
|
+
readonly onlineMeetingUrl: string | null;
|
|
58
|
+
}
|
|
59
|
+
export interface ContactRow {
|
|
60
|
+
readonly id: number;
|
|
61
|
+
readonly folderId: number;
|
|
62
|
+
readonly displayName: string | null;
|
|
63
|
+
readonly sortName: string | null;
|
|
64
|
+
readonly contactType: number | null;
|
|
65
|
+
readonly dataFilePath: string | null;
|
|
66
|
+
}
|
|
67
|
+
export interface TaskRow {
|
|
68
|
+
readonly id: number;
|
|
69
|
+
readonly folderId: number;
|
|
70
|
+
readonly name: string | null;
|
|
71
|
+
readonly isCompleted: number;
|
|
72
|
+
readonly dueDate: number | null;
|
|
73
|
+
readonly startDate: number | null;
|
|
74
|
+
readonly priority: number;
|
|
75
|
+
readonly hasReminder: number | null;
|
|
76
|
+
readonly dataFilePath: string | null;
|
|
77
|
+
}
|
|
78
|
+
export interface NoteRow {
|
|
79
|
+
readonly id: number;
|
|
80
|
+
readonly folderId: number;
|
|
81
|
+
readonly modifiedDate: number | null;
|
|
82
|
+
readonly dataFilePath: string | null;
|
|
83
|
+
}
|
|
84
|
+
export interface CountRow {
|
|
85
|
+
readonly count: number;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Interface for the Outlook data repository (for dependency injection).
|
|
89
|
+
*/
|
|
90
|
+
export interface IRepository {
|
|
91
|
+
listFolders(): FolderRow[];
|
|
92
|
+
getFolder(id: number): FolderRow | undefined;
|
|
93
|
+
listEmails(folderId: number, limit: number, offset: number): EmailRow[];
|
|
94
|
+
listUnreadEmails(folderId: number, limit: number, offset: number): EmailRow[];
|
|
95
|
+
searchEmails(query: string, limit: number): EmailRow[];
|
|
96
|
+
searchEmailsInFolder(folderId: number, query: string, limit: number): EmailRow[];
|
|
97
|
+
getEmail(id: number): EmailRow | undefined;
|
|
98
|
+
getUnreadCount(): number;
|
|
99
|
+
getUnreadCountByFolder(folderId: number): number;
|
|
100
|
+
listCalendars(): FolderRow[];
|
|
101
|
+
listEvents(limit: number): EventRow[];
|
|
102
|
+
listEventsByFolder(folderId: number, limit: number): EventRow[];
|
|
103
|
+
listEventsByDateRange(startDate: number, endDate: number, limit: number): EventRow[];
|
|
104
|
+
searchEvents(query: string | null, startDate: string | null, endDate: string | null, limit: number): EventRow[];
|
|
105
|
+
getEvent(id: number): EventRow | undefined;
|
|
106
|
+
listContacts(limit: number, offset: number): ContactRow[];
|
|
107
|
+
searchContacts(query: string, limit: number): ContactRow[];
|
|
108
|
+
getContact(id: number): ContactRow | undefined;
|
|
109
|
+
listTasks(limit: number, offset: number): TaskRow[];
|
|
110
|
+
listIncompleteTasks(limit: number, offset: number): TaskRow[];
|
|
111
|
+
searchTasks(query: string, limit: number): TaskRow[];
|
|
112
|
+
getTask(id: number): TaskRow | undefined;
|
|
113
|
+
listNotes(limit: number, offset: number): NoteRow[];
|
|
114
|
+
getNote(id: number): NoteRow | undefined;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Interface for writable Outlook data operations.
|
|
118
|
+
* Extends IRepository with mutation methods for mailbox organization.
|
|
119
|
+
*/
|
|
120
|
+
export interface IWriteableRepository extends IRepository {
|
|
121
|
+
moveEmail(emailId: number, destinationFolderId: number): void;
|
|
122
|
+
deleteEmail(emailId: number): void;
|
|
123
|
+
archiveEmail(emailId: number): void;
|
|
124
|
+
junkEmail(emailId: number): void;
|
|
125
|
+
markEmailRead(emailId: number, isRead: boolean): void;
|
|
126
|
+
setEmailFlag(emailId: number, flagStatus: number): void;
|
|
127
|
+
setEmailCategories(emailId: number, categories: string[]): void;
|
|
128
|
+
setEmailImportance(emailId: number, importance: string): void;
|
|
129
|
+
createFolder(name: string, parentFolderId?: number): FolderRow;
|
|
130
|
+
deleteFolder(folderId: number): void;
|
|
131
|
+
renameFolder(folderId: number, newName: string): void;
|
|
132
|
+
moveFolder(folderId: number, destinationParentId: number): void;
|
|
133
|
+
emptyFolder(folderId: number): void;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* A value that may be synchronous or wrapped in a Promise.
|
|
137
|
+
*/
|
|
138
|
+
export type MaybePromise<T> = T | Promise<T>;
|
|
139
|
+
/**
|
|
140
|
+
* Async-compatible repository interface for mailbox organization tools.
|
|
141
|
+
*
|
|
142
|
+
* Both sync (AppleScript) and async (Graph) repositories satisfy this
|
|
143
|
+
* interface. AppleScript repos return plain values; Graph repos return
|
|
144
|
+
* Promises. MailboxOrganizationTools awaits all calls uniformly.
|
|
145
|
+
*/
|
|
146
|
+
export interface IMailboxRepository {
|
|
147
|
+
getEmail(id: number): MaybePromise<EmailRow | undefined>;
|
|
148
|
+
getFolder(id: number): MaybePromise<FolderRow | undefined>;
|
|
149
|
+
moveEmail(emailId: number, destinationFolderId: number): MaybePromise<void>;
|
|
150
|
+
deleteEmail(emailId: number): MaybePromise<void>;
|
|
151
|
+
archiveEmail(emailId: number): MaybePromise<void>;
|
|
152
|
+
junkEmail(emailId: number): MaybePromise<void>;
|
|
153
|
+
markEmailRead(emailId: number, isRead: boolean): MaybePromise<void>;
|
|
154
|
+
setEmailFlag(emailId: number, flagStatus: number): MaybePromise<void>;
|
|
155
|
+
setEmailCategories(emailId: number, categories: string[]): MaybePromise<void>;
|
|
156
|
+
setEmailImportance(emailId: number, importance: string): MaybePromise<void>;
|
|
157
|
+
createFolder(name: string, parentFolderId?: number): MaybePromise<FolderRow>;
|
|
158
|
+
deleteFolder(folderId: number): MaybePromise<void>;
|
|
159
|
+
renameFolder(folderId: number, newName: string): MaybePromise<void>;
|
|
160
|
+
moveFolder(folderId: number, destinationParentId: number): MaybePromise<void>;
|
|
161
|
+
emptyFolder(folderId: number): MaybePromise<void>;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Repository implementation using better-sqlite3.
|
|
165
|
+
*/
|
|
166
|
+
export declare class OutlookRepository implements IRepository {
|
|
167
|
+
private readonly connection;
|
|
168
|
+
constructor(connection: IConnection);
|
|
169
|
+
listFolders(): FolderRow[];
|
|
170
|
+
getFolder(id: number): FolderRow | undefined;
|
|
171
|
+
listEmails(folderId: number, limit: number, offset: number): EmailRow[];
|
|
172
|
+
listUnreadEmails(folderId: number, limit: number, offset: number): EmailRow[];
|
|
173
|
+
searchEmails(query: string, limit: number): EmailRow[];
|
|
174
|
+
searchEmailsInFolder(folderId: number, query: string, limit: number): EmailRow[];
|
|
175
|
+
getEmail(id: number): EmailRow | undefined;
|
|
176
|
+
getUnreadCount(): number;
|
|
177
|
+
getUnreadCountByFolder(folderId: number): number;
|
|
178
|
+
listCalendars(): FolderRow[];
|
|
179
|
+
listEvents(limit: number): EventRow[];
|
|
180
|
+
listEventsByFolder(folderId: number, limit: number): EventRow[];
|
|
181
|
+
listEventsByDateRange(startDate: number, endDate: number, limit: number): EventRow[];
|
|
182
|
+
searchEvents(query: string | null, startDate: string | null, endDate: string | null, limit: number): EventRow[];
|
|
183
|
+
getEvent(id: number): EventRow | undefined;
|
|
184
|
+
listContacts(limit: number, offset: number): ContactRow[];
|
|
185
|
+
searchContacts(query: string, limit: number): ContactRow[];
|
|
186
|
+
getContact(id: number): ContactRow | undefined;
|
|
187
|
+
listTasks(limit: number, offset: number): TaskRow[];
|
|
188
|
+
listIncompleteTasks(limit: number, offset: number): TaskRow[];
|
|
189
|
+
searchTasks(query: string, limit: number): TaskRow[];
|
|
190
|
+
getTask(id: number): TaskRow | undefined;
|
|
191
|
+
listNotes(limit: number, offset: number): NoteRow[];
|
|
192
|
+
getNote(id: number): NoteRow | undefined;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Creates a repository with the given connection.
|
|
196
|
+
*/
|
|
197
|
+
export declare function createRepository(connection: IConnection): IRepository;
|
|
198
|
+
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/database/repository.ts"],"names":[],"mappings":"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"}
|