prereq: make it possible to access storage without context init

This commit is contained in:
KernelDeimos 2024-06-28 17:39:55 -04:00 committed by Eric Dubé
parent 332371fccb
commit 9ad04cd33f
5 changed files with 43 additions and 2 deletions

View File

@ -292,6 +292,9 @@ const install = async ({ services, app, useapi }) => {
const { PermissionAPIService } = require('./services/PermissionAPIService'); const { PermissionAPIService } = require('./services/PermissionAPIService');
services.registerService('__permission-api', PermissionAPIService); services.registerService('__permission-api', PermissionAPIService);
const { MountpointService } = require('./services/MountpointService');
services.registerService('mountpoint', MountpointService);
} }
const install_legacy = async ({ services }) => { const install_legacy = async ({ services }) => {

View File

@ -49,7 +49,8 @@ class LLWriteBase extends LLFilesystemOperation {
const errors = svc.get('error-service').create(log); const errors = svc.get('error-service').create(log);
const svc_event = svc.get('event'); const svc_event = svc.get('event');
const storage = Context.get('storage'); const svc_mountpoint = svc.get('mountpoint');
const storage = svc_mountpoint.get_storage();
bucket ??= config.s3_bucket; bucket ??= config.s3_bucket;
bucket_region ??= config.s3_region; bucket_region ??= config.s3_region;

View File

@ -1057,7 +1057,9 @@ async function deleteUser(user_id){
for(let i=0; i<files.length; i++){ for(let i=0; i<files.length; i++){
// init S3 SDK // init S3 SDK
const svc_fs = Context.get('services').get('filesystem'); const svc_fs = Context.get('services').get('filesystem');
const storage = Context.get('storage'); const svc_mountpoint =
Context.get('services').get('mountpoint');
const storage = svc_mountpoint.get_storage();
const op_delete = storage.create_delete(); const op_delete = storage.create_delete();
await op_delete.run({ await op_delete.run({
node: await svc_fs.node(new NodeUIDSelector(files[i].uuid)) node: await svc_fs.node(new NodeUIDSelector(files[i].uuid))

View File

@ -31,6 +31,9 @@ class LocalDiskStorageService extends BaseService {
const svc_contextInit = this.services.get('context-init'); const svc_contextInit = this.services.get('context-init');
const storage = new LocalDiskStorageStrategy({ services: this.services }); const storage = new LocalDiskStorageStrategy({ services: this.services });
svc_contextInit.register_value('storage', storage); svc_contextInit.register_value('storage', storage);
const svc_mountpoint = this.services.get('mountpoint');
svc_mountpoint.set_storage(storage);
} }
async _init () { async _init () {

View File

@ -0,0 +1,32 @@
// const Mountpoint = o => ({ ...o });
const BaseService = require("./BaseService");
/**
* This will eventually be a service which manages the storage
* backends for mountpoints.
*
* For the moment, this is a way to access the storage backend
* in situations where ContextInitService isn't able to
* initialize a context.
*/
class MountpointService extends BaseService {
async _init () {
// this.mountpoints_ = {};
// Temporary solution - we'll develop this incrementally
this.storage_ = null;
}
// Temporary solution - we'll develop this incrementally
set_storage (storage) {
this.storage_ = storage;
}
get_storage () {
return this.storage_;
}
}
module.exports = {
MountpointService,
};