refactor(server): use new storage providers (#5433)

This commit is contained in:
liuyi
2024-01-03 10:56:54 +00:00
parent a709624ebf
commit 0d34805375
42 changed files with 614 additions and 679 deletions
-26
View File
@@ -172,32 +172,6 @@ export interface AFFiNEConfig {
*/
storage: AFFiNEStorageConfig;
/**
* object storage Config
*
* all artifacts and logs will be stored on instance disk,
* and can not shared between instances if not configured
* @deprecated use `storage` instead
*/
objectStorage: {
/**
* whether use remote object storage
*/
r2: {
enabled: boolean;
accountId: string;
bucket: string;
accessKeyId: string;
secretAccessKey: string;
};
/**
* Only used when `enable` is `false`
*/
fs: {
path: string;
};
};
/**
* Rate limiter config
*/
@@ -1,8 +1,6 @@
/// <reference types="../global.d.ts" />
import { createPrivateKey, createPublicKey } from 'node:crypto';
import { homedir } from 'node:os';
import { join } from 'node:path';
import parse from 'parse-duration';
@@ -177,18 +175,6 @@ export const getDefaultAFFiNEConfig: () => AFFiNEConfig = () => {
},
},
storage: getDefaultAFFiNEStorageConfig(),
objectStorage: {
r2: {
enabled: false,
bucket: '',
accountId: '',
accessKeyId: '',
secretAccessKey: '',
},
fs: {
path: join(homedir(), '.affine-storage'),
},
},
rateLimiter: {
ttl: 60,
limit: 60,
@@ -12,10 +12,10 @@ export type R2StorageConfig = S3ClientConfigType & {
};
export type S3StorageConfig = S3ClientConfigType;
export type StorageTargetConfig = {
export type StorageTargetConfig<Ext = unknown> = {
provider: StorageProviderType;
bucket: string;
};
} & Ext;
export interface AFFiNEStorageConfig {
/**
@@ -29,7 +29,7 @@ export interface AFFiNEStorageConfig {
r2?: R2StorageConfig;
};
storages: {
avatar: StorageTargetConfig;
avatar: StorageTargetConfig<{ publicLinkFactory: (key: string) => string }>;
blob: StorageTargetConfig;
};
}
@@ -48,6 +48,7 @@ export function getDefaultAFFiNEStorageConfig(): AFFiNEStorageConfig {
avatar: {
provider: 'fs',
bucket: 'avatars',
publicLinkFactory: key => `/api/avatars/${key}`,
},
blob: {
provider: 'fs',