/*
 * SPDX-FileCopyrightText: syuilo and misskey-project
 * SPDX-License-Identifier: AGPL-3.0-only
 */

import Redis from 'ioredis';
import { loadConfig } from '../built/config.js';
import { createPostgresDataSource } from '../built/postgres.js';

const config = loadConfig();

// createPostgresDataSource handels primaries and replicas automatically.
// usually, it only opens connections first use, so we force it using
// .initialize()
createPostgresDataSource(config)
	.initialize()
	.then(c => { c.destroy() })
	.catch(e => { throw e });


// Connect to all redis servers
function connectToRedis(redisOptions) {
	const redis = new Redis(redisOptions);
	redis.on('connect', () => redis.disconnect());
	redis.on('error', (e) => {
		throw e;
	});
}

// If not all of these are defined, the default one gets reused.
// so we use a Set to only try connecting once to each **uniq** redis.
(new Set([
	config.redis,
	config.redisForPubsub,
	config.redisForJobQueue,
	config.redisForTimelines,
])).forEach(connectToRedis);