feat(admin): add a snowflake reservation system (#34)

This commit is contained in:
hampus-fluxer
2026-01-06 00:17:27 +01:00
committed by GitHub
parent 8658a25f68
commit 9c665413ac
19 changed files with 1100 additions and 244 deletions

View File

@@ -77,6 +77,8 @@ import {UnfurlerService as ProdUnfurlerService} from '~/infrastructure/UnfurlerS
import {UserCacheService} from '~/infrastructure/UserCacheService';
import {VirusScanService as ProdVirusScanService} from '~/infrastructure/VirusScanService';
import {VoiceRoomStore} from '~/infrastructure/VoiceRoomStore';
import {SnowflakeReservationRepository} from '~/instance/SnowflakeReservationRepository';
import {SnowflakeReservationService} from '~/instance/SnowflakeReservationService';
import {InviteRepository as ProdInviteRepository} from '~/invite/InviteRepository';
import {InviteService} from '~/invite/InviteService';
import {getReportSearchService} from '~/Meilisearch';
@@ -145,6 +147,13 @@ const assetDeletionQueue: IAssetDeletionQueue = new AssetDeletionQueue(redis);
const featureFlagRepository = new FeatureFlagRepository();
const featureFlagService = new FeatureFlagService(featureFlagRepository, cacheService);
let featureFlagServiceInitialized = false;
const snowflakeReservationRepository = new SnowflakeReservationRepository();
const snowflakeReservationSubscriber = new Redis(Config.redis.url);
const snowflakeReservationService = new SnowflakeReservationService(
snowflakeReservationRepository,
snowflakeReservationSubscriber,
);
let snowflakeReservationServiceInitialized = false;
let voiceTopology: VoiceTopology | null = null;
let voiceAvailabilityService: VoiceAvailabilityService | null = null;
@@ -198,6 +207,11 @@ export const ServiceMiddleware = createMiddleware<HonoEnv>(async (ctx, next) =>
featureFlagServiceInitialized = true;
}
if (!snowflakeReservationServiceInitialized) {
await snowflakeReservationService.initialize();
snowflakeReservationServiceInitialized = true;
}
const userRepository = new UserRepository();
const guildRepository = new GuildRepository();
const channelRepository = new ChannelRepository();
@@ -377,6 +391,7 @@ export const ServiceMiddleware = createMiddleware<HonoEnv>(async (ctx, next) =>
emailService,
smsService,
snowflakeService,
snowflakeReservationService,
discriminatorService,
redisAccountDeletionQueue,
redisActivityTracker,