MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / persistAdImpressions

Function persistAdImpressions

web/src/app/api/v1/ads/_post.ts:96–140  ·  view source on GitHub ↗
(params: {
  ads: NormalizedAd[]
  providerId: AdProviderId
  userId: string
  logger: Logger
})

Source from the content-addressed store, hash-verified

94}
95
96async function persistAdImpressions(params: {
97 ads: NormalizedAd[]
98 providerId: AdProviderId
99 userId: string
100 logger: Logger
101}) {
102 const { ads, providerId, userId, logger } = params
103
104 try {
105 await Promise.all(
106 ads.map((ad) =>
107 db
108 .insert(schema.adImpression)
109 .values({
110 user_id: userId,
111 provider: providerId,
112 ad_text: ad.adText,
113 title: ad.title,
114 cta: ad.cta,
115 url: ad.url,
116 favicon: ad.favicon,
117 click_url: ad.clickUrl,
118 imp_url: ad.impUrl,
119 extra_pixels: ad.extraPixels ?? null,
120 payout: ad.payout != null ? String(ad.payout) : null,
121 credits_granted: 0,
122 })
123 .onConflictDoNothing(),
124 ),
125 )
126 } catch (dbError) {
127 logger.warn(
128 {
129 userId,
130 provider: providerId,
131 adCount: ads.length,
132 error:
133 dbError instanceof Error
134 ? { name: dbError.name, message: dbError.message }
135 : dbError,
136 },
137 '[ads] Failed to persist ad_impression rows, serving anyway',
138 )
139 }
140}
141
142function toClientAd(ad: NormalizedAd) {
143 const { payout: _p, extraPixels: _e, ...rest } = ad

Callers 1

postAdsFunction · 0.85

Calls 1

insertMethod · 0.80

Tested by

no test coverage detected