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

Function updateEmailPreferences

apps/sim/lib/messaging/email/unsubscribe.ts:92–147  ·  view source on GitHub ↗
(
  email: string,
  preferences: EmailPreferences
)

Source from the content-addressed store, hash-verified

90 * Update user's email preferences
91 */
92export async function updateEmailPreferences(
93 email: string,
94 preferences: EmailPreferences
95): Promise<boolean> {
96 try {
97 const userResult = await db
98 .select({ id: user.id })
99 .from(user)
100 .where(eq(user.email, email))
101 .limit(1)
102
103 if (!userResult[0]) {
104 logger.warn(`User not found for email: ${email}`)
105 return false
106 }
107
108 const userId = userResult[0].id
109
110 const existingSettings = await db
111 .select({ emailPreferences: settings.emailPreferences })
112 .from(settings)
113 .where(eq(settings.userId, userId))
114 .limit(1)
115
116 let currentEmailPreferences = {}
117 if (existingSettings[0]) {
118 currentEmailPreferences = (existingSettings[0].emailPreferences as EmailPreferences) || {}
119 }
120
121 const updatedEmailPreferences = {
122 ...currentEmailPreferences,
123 ...preferences,
124 }
125
126 await db
127 .insert(settings)
128 .values({
129 id: userId,
130 userId,
131 emailPreferences: updatedEmailPreferences,
132 })
133 .onConflictDoUpdate({
134 target: settings.userId,
135 set: {
136 emailPreferences: updatedEmailPreferences,
137 updatedAt: new Date(),
138 },
139 })
140
141 logger.info(`Updated email preferences for user: ${email}`)
142 return true
143 } catch (error) {
144 logger.error('Error updating email preferences:', error)
145 return false
146 }
147}
148
149/**

Callers 4

route.tsFile · 0.90
unsubscribeFromAllFunction · 0.85
resubscribeFunction · 0.85

Calls 4

infoMethod · 0.80
errorMethod · 0.80
warnMethod · 0.65
eqFunction · 0.50

Tested by

no test coverage detected