mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-09-07 01:09:54 +08:00
chore(server): watch storages config updates (#11367)
This commit is contained in:
@@ -14,7 +14,7 @@ import {
|
|||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AvatarStorage {
|
export class AvatarStorage {
|
||||||
private provider: StorageProvider;
|
private provider!: StorageProvider;
|
||||||
|
|
||||||
get config() {
|
get config() {
|
||||||
return this.AFFiNEConfig.storages.avatar;
|
return this.AFFiNEConfig.storages.avatar;
|
||||||
@@ -24,10 +24,20 @@ export class AvatarStorage {
|
|||||||
private readonly AFFiNEConfig: Config,
|
private readonly AFFiNEConfig: Config,
|
||||||
private readonly url: URLHelper,
|
private readonly url: URLHelper,
|
||||||
private readonly storageFactory: StorageProviderFactory
|
private readonly storageFactory: StorageProviderFactory
|
||||||
) {
|
) {}
|
||||||
|
|
||||||
|
@OnEvent('config.init')
|
||||||
|
async onConfigInit() {
|
||||||
this.provider = this.storageFactory.create(this.config.storage);
|
this.provider = this.storageFactory.create(this.config.storage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnEvent('config.changed')
|
||||||
|
async onConfigChanged(event: Events['config.changed']) {
|
||||||
|
if (event.updates.storages?.avatar?.storage) {
|
||||||
|
this.provider = this.storageFactory.create(this.config.storage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async put(key: string, blob: BlobInputType, metadata?: PutObjectMetadata) {
|
async put(key: string, blob: BlobInputType, metadata?: PutObjectMetadata) {
|
||||||
await this.provider.put(key, blob, metadata);
|
await this.provider.put(key, blob, metadata);
|
||||||
let link = this.config.publicPath + key;
|
let link = this.config.publicPath + key;
|
||||||
@@ -53,11 +63,4 @@ export class AvatarStorage {
|
|||||||
await this.delete(user.avatarUrl);
|
await this.delete(user.avatarUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnEvent('config.changed')
|
|
||||||
async onConfigChanged(event: Events['config.changed']) {
|
|
||||||
if (event.updates.storages?.avatar?.storage) {
|
|
||||||
this.provider = this.storageFactory.create(this.config.storage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ declare global {
|
|||||||
@Injectable()
|
@Injectable()
|
||||||
export class WorkspaceBlobStorage {
|
export class WorkspaceBlobStorage {
|
||||||
private readonly logger = new Logger(WorkspaceBlobStorage.name);
|
private readonly logger = new Logger(WorkspaceBlobStorage.name);
|
||||||
private provider: StorageProvider;
|
private provider!: StorageProvider;
|
||||||
|
|
||||||
get config() {
|
get config() {
|
||||||
return this.AFFiNEConfig.storages.blob;
|
return this.AFFiNEConfig.storages.blob;
|
||||||
@@ -42,10 +42,20 @@ export class WorkspaceBlobStorage {
|
|||||||
private readonly storageFactory: StorageProviderFactory,
|
private readonly storageFactory: StorageProviderFactory,
|
||||||
private readonly db: PrismaClient,
|
private readonly db: PrismaClient,
|
||||||
private readonly url: URLHelper
|
private readonly url: URLHelper
|
||||||
) {
|
) {}
|
||||||
|
|
||||||
|
@OnEvent('config.init')
|
||||||
|
async onConfigInit() {
|
||||||
this.provider = this.storageFactory.create(this.config.storage);
|
this.provider = this.storageFactory.create(this.config.storage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnEvent('config.changed')
|
||||||
|
async onConfigChanged(event: Events['config.changed']) {
|
||||||
|
if (event.updates.storages?.blob?.storage) {
|
||||||
|
this.provider = this.storageFactory.create(this.config.storage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async put(workspaceId: string, key: string, blob: Buffer) {
|
async put(workspaceId: string, key: string, blob: Buffer) {
|
||||||
const meta: PutObjectMetadata = autoMetadata(blob);
|
const meta: PutObjectMetadata = autoMetadata(blob);
|
||||||
|
|
||||||
@@ -229,11 +239,4 @@ export class WorkspaceBlobStorage {
|
|||||||
}: Events['workspace.blob.delete']) {
|
}: Events['workspace.blob.delete']) {
|
||||||
await this.delete(workspaceId, key, true);
|
await this.delete(workspaceId, key, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnEvent('config.changed')
|
|
||||||
async onConfigChanged(event: Events['config.changed']) {
|
|
||||||
if (event.updates.storages?.blob?.storage) {
|
|
||||||
this.provider = this.storageFactory.create(this.config.storage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import {
|
|||||||
CallMetric,
|
CallMetric,
|
||||||
Config,
|
Config,
|
||||||
type FileUpload,
|
type FileUpload,
|
||||||
|
OnEvent,
|
||||||
readBuffer,
|
readBuffer,
|
||||||
type StorageProvider,
|
type StorageProvider,
|
||||||
StorageProviderFactory,
|
StorageProviderFactory,
|
||||||
@@ -17,17 +18,27 @@ import { QuotaService } from '../../core/quota';
|
|||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class CopilotStorage {
|
export class CopilotStorage {
|
||||||
public readonly provider: StorageProvider;
|
public provider!: StorageProvider;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly config: Config,
|
private readonly config: Config,
|
||||||
private readonly url: URLHelper,
|
private readonly url: URLHelper,
|
||||||
private readonly storageFactory: StorageProviderFactory,
|
private readonly storageFactory: StorageProviderFactory,
|
||||||
private readonly quota: QuotaService
|
private readonly quota: QuotaService
|
||||||
) {
|
) {}
|
||||||
|
|
||||||
|
@OnEvent('config.init')
|
||||||
|
async onConfigInit() {
|
||||||
this.provider = this.storageFactory.create(this.config.copilot.storage);
|
this.provider = this.storageFactory.create(this.config.copilot.storage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnEvent('config.changed')
|
||||||
|
async onConfigChanged(event: Events['config.changed']) {
|
||||||
|
if (event.updates?.copilot?.storage) {
|
||||||
|
this.provider = this.storageFactory.create(this.config.copilot.storage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@CallMetric('ai', 'blob_put')
|
@CallMetric('ai', 'blob_put')
|
||||||
async put(
|
async put(
|
||||||
userId: string,
|
userId: string,
|
||||||
|
|||||||
Reference in New Issue
Block a user