({ userId, access, now })
| 129 | }, |
| 130 | |
| 131 | async set({ userId, access, now }) { |
| 132 | if (!shouldCacheCountryAccess(access)) return |
| 133 | |
| 134 | const clientIpHash = access.clientIpHash |
| 135 | if (!clientIpHash) return |
| 136 | |
| 137 | const expiresAt = expiresAtForCountryAccess(access, now) |
| 138 | const privacyDecision = getFreeModePrivacyDecision(access) |
| 139 | const privacyProviderDecision = getFreeModePrivacyProviderDecision(access) |
| 140 | await db |
| 141 | .insert(schema.freeModeCountryAccessCache) |
| 142 | .values({ |
| 143 | user_id: userId, |
| 144 | client_ip_hash: clientIpHash, |
| 145 | allowed: access.allowed, |
| 146 | country_code: access.countryCode, |
| 147 | cf_country: access.cfCountry, |
| 148 | geoip_country: access.geoipCountry, |
| 149 | country_block_reason: access.blockReason, |
| 150 | ip_privacy_signals: access.ipPrivacy?.signals ?? null, |
| 151 | spur_ip_privacy_signals: access.spurIpPrivacy?.signals ?? null, |
| 152 | spur_status: access.spurStatus, |
| 153 | privacy_decision: privacyDecision, |
| 154 | privacy_provider_decision: privacyProviderDecision, |
| 155 | checked_at: now, |
| 156 | expires_at: expiresAt, |
| 157 | created_at: now, |
| 158 | updated_at: now, |
| 159 | }) |
| 160 | .onConflictDoUpdate({ |
| 161 | target: [ |
| 162 | schema.freeModeCountryAccessCache.user_id, |
| 163 | schema.freeModeCountryAccessCache.client_ip_hash, |
| 164 | ], |
| 165 | set: { |
| 166 | allowed: access.allowed, |
| 167 | country_code: access.countryCode, |
| 168 | cf_country: access.cfCountry, |
| 169 | geoip_country: access.geoipCountry, |
| 170 | country_block_reason: access.blockReason, |
| 171 | ip_privacy_signals: access.ipPrivacy?.signals ?? null, |
| 172 | spur_ip_privacy_signals: access.spurIpPrivacy?.signals ?? null, |
| 173 | spur_status: access.spurStatus, |
| 174 | privacy_decision: privacyDecision, |
| 175 | privacy_provider_decision: privacyProviderDecision, |
| 176 | checked_at: now, |
| 177 | expires_at: expiresAt, |
| 178 | updated_at: now, |
| 179 | }, |
| 180 | }) |
| 181 | }, |
| 182 | } |
| 183 | |
| 184 | export async function getCachedFreeModeCountryAccess(params: { |
no test coverage detected