mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 20:38:52 +00:00
38 lines
1002 B
TypeScript
38 lines
1002 B
TypeScript
import { createRequire } from 'node:module';
|
|
|
|
import type { Storage } from '@affine/storage';
|
|
import { type DynamicModule, type FactoryProvider } from '@nestjs/common';
|
|
|
|
import { Config } from '../config';
|
|
|
|
export const StorageProvide = Symbol('Storage');
|
|
|
|
const require = createRequire(import.meta.url);
|
|
|
|
export class StorageModule {
|
|
static forRoot(): DynamicModule {
|
|
const storageProvider: FactoryProvider = {
|
|
provide: StorageProvide,
|
|
useFactory: async (config: Config) => {
|
|
let StorageFactory: typeof Storage;
|
|
try {
|
|
// dev mode
|
|
StorageFactory = (await import('@affine/storage')).Storage;
|
|
} catch {
|
|
// In docker
|
|
StorageFactory = require('../../storage.node').Storage;
|
|
}
|
|
return StorageFactory.connect(config.db.url);
|
|
},
|
|
inject: [Config],
|
|
};
|
|
|
|
return {
|
|
global: true,
|
|
module: StorageModule,
|
|
providers: [storageProvider],
|
|
exports: [storageProvider],
|
|
};
|
|
}
|
|
}
|