mirror of
https://github.com/immich-app/immich
synced 2026-08-22 13:13:05 +00:00
fix: propagate changes from the CLI to servers
This commit is contained in:
parent
d219cb951d
commit
aee2227f45
2 changed files with 23 additions and 6 deletions
|
|
@ -12,7 +12,7 @@ export class EnableMaintenanceModeCommand extends CommandRunner {
|
|||
|
||||
async run(): Promise<void> {
|
||||
await this.service.enableMaintenanceMode();
|
||||
console.log("Maintenance mode has been enabled.\nThis change won't automatically propagate.");
|
||||
console.log('Maintenance mode has been enabled.');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -27,6 +27,6 @@ export class DisableMaintenanceModeCommand extends CommandRunner {
|
|||
|
||||
async run(): Promise<void> {
|
||||
await this.service.disableMaintenanceMode();
|
||||
console.log("Maintenance mode has been disabled.\nThis change won't automatically propagate.");
|
||||
console.log('Maintenance mode has been disabled.');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,25 @@
|
|||
import { Injectable } from '@nestjs/common';
|
||||
import { createAdapter } from '@socket.io/redis-adapter';
|
||||
import Redis from 'ioredis';
|
||||
import { isAbsolute } from 'node:path';
|
||||
import { Server } from 'socket.io';
|
||||
import { SALT_ROUNDS } from 'src/constants';
|
||||
import { UserAdminResponseDto, mapUserAdmin } from 'src/dtos/user.dto';
|
||||
import { SystemMetadataKey } from 'src/enum';
|
||||
import { type ArgsOf } from 'src/repositories/event.repository';
|
||||
import { type ServerEvents } from 'src/repositories/websocket.repository';
|
||||
import { BaseService } from 'src/services/base.service';
|
||||
|
||||
@Injectable()
|
||||
export class CliService extends BaseService {
|
||||
private oneShotServerSend<T extends ServerEvents>(event: T, ...args: ArgsOf<T>): void {
|
||||
const server = new Server();
|
||||
const pubClient = new Redis(this.configRepository.getEnv().redis);
|
||||
const subClient = pubClient.duplicate();
|
||||
server.adapter(createAdapter(pubClient, subClient));
|
||||
server.serverSideEmit(event, ...args);
|
||||
}
|
||||
|
||||
async listUsers(): Promise<UserAdminResponseDto[]> {
|
||||
const users = await this.userRepository.getList({ withDeleted: true });
|
||||
return users.map((user) => mapUserAdmin(user));
|
||||
|
|
@ -39,12 +52,16 @@ export class CliService extends BaseService {
|
|||
await this.updateConfig(config);
|
||||
}
|
||||
|
||||
disableMaintenanceMode(): Promise<void> {
|
||||
return this.systemMetadataRepository.set(SystemMetadataKey.MaintenanceMode, { isMaintenanceMode: false });
|
||||
async disableMaintenanceMode(): Promise<void> {
|
||||
const state = { isMaintenanceMode: false };
|
||||
await this.systemMetadataRepository.set(SystemMetadataKey.MaintenanceMode, state);
|
||||
this.oneShotServerSend('AppRestart', state);
|
||||
}
|
||||
|
||||
enableMaintenanceMode(): Promise<void> {
|
||||
return this.systemMetadataRepository.set(SystemMetadataKey.MaintenanceMode, { isMaintenanceMode: true });
|
||||
async enableMaintenanceMode(): Promise<void> {
|
||||
const state = { isMaintenanceMode: true };
|
||||
await this.systemMetadataRepository.set(SystemMetadataKey.MaintenanceMode, state);
|
||||
this.oneShotServerSend('AppRestart', state);
|
||||
}
|
||||
|
||||
async grantAdminAccess(email: string): Promise<void> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue