MCPcopy Index your code
hub / github.com/simstudioai/sim / buildGmailSearchQuery

Function buildGmailSearchQuery

apps/sim/lib/webhooks/polling/gmail.ts:255–293  ·  view source on GitHub ↗
(config: {
  labelIds?: string[]
  labelFilterBehavior?: 'INCLUDE' | 'EXCLUDE'
  searchQuery?: string
})

Source from the content-addressed store, hash-verified

253}
254
255function buildGmailSearchQuery(config: {
256 labelIds?: string[]
257 labelFilterBehavior?: 'INCLUDE' | 'EXCLUDE'
258 searchQuery?: string
259}): string {
260 let labelQuery = ''
261 if (config.labelIds && config.labelIds.length > 0) {
262 const labelParts = config.labelIds.map((label) => `label:${label}`).join(' OR ')
263 labelQuery =
264 config.labelFilterBehavior === 'INCLUDE'
265 ? config.labelIds.length > 1
266 ? `(${labelParts})`
267 : labelParts
268 : config.labelIds.length > 1
269 ? `-(${labelParts})`
270 : `-${labelParts}`
271 }
272
273 let searchQueryPart = ''
274 if (config.searchQuery?.trim()) {
275 searchQueryPart = config.searchQuery.trim()
276 if (searchQueryPart.includes(' OR ') || searchQueryPart.includes(' AND ')) {
277 searchQueryPart = `(${searchQueryPart})`
278 }
279 }
280
281 let baseQuery = ''
282 if (labelQuery && searchQueryPart) {
283 baseQuery = `${labelQuery} ${searchQueryPart}`
284 } else if (searchQueryPart) {
285 baseQuery = searchQueryPart
286 } else if (labelQuery) {
287 baseQuery = labelQuery
288 } else {
289 baseQuery = 'in:inbox'
290 }
291
292 return baseQuery
293}
294
295async function searchEmails(
296 accessToken: string,

Callers 1

searchEmailsFunction · 0.85

Calls 1

joinMethod · 0.80

Tested by

no test coverage detected