rsnext/examples/blog-with-comment/lib/redis.ts
Max Proske 5dd4999b64
Convert many examples to TypeScript (#41825)
Strategized with @balazsorban44 to open one larger PR, with changes to individual examples as separate commits. 

For each example, I researched how multiple realworld codebases use the featured technology with TypeScript, to thoughtfully convert them by hand - nothing automated whatsoever.

## Documentation / Examples

- [X] Make sure the linting passes by running `pnpm lint`
- [X] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2022-10-26 20:28:55 +00:00

31 lines
716 B
TypeScript

import IORedis, { Redis } from 'ioredis'
function fixUrl(url: string) {
if (!url) {
return ''
}
if (url.startsWith('redis://') && !url.startsWith('redis://:')) {
return url.replace('redis://', 'redis://:')
}
if (url.startsWith('rediss://') && !url.startsWith('rediss://:')) {
return url.replace('rediss://', 'rediss://:')
}
return url
}
class ClientRedis {
static instance: Redis
constructor() {
throw new Error('Use Singleton.getInstance()')
}
static getInstance(): Redis | null {
if (!ClientRedis.instance) {
ClientRedis.instance = new IORedis(fixUrl(process.env.REDIS_URL!))
}
return ClientRedis.instance
}
}
export default ClientRedis.getInstance()