* Calls NoteStore.findNotesMetadata with offset-based pagination. * * Thrift field numbers (from NoteStore.thrift): * findNotesMetadata(1:token, 2:NoteFilter, 3:offset, 4:maxNotes, 5:ResultSpec) * NoteFilter: 4:notebookGuid * NotesMetadataResultSpec: 2:includeTitle, 6:includeCreated, 7:in
( token: string, offset: number, maxNotes: number, notebookGuid?: string, retryOptions?: Parameters<typeof fetchWithRetry>[2] )
| 229 | * 11:notebookGuid, 12:list<tagGuids> |
| 230 | */ |
| 231 | async function apiFindNotesMetadata( |
| 232 | token: string, |
| 233 | offset: number, |
| 234 | maxNotes: number, |
| 235 | notebookGuid?: string, |
| 236 | retryOptions?: Parameters<typeof fetchWithRetry>[2] |
| 237 | ): Promise<{ totalNotes: number; notes: NoteMetadata[] }> { |
| 238 | const w = new ThriftWriter() |
| 239 | w.writeMessageBegin('findNotesMetadata', 0) |
| 240 | w.writeStringField(1, token) |
| 241 | |
| 242 | w.writeFieldBegin(TYPE_STRUCT, 2) // NoteFilter |
| 243 | if (notebookGuid) { |
| 244 | w.writeStringField(4, notebookGuid) |
| 245 | } |
| 246 | w.writeFieldStop() |
| 247 | |
| 248 | w.writeI32Field(3, offset) |
| 249 | w.writeI32Field(4, maxNotes) |
| 250 | |
| 251 | w.writeFieldBegin(TYPE_STRUCT, 5) // NotesMetadataResultSpec |
| 252 | w.writeBoolField(2, true) // includeTitle |
| 253 | w.writeBoolField(6, true) // includeCreated |
| 254 | w.writeBoolField(7, true) // includeUpdated |
| 255 | w.writeBoolField(11, true) // includeNotebookGuid |
| 256 | w.writeBoolField(12, true) // includeTagGuids |
| 257 | w.writeFieldStop() |
| 258 | |
| 259 | w.writeFieldStop() |
| 260 | |
| 261 | const r = await callNoteStore(token, w, retryOptions) |
| 262 | |
| 263 | let totalNotes = 0 |
| 264 | const notes: NoteMetadata[] = [] |
| 265 | |
| 266 | r.readStruct((r2, fid, ftype) => { |
| 267 | if (fid === 0 && ftype === TYPE_STRUCT) { |
| 268 | r2.readStruct((r3, fid3, ftype3) => { |
| 269 | if (fid3 === 1 && ftype3 === TYPE_I32) { |
| 270 | r3.readI32() |
| 271 | } else if (fid3 === 2 && ftype3 === TYPE_I32) { |
| 272 | totalNotes = r3.readI32() |
| 273 | } else if (fid3 === 3 && ftype3 === TYPE_LIST) { |
| 274 | const { size } = r3.readListBegin() |
| 275 | for (let i = 0; i < size; i++) { |
| 276 | let guid = '' |
| 277 | let title = '' |
| 278 | let created = 0 |
| 279 | let updated = 0 |
| 280 | let nbGuid = '' |
| 281 | const tagGuids: string[] = [] |
| 282 | |
| 283 | r3.readStruct((r4, fid4, ftype4) => { |
| 284 | if (fid4 === 1 && ftype4 === TYPE_STRING) guid = r4.readString() |
| 285 | else if (fid4 === 2 && ftype4 === TYPE_STRING) title = r4.readString() |
| 286 | else if (fid4 === 6 && ftype4 === TYPE_I64) created = Number(r4.readI64()) |
| 287 | else if (fid4 === 7 && ftype4 === TYPE_I64) updated = Number(r4.readI64()) |
| 288 | else if (fid4 === 11 && ftype4 === TYPE_STRING) nbGuid = r4.readString() |
no test coverage detected